1. 이진 분류
확률적 경사 하강법
- 매우 큰 데이터셋을 효율적으로 처리하는 장점을 지님 (한 번에 하나씩 훈련 샘플을 독립적으로 처리하기 때문)
- 훈련하는데 무작위성을 사용
from sklearn.linear_model import SGDClassifier
sgd_clf = SGDClassifier(random_state=42)
sgd_clf.fit(X_train, y_train)
2. 성능 측정
1) 교차 검증을 사용한 정확도 측정
k-겹 교차검증 : 훈련 세트를 k개의 폴드로 나누고 각 폴드에 대해 예측을 만들고 평가하기 위해 나머지 폴드로 훈련시킨 모델을 사용
from sklearn.model_selection import cross_val_score
cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring="accuracy") # 3개 폴드
불균형한 데이터셋을 다룰 때는 정확도를 분류기의 성능 지표로 선호하지 않는다.
2) 오차 행렬
- 분류기의 성능을 평가하는 더 좋은 방법
- 클래스 A의 샘플이 클래스 B로 분류된 횟수를 셈
from sklearn.model_selection import cross_val_predict
from sklearn.metrics import coufnsion_matrix
# cross_val_predict(): 평가 점수를 반환하지 않고 테스트 폴드에서 얻은 예측을 반환
y_train_pred = cross_val_predict(sgd_clf, X_train, y_train, cv=3)
confusion_matrix(y_train, y_train_pred)
3) 정밀도와 재현율
정확도 : 양성 샘플 하나만 예측하면 간단히 완벽한 정밀도를 얻을 수 있지만 다른 모든 양성 샘플을 무시하기 때문에 그리 유용하지 않음 -> 재현율과 같이 사용하는 것이 일반적
재현율 : 분류기가 정확하게 감지한 양성 샘플의 비율로 민감도 또는 진짜 양성 비율이라고도 함
from sklearn.metrics import precision_score, recall_score
precision_score(y_train, y_train_pred)
recall_score(y_train, y_train_pred)
F1 점수 : 정밀도와 재현율의 조화 평균
from sklearn.metrics import f1_score
f1_score(y_train, y_train_pred)
4) 정밀도/재현율 트레이드오프
- 정밀도를 올리면 재현율이 줄어듦
SGDClassifier 분류기의 경우 결정 함수를 사용하여 각 샘플의 점수를 계산
- 결정 임계값의 변화에 따라 재현율과 정밀도의 값이 변경됨
- predict 메서드 대신 decision_function() 메서드를 호출하면 각 샘플의 점수 확인 가능
- 적절한 임곗값은 cross_val_predict()을 이용해 훈련 세트에 있는 모든 샘플의 점수를 구한 후 precision_recall_curve()를 이용해 가능한 모든 임곗값에 대해 정밀도와 재현율 계산 가능
5) ROC 곡선
- 정밀도에 대한 재현율 곡선이 아닌 거짓 양성 비율(FPR)에 대한 진짜 양성 비율(TPR)의 곡선
- FPR : 양성으로 잘못 분류된 음성 샘플의 비율
- 민감도(재현율)에 대한 1-특이도 그래프
- roc_curve() 함수를 이용해 여러 임계값에서 TPR과 FPR 계산
- 곡선 아래의 면적(AUC)을 측정하면 분류기들 비교 가능 -> 사이킷런 roc_auc_score이용
3. 다중 분류
다중 분류기 : SGD 분류기, 랜덤 포레스트 분류기, 나이브 베이즈 분류기 등
이중 분류기 : 로지스틱 회귀, SVM -> 여러 개 사용해 다중 클래스 분류 가능
- OvR : 특정 숫자를 구분하는 경우 숫자별 이진 분류기 10개를 훈련시키고 분류할 때 각 분류기의 결정 점수 중에서 가장 높은 클래스 선택 -> 대부분의 이중 분류 알고리즘에서 선호
- OvO : 0과 1 구별, 0과 2 구별 등과 같이 각 숫자의 조합마다 이진 분류기를 훈련 -> 일부 알고리즘의 경우 훈련 세트의 크기에 민감해 작은 훈련 세트에서 많은 분류기를 훈련시키는 것이 빠르므로 사용
4. 다중 레이블 분류
- 같은 사진에 여러 사람이 등장하는 경우처럼 여러 개의 이진 꼬리표를 출력하는 분류 시스템
- KneighborsClassifier는 다중 레이블 분류를 지원
'인공지능(AI) > 머신러닝' 카테고리의 다른 글
[핸즈온 머신러닝] 7장 앙상블 학습과 랜덤 포레스트 (0) | 2022.01.22 |
---|---|
[핸즈온 머신러닝] 6장 결정 트리 (0) | 2022.01.18 |
[핸즈온 머신러닝] 5장 서포트 벡터 머신 (1) | 2022.01.18 |
[핸즈온 머신러닝] 4장 모델 훈련 (0) | 2022.01.17 |
[핸즈온 머신러닝] 2장 머신러닝 프로젝트 처음부터 끝까지 (0) | 2022.01.08 |
댓글