728x90
분류 모형의 결과를 평가하기 위해서 혼동 행렬을 이용한 평가지표와 ROC 곡선의 AUC를 많이 사용한다.
혼동 행렬 (Confusion Martix; 정오 행렬)
- 분석 모델에서 구한 분류의 예측 범주와 데이터의 실제 분류 범주를 교차 표(Cross Table) 형태로 정리한 행렬
예측 범주 값 (Predicted Condition) | |||
Predicted Positive | Predicted Negative | ||
실제 범주 값 (Actual Condition) |
Actual Positive | True Positive (TP) | False Negative (FN) |
Actual Negative | False Positive (FP) | True Negative (TN) |
- TP : 실제값이 P이고 예측값도 P (참 긍정) -> 암이라고 예측한 환자가 암인 경우
- TN : 실제값이 N이고 예측값도 N (참 부정) -> 정상이라고 예측한 환자가 정상인 경우
- FP : 실제값이 N이고 예측값이 P (거짓 긍정) -> 암이라고 예측한 환자가 정상인 경우
- FN : 실제값이 P이고 예측값이 N (거짓 부정) -> 정상이라고 예측한 환자가 암인 경우
from sklearn.metrics import confusion_matrix
print(confusion_matrix(정답, 예측))
# 결과 예시
'''
[[87 23]
[12 57]]
'''
혼동 행렬을 통한 분류 모형의 평가 지표
1. 정확도 (Accuracy)
- 실제 분류 범주를 정확하게 예측한 비율
- 전체 예측에서 참 긍정과 참 부정이 차지하는 비율
- (TP + TN) / (TP + TN + FP + FN)
2. 재현율 (Recall) = 민감도 (Sensitivity)
- 실제로 '긍정'인 범주 중에서 '긍정'으로 올바르게 예측한 비율
- TP / (TP + FN)
3. 특이도 (Specificity)
- 실제로 '부정'인 범주 중에서 '부정'으로 올바르게 예측한 비율
- TN / (TN + FP)
4. 정밀도 (Precision)
- '긍정'으로 예측한 비율 중에서 실제로 '긍정'인 비율
- TP / (TP + FP)
- '예'라고 예측했을 때의 정답률
5. F1 점수 (F1-Score)
- 정밀도와 민감도(재현율)를 하나로 합한 성능평가 지표
- 2* (정밀도 * 재현율) / (정밀도 + 재현율)
- 0~1사이의 범위를 가짐
- 정밀도와 민감도 양쪽이 모두 클 때 큰 값을 가짐
- 좋은 예측 모델은 정밀도와 재현율이 동시에 좋아야 한다. 즉 F1 스코어 값이 좋을 수록 좋은 예측 모델이다.
from sklearn.metrics import classification_report
print(classification_report(정답, 예측))
# 결과 예시
'''
precision recall f1-score support
0 0.88 0.79 0.83 110
1 0.71 0.83 0.77 69
accuracy 0.80 179
macro avg 0.80 0.81 0.80 179
weighted avg 0.81 0.80 0.81 179
'''
728x90
반응형
'TIL - 외 > 빅데이터' 카테고리의 다른 글
[빅데이터] 데이터 불균형 처리 - SMOTE (0) | 2023.07.07 |
---|---|
[빅데이터] 분류 모형 결과 평가 2. ROC 곡선 (0) | 2023.07.07 |
코호트 분석1 (0) | 2023.06.19 |
[머신러닝] 랜덤 포레스트 (Random Forest) (0) | 2023.05.24 |
[머신러닝] 트리 알고리즘 (DecisionTreeClassifier) (0) | 2023.05.24 |
댓글