1 minute read

분류 평가지표

분류 평가 지표 종류

  1. 오차행렬(Confusion Matrix) : confusion_matrix(y_test, y_pred)
  2. 정확도(Accuracy) : accuracy_score(y_test, y_pred)
  3. 재현율(Recall) : recall_score(y_test, y_pred)
  4. 정밀도(Precision) : precision_score(y_test, y_pred)
  5. F1 score : f1_score(y_test, y_pred)
  6. ROC AUC : roc_auc_score(y_test, y_pred_prova[:,1])

정확도(Accuracy) 한계

정확도의 경우, 불균형한 dataset 에서 머신러닝 모델의 성능을 판단할 경우 적합한 평가 지표가 아니다.
예를 들어, 0이 90개 1이 10개 들어 있는 dataset이 있을때, 무조건 0으로만 예측하는 모델이 있을 경우 정확도 지표가 90%가 나온다.

import pandas as pd
pd.DataFrame({ 0 : [90,10] , 1: [0,0]})
0 1
0 90 0
1 10 0

오차행렬(Confusion Matrix)

pd.DataFrame({'예측 N' : ['TN', 'FN'], '예측 P' : ['FP','TP']}, index = ['실제 N','실제 P'])
예측 N 예측 P
실제 N TN FP
실제 P FN TP
  • FP : 1종 오류 (실제 N을 P로 잘못 예측)
    ex) 일반메일(N)을 스팸메일(P)로 분류해서 메일 인지를 못함
  • FN : 2종 오류 (실제 P를 N으로 잘못 예측)
    ex) 암인 사람을 암이 아니라고 분류 (치명적)

정확도 : TN + TP / TN + TP + FN + TP
재현율(=민감도,=TPR) : TP / FN + TP (실제 P인 것들 중 맞게 예측한 것의 비율)
정밀도 : TP / FP + TP (예측을 P로 한 것들 중 실제 P인 것의 비율)
특이도 : TN / TN + FP
FPR = 1 - 특이도 = FP / TN + FP
Roc Curve : x축 : FPR , y축 : TPR

Leave a comment