혼동 행렬
혼동 행렬 (Confusion Matrix)
from sklearn.metrics import *
confusion_matrix(y_test, y_pred)
| 실제 \ 예측 | 음성 (0) | 양성 (1) |
|---|
| 음성 (0) | 진음성 (True Negative) | 위양성 (False Positive) |
| 양성 (1) | 위음성 (False Negative) | 진양성 (True Positive) |
진/위 양성/음성
- 혼동행렬에서 양성/음성은 예측을 기준으로 말함
- 현실에서는 실제로 어떤지 알 수 없는 경우가 많음
- 진(True) -> 예측이 맞음
- 위(False) -> 예측이 틀림
정확도 (Accuracy)
TP+TN+FP+FNTP+TN
- 특별히 음성/양성 구분에 관심이 없는 경우 사용
- 그러나 대부분은 양성에 더 관심이 있음
accuracy_score(y_test, y_pred)
정밀도 (Precision)
TP+FPTP
- 양성 예측이 중요한 경우 (예: 채용, 투자, 추천, 결혼 등)
precision_score(y_test, y_pred)
재현도 (Recall)
TP+FNTP
- 양성을 찾아 내는 것이 중요한 경우 (예: 방역)
- 의학 등에서는 민감도(specificity)라고도 함
- 또는 TPR(True Positive Rate)
recall_score(y_test, y_pred)
특이도 (Specificity)
TN+FPTN
- 음성을 찾아 내는 것이 중요한 경우 (예: 방역)
- 대체로 양성 예측을 보수적으로 하면 특이도가 높아진다
- FPR(False Positive Rate):
FPR=TN+FPFP=1−specificity
recall_score(y_test, y_pred, pos_label=0)
특이도가 낮을 경우 문제점
- 질병 검사에서는 음성이 양성보다 훨씬 많음
- 특이도가 낮으면 정밀도가 떨어짐
예) 실제 양성이 1%인 경우
| 실제 \ 예측 | 음성 | 양성 |
|---|
| 실제 음성 | 9900 | 0 |
| 실제 양성 | 2 | 98 |
- 특이도 100%, 민감도 98%, 정밀도 100%
| 실제 \ 예측 | 음성 | 양성 |
|---|
| 실제 음성 | 9504 | 396 |
| 실제 양성 | 10 | 90 |
- 특이도 96%, 민감도 90%, 정밀도 18.5%
F1
2{pr}p+r={2p1+r1}
- 조화평균: 역수의 평균의 역수
- 비율, 속도 등을 평균낼 때는 산술평균 대신 조화평균을 사용
퀴즈
| 예측 | |
|---|
| 음성 | 양성 |
| 실제 음성 | 521 | 115 |
| 실제 양성 | 373 | 629 |
- TP: 진양성
- TN: 진음성
- FP: 위양성
- FN: 위음성