나름개발블로그
Hands-On ML 3장 본문
MNIST
머신러닝계의 "Hello World"
이진 분류기 훈련(Binary classifier)
두가지중 하나로 분류 (Y or N)
- SGDClassifier
- 여기서 SGD란 (Stochastic Gradient Descent) 확률적 경사 하강법
성능측정
교차 검증을 사용한 정확도측정
cross_val_score (sklearn)
정확도(accuracy)는 분류기 성능 측정지표로 선호하지 않는다. 특흐 불균형한 데이터 셋을 다룰때
오차행렬(confusion matrix)
cross_val_predict (sklearn) : cross_val_score 와 다르게 평가 점수를 반환 하는게 아니라 예측을 반환 한다.
confusion_matrix (sklearn)
from sklearn.metrics import precision_score , recall_score
정밀도와 재현율을 F1 이라고 표현, 정밀도와 재현율의 조화 평균 !
$$F_1 = \cfrac{TP}{TP + \cfrac{FN + FP} {2}}$$
from sklearn.metrics import f1_score
상황에 따라서 재현율이 중요 할수도 있고 정밀도가 중요 할 수도 있다.
정밀도/재현율 트레이드 오프 (precision / recall Trade-off )
from sklearn.metrics import percison_reall_curve
precisions,recalls,thresholds = precision_recall_curve(y_train, y_scores)
ROC 곡선
수신기 조작 특성 (receiver operation characteristic) 이진 분류에 널리 사용된다 함
거짓 양성 비율 (false positive rate)에 대한 진짜 양성 비율(true positive rate)의 곡선
왼쪽 모서리위쪽으로 갈수록 좋은거임!
민감도(재현율)에 대한 1- 특이도 그래프!
from sklearn.metrics import roc_curve
fpr,tpr,thresholds =roc_curve(y_train,y_scores)
TPR 이 오를수록 FPR이 늘어난다!
곡선 아래의 면적 (area under the curve) (AUC)
완벽한 classifier는 ROC의 AUC 가 1이고 , 완전한 랜덤 classifier 는 0.5
from sklearn.metrics import roc_auc_score
다중 분류 (multiclasss classifier)
둘 이상의 클래스 분류!
이진 분류기를 여러개 사용해서 다중분류를 할수도 있다.
OvR(one-versus-the-rest) 또는 OvA (one-versus-all)
- 각 분류기의 점수중에서 가장 높은 것을 선택
OvO(one-versus-one)
- 각 숫자 조합마다 이진 분류기를 훈련시킨다.
에러 분석
오차행렬을 그림으로 보면 보기 편할때가 많다.
conf_mx = confusion_matrix(y_train,y_pred)
plt.matshow(conf_mx,cmap=plt.cm.gray)
plt.show
다중 레이블 분류 (multilabel classification)
여러개의 이진 꼬리표를 출력하는 분류 시스템이 다중 레이블 분류
다중 출력 분류
다중 레이블 분류에서 한레이블이 다중 클래스가 될수 있도록 일반화 한것
'A > ML' 카테고리의 다른 글
Hands-On ML 6장 (0) | 2020.09.14 |
---|---|
Hands-On ML 5장 (0) | 2020.09.13 |
Hands-On ML 4장 (0) | 2020.09.12 |
Hands-On ML 2장 (0) | 2020.09.10 |
Hands-on ML 1장 (0) | 2020.09.09 |