📗강의노트/핸즈온 머신러닝

    [핸즈온 머신러닝] 제 7장 연습문제 풀이

    Exercise Part. 6Ensemble_learning and random forests1. 정확히 같은 훈련 데이터로 다섯 개의 다른 모델을 훈련시켜서 모두 95%의 정확도를 얻었다면 이 모델들을 연결하여 더 좋은 결과를 얻을 수 있을까요? 가능하다면 어떻게 해야 할 까요? 그렇지 않다면 왜일까요?앙상블을 만들어 더 나은 결과를 기대할 수 있다. 모델이 서로 다르다면 더 좋다. 그리고 다른 훈련 샘플에서 훈련되었다면 더더욱 좋다. ( 배깅 / 페이스팅의 핵심 ). 그렇지 않아도 모델이 서로 많이 다르면 여전히 좋은 결과를 냄!2. 직접 투표와 간접 투표 분류기 사이의 차이점은 무엇일까요?직접 투표 분류기는 횟수를 중요시하여, 가장 많은 투표를 얻은 클래스를 선택. (다수결)간접 투표 분류기는 각 ..

    [핸즈온 머신러닝] 제 7장 정리

    Part 7. Ensemble_learning and random forestsKeyword앙상블 학습 :집단지성과 같은 개념랜덤 포레스트 ( RF ) :모든 개별 트리의 예측을 구하고, 다음 가장 많은 선택을 받은 클래스를 예측으로 삼는다.특성의 상대적 중요도를 측정하기 쉽다.직접 투표 :다수결 투표로 정해지는 분류기간접 투표 :개별 분류기의 예측을 평균 내어 확률이 가장 높은 클래스를 예측할 수 있다.확률이 높은 투표에 비중을 더 두기 때문에 직접 투표 방식보다 성능이 높다.배깅 ( Bagging ) :훈련 세트의 서브셋을 무작위로 구성하여 분류기를 각기 다르게 학습시키는 것.병렬로 학습 가능서브셋에 다양성을 증가시키므로 페이스팅보다 편향이 조금 더 높다.페이스팅 ( Pasting ) :훈련 세트의 ..

    [핸즈온 머신러닝] 제 6장 연습문제 풀이

    Exercise Part. 6Decision Tree1. 백만 개의 샘플을 가진 훈련 세트에서 (규제 없이) 훈련시킨 결정 트리의 깊이는 대략 얼마일까요?m개의 리프 노드를 포함한 균형이 잘 잡힌 이진 트리의 깊이는 log2(m)을 반올림한 것과 같다. log2(m)=log(m)/log(2) 이진 결정 트리를 제한을 두지 않고 훈련시키면 훈련 샘플마다 하나의 리프 노드가 되므로 어느 정도 균형이 잘 잡힌 트리가 된다. 따라서 훈련 세트에 백만 개 샘플이 있다면 결정 트리의 깊이는log2(106)=20이 될 것이다.2. 한 노드의 지니 불순도가 보통 그 부모보다 작을까요, 아니면 클까요? 일반적으로 작거나 클까요, 아니면 항상 작거나 클까요?한 노드의 지니 불순도는 일반적으로 부모의 불순도 보다 낮다. 이..

    [핸즈온 머신러닝] 제 6장 정리

    Part 6. Decision Tree 정리Keyword결정 트리 ( Decision Tree ) :분류와 회귀, 다중출력 작업 모두 가능하다.데이터 전처리가 거의 필요하지 않다. 특히 특성의 스케일을 맞추거나 평균을 원점에 맞추는 작업이 필요하지 않다.계산 복잡도 :O(n×mlog(m))루트 노드 :깊이가 0인 맨 꼭대기 노드리프 노드 :자식을 가지지 않는 노드지니 불순도 ( gini impurity ) :한 노드의 모든 샘플이 같은 클래스에 속해 있다면 이 노드는 순수 (gini=0)하다고 함 즉, 샘플이 다른 클래스에 속해있을 확률! 다음과 같이 구할 수 있다,Gi=1−∑k=1npi,k2pi,k는 i번째 노드에 있는 훈련 샘플 중 클래스 k에 속한 샘플의 비율이다!화이트 박스와 블랙박스 :화이트 박..

    [핸즈온 머신러닝] 제 5장 코드 & 연습문제 풀이

    import numpy as np from sklearn import datasets from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.svm import LinearSVC iris= datasets.load_iris() X = iris['data'][:,(2,3)] y = (iris['target']==2).astype(np.float64) svm_clf = Pipeline([ ('scaler',StandardScaler()), ('classifier', LinearSVC(C=1,loss='hinge')) ]) svm_clf.fit(X,y) Out[23]:Pipeline(me..

    [핸즈온 머신러닝] 제 5장 정리

    Part. 5 Support Vector Machine 정리Keyword라지 마지 분류 ( Large Margin Classification ) :SVM 분류기를 클래스 사이에 가장 폭이 넓은 도로를 찾는 것. ( 결정 경계와 샘플간의 거리 커야함 )서포트 벡터 ( Support Vector ) :결정 경계 바깥쪽에 위치한 훈련 샘플하드 마진 분류 ( Hard Margin Classification ) :모든 샘플이 결정 경계 바깥쪽에 올바르게 분류되어 있는 것하지만 두 가지 문제점이 존재한다.(1) 데이터가 선형적으로 구분될 수 있어야 제대로 작동한다 (2) 이상치에 민감하다소프트 마진 분류 ( Soft Margin Classification ) :"결정 경계의 폭을 가능한 한 넓게 유지하는 것" 과 ..