Classifier Model Evaluation(분류모델평가)

JoQuri(조규리)·2024년 2월 12일
0

Machine Learning

목록 보기
5/7
  • 데이터 수집/가공/변환 -> 모델 학습/예측 -> 모델평가 -> ...<반복>

  • 회귀 모델 평가: 실제 값과의 에러치를 가지고 계산(분류와는 달리 간단)
    (예측치: 연속된 변수값)

  • 분류 모델 평가: 평가항목이 회귀보다 많음(accuracy정확도, 오차행렬...)
    cf. 클래스가 2개: 이진 분류 모델
    (예측값: 몇 개의 종류(클래스)에서 해당값 + 그 결과를 속할 비율(확률)을 반환)

분류 모델 평가

  • 예측의 결과 TP FN TN FP

    예) 1종오류: 가설이 아닌데 맞다고 오류 FP

정확도 accuracy

: T 맞춘것의 확률 (TP+TN) / 전체
accuracy score는 참값 대비 예측값의 비율을 의미
0.5를 기준으로 높으면 참, 낮으면 거짓을 의미X

정밀도 precision

: 양성이라고 예측한 것 중 실제 양성 TP/(TP+FP)
-> 정밀도를 높이려면 확실히 1일때 1이라고 말하기 1를 보수적
예> 스팸메일(중유메일 중에 스팸이라고 오해시 나쁜상황) -> 정밀도가 높아야 함

재현률 recall(TPR.True Position Ratio)

: 실제 양성인 데이터 중 양성이라고 예측 TP/(TP+FN)
-> 전부1이라고 하면 높아짐
예> 암환자 예측(실제로 암이 아닌데 암을 예측하는것보다 암환자를 아니라고 예측하는게 안좋은 상황) -> 재현률이 높아야 됨

fall-out(FPR.False Position Ratio)

: 실제 양성X, 양성이라고 잘못예측 FP/(FP+TN)

threshold

  • 분류모델 predict_prob: 그 결과를 속할 비율(확률) 반환
    -> predict 0.5(threshold)를 기준 해당 종류값 반환
  • threshold를 변경해가면 모델평가지표 관찰

precision와 recall은 서로 영향

-한쪽을 높게 설정시 다른쪽이 낮아지기에 어느한쪽 크게 하겠다고 threshold를 바꿔도 의미X
=> 모델의 성능을 확인할 뿐 threshold의 변화에 큰의미가 없다!!!

f1-score조화평균

-precision와 recall를 한꺼번에 확인 (precision와 recall가 모두 높은값일수록 f1은 높음)

ROC곡선

: FPR(fall-out)이 변할 때 TPR(recall=sensitivity)의 변화를 그린 그림

  • 완전 사선-> 의미X, 성능이 떨어짐/ 위로 곡선일수록 Good성능
  • AUC = roc밑 면적(1에 가까울수록 좋고 0.5(완전 사선)보다는 무조건 큼)
from sklearn.metrics import accuracy_score, precision_score, recall_score
from sklearn.metrics import f1_score, roc_auc_score, roc_curve

print(accuracy_score(y_test, y_pred_test))   #정확도
print(precision_score(y_test, y_pred_test))  #정밀도
print(recall_score(y_test, y_pred_test))     #재현률
print(f1_score(y_test, y_pred_test))         #f1score
print(roc_auc_score(y_test, y_pred_test))    #auc면적

예> 와인 데이터 맛 등급 모델 검증 평가

  • 그래프 그리기
pred_proba = wine_tree.predict_proba(X_test)[:,1]      #1일 확률만
fpr,tpr,thresholds = roc_curve(y_test, pred_proba)

plt.figure(figsize=(10,8))
plt.plot([0,1],[0,1], 'c', ls='--')                    #직선을 그려 상대비교
plt.plot(fpr,tpr, 'r')
plt.grid()
plt.show()

  • 위의 그래프는 비교대상이 없어 성능평가할 수 없다

0개의 댓글