혼동행렬¶
정의와 설정¶
혼동행렬(분할표라고도 한다)은 예측된 이름표와 실제 이름표를 비교하여 분류모형의 성능을 요약한다. 이항 분류에서는 2×2 표다.
네 가지 결과¶
- 참음성(TN): 음성으로 예측했고 실제로 음성이다. 옳은 예측.
- 위양성(FP): 양성으로 예측했으나 실제로는 음성이다. 제1종 오류.
- 위음성(FN): 음성으로 예측했으나 실제로는 양성이다. 제2종 오류.
- 참양성(TP): 양성으로 예측했고 실제로 양성이다. 옳은 예측.
전체 관측치 수는 \(n = \text{TN} + \text{FP} + \text{FN} + \text{TP}\)이다.
대출 연체 예측¶
45,342건의 대출 관측치(연체 대 상환완료)로 학습한 로지스틱 회귀 모형의 결과는 다음과 같다.
Predicted
Default Paid Off
Actual Default 14,336 8,335
Actual Paid Off 8,148 14,523
여기서,
- TN = 14,523: 상환완료를 옳게 예측
- FP = 8,148: 연체로 예측했으나 실제로는 상환완료(허위경보)
- FN = 8,335: 상환완료로 예측했으나 실제로는 연체(놓친 연체)
- TP = 14,336: 연체를 옳게 예측
정확도¶
가장 기본적인 성능 지표는 정확도, 즉 옳은 예측의 비율이다.
위 예에서는 \(\text{Accuracy} = \frac{14{,}336 + 14{,}523}{45{,}342} \approx 0.6365\)(63.65%)이다.
그러나 정확도만 보는 것은 오도할 수 있으며, 특히 한 범주가 다른 범주보다 훨씬 흔한 불균형 자료에서 그렇다. 범주별 지표를 함께 살피는 편이 낫다(다음 절 참조).
범주별 비율¶
양성 범주(예: "연체")¶
- 민감도(재현율): 실제 양성 중 얼마나 찾아냈는가?
$\(\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}\)$
- 특이도: 실제 음성 중 얼마나 옳게 가려냈는가?
$\(\text{Specificity} = \frac{\text{TN}}{\text{TN} + \text{FP}}\)$
위 예에서는,
- 재현율 \(= 14{,}336 / (14{,}336 + 8{,}335) \approx 0.6323\) (실제 연체의 63.23%를 탐지)
- 특이도 \(= 14{,}523 / (14{,}523 + 8{,}148) \approx 0.6406\) (실제 상환완료의 64.06%를 식별)
유병률 조정¶
양성 범주의 유병률이 훈련자료와 검정자료에서 다르면 혼동행렬도 그에 따라 달라진다. 드문 사건이 주된 관심사인 의학이나 이상거래 탐지에서 특히 중요한 문제다.
시각화¶
혼동행렬은 셀 값과 색의 진하기를 함께 쓰는 열지도로 자주 표현한다.
Predicted
Neg Pos
Actual Neg [14523] [8148]
Actual Pos [ 8335] [14336]
이 형태는 모형이 어디서 틀리는지 한눈에 보여준다. 비대각 원소가 클수록 오분류율이 높다.
같은 표를 두 방향으로 나눈다¶
혼동행렬에서 파생되는 지표가 너무 많아 헷갈린다면, 외울 것이 사실 하나뿐이라는 점을 기억하면 된다. 네 칸을 행으로 나누느냐 열로 나누느냐가 전부다. 아래 그림은 위의 같은 표를 두 번 그린 것이다. 칸 안의 도수는 완전히 같고, 아래 붙은 비율만 다르다.

왼쪽은 행으로 나눈 것이다. 분모가 실제 범주이므로 "실제로 연체한 22,671건 중 몇 건을 잡았나"를 묻는다. 아래쪽 행에서 \(14{,}336/22{,}671 = 0.6323\)이 재현율이고 위쪽 행에서 \(14{,}523/22{,}671 = 0.6406\)이 특이도다. 이 두 값은 자료에 양성이 얼마나 흔한지와 무관하다. 각 행 안에서만 계산되기 때문이다.
오른쪽은 열로 나눈 것이다. 분모가 예측 범주이므로 "연체라고 말한 22,484건 중 몇 건이 맞았나"를 묻는다. \(14{,}336/22{,}484 = 0.6376\)이 정밀도이고, \(14{,}523/22{,}858 = 0.6354\)가 음성예측도다. 이쪽 값들은 유병률에 민감하다. 실제 연체 비율이 절반에서 5%로 떨어지면 오른쪽 위 칸(위양성)이 상대적으로 커져 정밀도가 급락하지만, 왼쪽 그림의 재현율과 특이도는 그대로다.
이 자료에서는 네 비율이 모두 \(0.63\) 근처라 구분이 잘 드러나지 않는데, 그것 자체가 이 모형에 대한 평가다. 동전을 던지는 것보다 아주 조금 나은 수준이며, 정확도 \(0.6365\) 역시 같은 이야기를 한다. 재현율과 정밀도가 이렇게 비슷하게 나오는 것은 두 범주의 크기가 거의 같은(\(22{,}671\) 대 \(22{,}671\)) 특수한 상황 때문이다. 불균형 자료에서는 두 값이 크게 갈라지며, 그때 비로소 "어느 방향으로 나눴는가"가 결정적인 질문이 된다.
연습문제¶
연습문제 1. 모형 평가
어떤 스팸 분류기가 전자우편 1000건의 검정자료에서 다음 혼동행렬을 냈다.
| 스팸으로 예측 | 스팸 아님으로 예측 | |
|---|---|---|
| 실제 스팸 | 85 | 15 |
| 실제 스팸 아님 | 30 | 870 |
(a) 정확도, 정밀도, 재현율, 특이도, F1 점수를 계산하라.
(b) 놓친 스팸의 비용이 허위경보 비용의 3배라면 분류 문턱을 낮춰야 하는가 높여야 하는가?
(c) 위양성률은 얼마인가?
풀이
(a) TP=85, FN=15, FP=30, TN=870
정확도 \(= (85+870)/1000 = 0.955\)
정밀도 \(= 85/(85+30) = 0.739\)
재현율 \(= 85/(85+15) = 0.850\)
특이도 \(= 870/(870+30) = 0.967\)
F1 \(= 2 \times 0.739 \times 0.850/(0.739+0.850) = 0.791\)
(b) 놓친 스팸(FN)이 더 비싸므로 문턱을 낮춰 재현율을 높여야 한다(스팸을 더 많이 잡되 위양성을 더 감수한다).
(c) FPR \(= FP/(FP+TN) = 30/900 = 0.033\)
정확도만 보면 안 되는 이유
이 분류기의 정확도는 95.5%로 훌륭해 보인다. 그러나 모든 메일을 "스팸 아님"으로 예측하는 무의미한 분류기의 정확도도 \(900/1000 = 90\%\)다. 즉 실제 분류기가 벌어들인 개선폭은 5.5%포인트뿐이며, 그마저도 대부분 흔한 범주에서 나온 것이다. 유병률이 낮을수록 이 착시가 심해진다. 스팸 비율이 1%였다면 아무것도 안 하는 분류기의 정확도가 99%다.
정리하며¶
혼동행렬이 모든 분류 지표의 출발점이다.
- 네 칸에서 모든 지표가 나온다. 정확도·정밀도·재현율·특이도가 모두 이 네 수의 조합이다.
- 정확도만 보면 위험하다. 양성이 \(1\%\) 인 자료에서 모두 음성으로 예측하면 정확도가 \(99\%\) 다. 불균형 자료에서 정확도는 무의미하다.
- 두 오류가 비대칭일 수 있다. 거짓 양성과 거짓 음성의 비용이 다르면 어느 쪽을 줄일지 정해야 하며, 그것이 문턱 선택이다.
- 9장의 두 오류와 같은 구조다. \(FP\) 가 제1종, \(FN\) 이 제2종 오류에 대응한다.
- 행과 열의 방향을 확인한다. 라이브러리마다 배치가 다르므로
confusion_matrix의 출력 순서를 반드시 확인해야 한다.
다음 절 정밀도와 재현율로 넘어간다.