임계값과 혼동행렬: 다이얼을 돌리면 네 칸이 움직인다
Contents
학습목표 — 이 장을 마치면 다음을 할 수 있다.
- 임계값을 낮추면 양성 예측이 늘어 TP·FP가 증가하고 FN·TN이 감소함을 설명한다.
- 점수 분포 위에서 임계값을 좌우로 옮길 때 네 칸의 영역이 어떻게 재분배되는지 분석한다.
- 한 임계값에서 TPR·FPR을 계산하고, 임계값 변화가 둘을 어떻게 움직이는지 예측한다.
앞 장(00)에서 우리는 분류기가 점수를 매기고, 사람이 임계값이라는 기준선을 정하면 예측이 나오고, 그 예측이 혼동행렬의 네 칸으로 채점된다는 것을 배웠다. 그리고 마지막에 한 가지 약속을 남겨 두었다. "임계값이라는 다이얼을 돌리면 네 칸은 정확히 어떻게 변할까?" 이 장은 그 약속에 답한다. 결론을 먼저 말하면, 임계값을 움직이는 일에는 공짜 점심이 없다. 한쪽을 얻으면 반드시 다른 쪽을 내준다. 이 맞교환(트레이드오프)이야말로 다음 장에서 만날 ROC 곡선이 존재하는 이유 그 자체다. 그러니 이 장은 짧지만 ROC 곡선의 심장을 미리 손에 쥐는 장이다.
1-1. 임계값을 옮긴다는 것의 직관 — 화재경보 다이얼
앞 장에서 화재경보기의 민감도 다이얼을 잠깐 떠올렸다. 그 다이얼을 다시 손에 쥐어 보자. 다이얼을 민감한 쪽으로 돌리면(= 임계값을 낮추면) 경보기는 작은 연기에도 쉽게 울린다. 그 결과 진짜 불을 놓치는 일(FN)은 줄지만, 토스트 탄 연기에도 울리는 거짓 경보(FP)는 늘어난다. 반대로 다이얼을 둔감한 쪽으로 돌리면(= 임계값을 높이면) 어지간한 연기에는 꿈쩍도 안 하니 거짓 경보(FP)는 줄지만, 정작 진짜 불도 늦게 알아채(FN) 위험해진다.
여기서 핵심은, 다이얼을 어느 쪽으로 돌려도 한 종류의 오류를 줄이면 다른 종류의 오류가 늘어난다는 점이다. 양쪽 오류를 동시에 0으로 만드는 마법의 다이얼 위치는 (분포가 완벽히 갈라지지 않는 한) 존재하지 않는다. 이 비대칭이 바로 우리가 임계값 선택을 고민해야 하는 이유다. 이 직관을 이제 점수의 세계로 정확히 옮겨 보자.
1-2. 점수 분포 위에 임계값 세우기 — 그림 읽는 법
두 개의 산: 음성의 산과 양성의 산
좋은 분류기라면 음성 사례들에는 낮은 점수를, 양성 사례들에는 높은 점수를 줄 것이다. 그래서 모든 사례의 점수를 한 줄에 늘어놓고 "이 점수대에 사례가 몇 개 있나"를 높이로 그리면, 보통 두 개의 봉우리(산)가 나타난다. 왼쪽(낮은 점수)에 음성들이 모인 산, 오른쪽(높은 점수)에 양성들이 모인 산이다.
만약 모델이 완벽하다면 두 산은 깔끔히 떨어져 겹치지 않는다. 그러나 현실의 모델은 음성에게도 가끔 높은 점수를, 양성에게도 가끔 낮은 점수를 준다. 그래서 두 산은 가운데서 겹친다. 이 겹치는 부분이 바로 모델이 헷갈리는 영역이고, 우리가 임계값을 어디 두든 오류가 사라지지 않는 근본 이유다.
임계값 = 수직선, 네 칸 = 네 영역
이 두 산을 그린 그림 위에 임계값을 하나의 수직선으로 세운다. 규칙(00장)은 "점수 ≥ 임계값이면 양성 예측"이었으므로, 수직선의 오른쪽은 모두 양성 예측, 왼쪽은 모두 음성 예측 구역이 된다. 이제 각 산(실제 정답)과 수직선(예측)을 겹쳐 보면 네 칸이 네 개의 영역으로 눈에 보인다.
- 수직선 오른쪽에 있는 양성 산의 부분 = 양성을 양성이라 맞힘 = TP
- 수직선 오른쪽에 있는 음성 산의 부분 = 음성을 양성이라 잘못 외침 = FP (거짓 경보)
- 수직선 왼쪽에 있는 양성 산의 부분 = 양성을 음성이라 놓침 = FN (놓침)
- 수직선 왼쪽에 있는 음성 산의 부분 = 음성을 음성이라 맞힘 = TN
이렇게 하면 00장에서 표의 칸으로만 보았던 TP·FP·FN·TN이 이제 그림 위의 넓이로 바뀐다. 칸의 개수 = 그 영역에 든 사례 수다. 아래 그림이 바로 이 장면을, 임계값을 세 위치(낮음·중간·높음)에 세워 가며 보여 준다.
위 그림은 음성·양성 두 점수 분포(두 개의 산)가 겹쳐 있고, 그 위에 임계값 수직선을 여러 위치에 세웠을 때 TP·FP·FN·TN의 네 영역이 어떻게 나뉘고 색칠되는지를 보여 준다.
1-3. 다이얼을 왼쪽으로 — 임계값을 낮추면 무슨 일이 일어나는가
이제 그림 위의 수직선(임계값)을 왼쪽으로 밀어 보자. 임계값을 낮춘다는 뜻이다. 수직선이 왼쪽으로 가면 그 오른쪽(양성 예측) 구역이 넓어진다. 더 많은 사례가 "양성 예측" 쪽으로 빨려 들어간다. 새로 양성 예측에 포함되는 사례들은 양성 산의 일부일 수도, 음성 산의 일부일 수도 있다. 그래서 네 칸이 이렇게 움직인다.
- TP 증가 — 양성 산에서 전에는 왼쪽(놓침)에 있던 사례 일부가 이제 오른쪽(맞힘)으로 넘어온다.
- FP 증가 — 동시에 음성 산에서도 일부가 오른쪽으로 넘어와 거짓 경보가 된다.
- FN 감소 — 놓치던 양성이 줄었으니(그만큼 TP로 갔으니) 당연히 감소.
- TN 감소 — 옳게 거르던 음성이 줄었으니(그만큼 FP로 갔으니) 당연히 감소.
방향을 한눈에 외우는 법: 임계값↓ → 양성 예측 구역↑ → 오른쪽 칸(TP·FP) 동반 증가, 왼쪽 칸(FN·TN) 동반 감소. 임계값을 높이면 모든 부등호가 정확히 뒤집힌다(양성 예측 구역이 좁아져 TP·FP는 줄고 FN·TN은 는다).
여기서 반드시 짚어야 할 것이 "동반"이라는 단어다. TP와 FP는 따로 움직이지 않는다. 임계값을 낮춰 양성 예측 구역을 넓히면 양성 산과 음성 산이 함께 그 구역으로 끌려 들어오기 때문에, TP를 늘리려는 시도는 거의 항상 FP도 함께 늘린다. 이것이 "공짜 점심은 없다"의 정확한 뜻이다.
이 변화를 00장에서 배운 비율의 언어로 옮기면 의미가 더 분명해진다.
- TP가 늘고 FN이 줄었으니 → 재현율(TPR) = TP/P 증가 (놓침이 줄어 더 민감해졌다)
- FP가 늘고 TN이 줄었으니 → FPR = FP/N 증가 = 특이도 감소 (거짓 경보가 늘어 덜 까다로워졌다)
즉 임계값을 낮추면 재현율과 FPR이 함께 오른다. 둘 중 하나만 골라 올릴 수는 없다. 아래 그림이 이 인과의 사슬을 정리해 준다.
위 그림은 임계값을 낮추면 → 양성 예측이 늘고 → TP·FP는 증가, FN·TN은 감소 → 결국 재현율과 FPR이 함께 오른다는 트레이드오프의 인과 사슬을 보여 준다.
이 "재현율을 얻으려면 FPR을 내준다"는 맞교환을 한 장의 그래프로 그린 것이 다음 장의 ROC 곡선이다. 즉 ROC 곡선은 이 트레이드오프의 전체 지도인 셈이다. 그 지도로 넘어가기 전에, 다이얼을 끝까지 돌린 양 극단에서 무슨 일이 벌어지는지 보자.
1-4. 다이얼을 끝까지 — 두 극단점이 ROC 곡선의 양 끝이 되는 이유
임계값을 옮길 수 있는 범위의 양 끝까지 밀어 보자. 이 두 극단은 다음 장에서 ROC 곡선이 항상 통과하는 두 점이 되므로 미리 손에 익혀 둘 가치가 있다.
극단 1 — 임계값을 가장 높은 점수보다도 더 높게(사실상 +∞). 그러면 어떤 사례도 "점수 ≥ 임계값"을 만족하지 못한다. 즉 아무도 양성으로 예측하지 않는다. 양성 예측이 0이니 TP = 0, FP = 0. 모든 양성은 놓치고(FN = P) 모든 음성은 거른다(TN = N). 비율로는 TPR = 0/P = 0, FPR = 0/N = 0. 좌표로는 (FPR, TPR) = (0, 0). 화재경보로 치면 "절대 안 울리는 경보" — 거짓 경보는 0이지만 진짜 불도 다 놓친다.
극단 2 — 임계값을 가장 낮은 점수보다도 더 낮게(사실상 −∞). 그러면 모든 사례가 "점수 ≥ 임계값"을 만족한다. 즉 전부 양성으로 예측한다. 모든 양성을 맞히고(TP = P, FN = 0) 모든 음성을 거짓 경보로 만든다(FP = N, TN = 0). 비율로는 TPR = P/P = 1, FPR = N/N = 1. 좌표로는 (FPR, TPR) = (1, 1). 화재경보로 치면 "항상 울리는 경보" — 진짜 불은 다 잡지만 끊임없는 거짓 경보로 쓸모가 없다.
정리하면, 임계값을 +∞에서 −∞로 죽 내리는 동안 (FPR, TPR) 점은 (0, 0)에서 출발해 (1, 1)에서 끝난다. 어떤 분류기든 이 두 점은 반드시 지난다(다이얼의 양 끝이니까). 그 사이를 임계값이 지나며 찍는 점들이 곧 ROC 곡선이다. 이렇게 해서 모든 ROC 곡선은 (0,0)에서 (1,1)로 간다는 다음 장의 첫 사실이 지금 미리 증명된 셈이다.
이제 양 끝점은 잡았으니, 그 사이를 채우는 점 하나를 실제 숫자로 만들어 보며 다음 장을 예고하자.
1-5. 작은 데이터로 한 임계값 찍어 보기 — 다음 장의 예고편
다음 장(02)부터 04장까지 우리는 아주 작고 명시적인 예제 하나를 계속 들고 다닐 것이다. 미리 인사해 두자. 양성 5개, 음성 5개, 총 10개 사례에 모델이 0~100 점수를 매겼다(점수 내림차순으로 정렬해 둠).
| # | 점수 | 실제 라벨 |
|---|---|---|
| 1 | 95 | 양성 |
| 2 | 90 | 양성 |
| 3 | 80 | 음성 |
| 4 | 75 | 양성 |
| 5 | 65 | 음성 |
| 6 | 60 | 양성 |
| 7 | 50 | 음성 |
| 8 | 40 | 양성 |
| 9 | 30 | 음성 |
| 10 | 20 | 음성 |
여기서 P = 5(실제 양성 전부), N = 5(실제 음성 전부)다. (80점에 음성이 끼어 있는 것을 눈여겨보라. 이 한 사례 때문에 이 모델은 완벽하지 않다 — 나중에 곡선이 천장에 딱 붙지 못하는 이유가 된다.)
이제 이 데이터에 임계값 하나를 세워 보자. 임계값 = 75로 두면 규칙은 "점수 ≥ 75인 사례를 양성으로 예측"이다. 한 줄씩 채점하자.
- 점수 ≥ 75인 사례: 95(양성), 90(양성), 80(음성), 75(양성) → 4개가 양성 예측.
- 이 중 실제 양성은 95·90·75 → TP = 3. 실제 음성은 80 하나 → FP = 1.
- 점수 < 75인 사례: 65(음성), 60(양성), 50(음성), 40(양성), 30(음성), 20(음성) → 음성 예측.
- 이 중 실제 양성은 60·40 → FN = 2. 실제 음성은 65·50·30·20 → TN = 4.
혼동행렬로 정리하면 TP=3, FP=1, FN=2, TN=4 (검산: TP+FN = 3+2 = 5 = P ✓, FP+TN = 1+4 = 5 = N ✓). 이제 비율을 00장 공식대로 계산한다.
- TPR(재현율) = TP/P = 3/5 = 0.6 — 실제 양성 5개 중 3개를 잡았다.
- FPR = FP/N = 1/5 = 0.2 — 실제 음성 5개 중 1개에서 거짓 경보를 냈다.
그러니 임계값 75에서 이 분류기는 ROC 평면 위의 점 (FPR, TPR) = (0.2, 0.6) 하나에 해당한다. 1-3에서 배운 대로, 만약 여기서 임계값을 더 낮춰 65, 60, …으로 내리면 양성 예측 구역이 넓어지면서 TPR과 FPR이 함께 오를 것이다 — 점은 (0.2, 0.6)에서 오른쪽 위, 즉 (1, 1) 쪽으로 행진한다. 반대로 임계값을 80, 90으로 높이면 점은 (0, 0) 쪽으로 후퇴한다. 이 임계값 하나 = 점 하나를 임계값을 죽 바꿔 가며 여러 개 찍고 이으면, 그게 바로 다음 장의 ROC 곡선이다.
1-6. 이 장에서 챙긴 것, 그리고 다음 장으로
- 임계값은 점수 분포 위의 수직선이다. 오른쪽은 양성 예측 구역, 왼쪽은 음성 예측 구역. 네 칸 TP·FP·FN·TN은 두 산(양성·음성)과 이 수직선이 나누는 네 영역이다.
- 임계값↓ → 양성 예측 구역↑ → TP·FP 동반 증가, FN·TN 동반 감소. 비율로는 재현율(TPR)과 FPR이 함께 오른다. 임계값↑이면 모두 반대.
- 공짜 점심은 없다: TP(재현율)를 늘리려고 임계값을 낮추면 FP(FPR)도 따라 늘어난다. 한 오류를 줄이면 다른 오류가 는다 — 이 맞교환이 ROC 곡선의 본질이다.
- 두 극단점: 임계값 +∞ → (FPR, TPR) = (0, 0)(아무도 양성 아님), 임계값 −∞ → (1, 1)(전부 양성). 그래서 모든 ROC 곡선은 (0,0)에서 (1,1)로 간다.
- 임계값 하나 = 점 하나: 워크드 예제에서 임계값 75는 (FPR, TPR) = (0.2, 0.6) 점 하나에 대응한다.
이제 마지막 퍼즐 조각만 남았다. 임계값 하나가 점 하나를 만든다는 것을 알았으니, 임계값을 가능한 모든 값으로 죽 옮겨 가며 점을 전부 찍으면 무엇이 보일까? 그 점들이 (0,0)에서 (1,1)까지 어떻게 이어지며, 그 모양이 분류기의 좋고 나쁨에 대해 무엇을 말해 줄까? 다음 장 02 — ROC 곡선이란에서, 분포 위의 임계값선과 ROC 평면 위의 점을 나란히 놓고 1:1로 대응시켜 가며, 이 점들이 모여 하나의 곡선 — ROC 곡선 — 이 되는 과정을 직접 그려 보자.