01
정확도만 보면 생기는 일
카드 회사가 사기 거래를 골라내는 모델을 만들었습니다. 평가해 보니 정확도가 95%입니다. 100건 중 95건을 맞혔다는 뜻이니 꽤 좋아 보입니다. 그런데 거래 100건 중 사기가 5건뿐이라면 이야기가 달라집니다.
아래 그림의 칸 하나가 거래 한 건이고, 빨간 칸이 실제 사기 거래입니다. 모델이 "사기"라고 표시한 칸은 앞으로 튀어나옵니다. 두 모델을 바꿔 보세요.
- 정확도
- 95%
- 재현율
- 0%
거래 100건 중 사기 5건을 골라내는 모델
아무것도 안 하고 전부 "정상"이라고 답했는데 정확도가 95%입니다. 사기 거래는 하나도 못 잡았습니다(재현율 0%).
무조건 "정상"이라고만 답하는 모델은 아무것도 배우지 않았는데 정확도가 95%입니다. 사기는 하나도 못 잡았습니다. 실제로 학습한 모델은 정확도가 93%로 더 낮지만 사기 5건 중 4건을 잡았습니다. 이 회사에 필요한 건 두 번째 모델입니다.
정확도(accuracy)는 전체 중 맞힌 비율입니다. 한쪽 결과가 압도적으로 많은 데이터, 곧 불균형 데이터에서는 많은 쪽만 찍어도 정확도가 높게 나옵니다. 사기 탐지, 질병 진단, 불량품 검사처럼 찾아야 할 대상이 드문 문제가 대부분 그렇습니다.
문제에 이런 표현이 나오면 → 이렇게 고른다
- “전체의 1%만 양성인 데이터”정확도 대신 정밀도·재현율·F1
- “다수 쪽으로만 찍어도 점수가 높다”정확도의 함정
그렇다면 무엇을 봐야 할까요? 모델이 맞히고 틀린 경우를 네 가지로 나눠 세는 데서 시작합니다.
02
혼동 행렬과 정밀도·재현율·F1
"스팸인가 아닌가"처럼 둘 중 하나를 고르는 모델의 결과는 네 칸으로 나뉩니다. 찾으려는 쪽(스팸)을 양성(Positive), 반대쪽(정상)을 음성(Negative)이라고 부릅니다. 그리고 모델의 판정이 맞았으면 참(True), 틀렸으면 거짓(False)을 앞에 붙입니다.
예를 들어 정상 메일을 스팸이라고 판정했다면, 모델은 양성이라고 했는데 틀렸으니 거짓 양성(False Positive, FP)입니다. 스팸을 정상이라고 놓쳤다면 거짓 음성(False Negative, FN)입니다. 이름의 뒷말은 모델의 판정, 앞말은 그 판정이 맞았는지를 뜻합니다.
| 모델 판정: 스팸 (양성) | 모델 판정: 정상 (음성) | |
|---|---|---|
| 실제: 스팸 | TP — 참 양성(True Positive): 잘 잡음 | FN — 거짓 음성(False Negative): 놓침 |
| 실제: 정상 | FP — 거짓 양성(False Positive): 잘못 거름 | TN — 참 음성(True Negative): 잘 통과 |
이 표를 혼동 행렬(confusion matrix)이라고 합니다. 오분류표라고도 합니다. 여기서 두 가지 비율을 뽑습니다.
정밀도 (precision) = TP ÷ (TP + FP)
모델이 스팸이라고 한 것 중 진짜 스팸의 비율. "걸렀다 하면 맞나?" 잘못 거름이 비쌀 때 봅니다.
재현율 (recall) = TP ÷ (TP + FN)
진짜 스팸 중 모델이 잡아낸 비율. "빠짐없이 잡았나?" 놓침이 비쌀 때 봅니다. 민감도라고도 합니다.
분류 모델은 보통 0에서 1 사이 점수를 내고, 정해 둔 문턱값(threshold)보다 높으면 양성으로 판정합니다. 아래 그림은 메일 20통을 점수 순으로 늘어놓은 것입니다. 문턱을 옮겨 보세요.
- 혼동 행렬
- TP 4 · FP 3 · FN 2 · TN 11
- 지표
- 정밀도 57% · 재현율 67% · F1 62%
메일 20통 중 스팸 6통. 문턱 오른쪽(앞으로 나온 칸)을 스팸으로 거른다
문턱 0.5: 스팸 6통 중 4통을 잡았고(재현율 67%), 스팸이라고 거른 7통 중 4통이 진짜 스팸입니다(정밀도 57%). 문턱을 내릴수록 재현율은 오르고 정밀도는 내려갑니다.
문턱을 올리면 확실한 것만 걸러서 정밀도는 오르지만 놓치는 스팸이 늘어 재현율이 떨어집니다. 문턱을 내리면 반대입니다. 둘은 대개 한쪽을 올리면 다른 쪽이 내려갑니다. 그래서 어떤 실수가 더 비싼지에 따라 문턱을 정합니다. 암 검진처럼 놓치면 안 되는 일은 재현율을, 중요한 메일을 스팸함에 넣으면 안 되는 일은 정밀도를 우선합니다.
둘을 함께 보는 숫자가 F1 점수입니다. 정밀도와 재현율의 조화 평균으로, 둘 중 하나만 높고 다른 하나가 낮으면 F1도 낮아집니다. 불균형 데이터에서 모델을 한 숫자로 비교할 때 많이 씁니다.
문제에 이런 표현이 나오면 → 이렇게 고른다
- “놓치면 안 된다 (질병, 사기)”재현율
- “잘못 걸러내면 안 된다 (스팸 필터)”정밀도
- “정밀도와 재현율을 함께 한 숫자로”F1 점수
- “정상을 양성으로 잘못 판정”거짓 양성 (FP)
- “양성을 음성으로 놓침”거짓 음성 (FN)
그런데 문턱마다 정밀도와 재현율이 달라지면, 문턱을 정하기 전에는 두 모델 중 어느 쪽이 나은지 어떻게 비교할까요?
광고
03
ROC 곡선과 AUC
문턱을 1에서 0까지 조금씩 내리면서, 문턱마다 두 값을 잽니다. 진짜 스팸 중 잡아낸 비율인 참 양성 비율(True Positive Rate, TPR)과, 정상 메일 중 잘못 거른 비율인 거짓 양성 비율(False Positive Rate, FPR)입니다. TPR은 2장의 재현율과 같습니다. FPR을 가로, TPR을 세로로 찍어 이은 선이 ROC 곡선입니다.
좋은 모델은 정상 메일을 조금만 잘못 걸러도 스팸을 빠르게 잡아내니 곡선이 왼쪽 위로 솟습니다. 아무렇게나 찍는 모델은 대각선을 따라갑니다. 곡선 아래의 넓이를 AUC(Area Under the Curve)라고 합니다. 아래 그림에서 기둥들이 채운 넓이가 AUC입니다.
- AUC
- 0.84
문턱을 1에서 0까지 내려 가며 찍은 (FPR, TPR) — 기둥이 채운 넓이가 AUC
잘못 거르는 비율이 조금만 늘어도 스팸을 빠르게 잡아냅니다. 곡선이 왼쪽 위로 붙을수록 넓이(AUC 0.84)가 1에 가깝습니다.
AUC는 0.5(찍기)에서 1(완벽) 사이 값입니다. 문턱을 하나로 정하지 않고 모델이 양성과 음성을 얼마나 잘 가르는지를 한 숫자로 보여 주므로, 문턱을 정하기 전에 여러 모델을 비교할 때 씁니다. 다만 실제로 서비스할 때는 결국 문턱을 하나 골라야 하고, 그때는 2장의 정밀도·재현율을 다시 봅니다.
문제에 이런 표현이 나오면 → 이렇게 고른다
- “임계값과 상관없이 모델을 비교”AUC
- “민감도와 1−특이도로 그린 곡선”ROC 곡선
- “AUC가 0.5”찍는 수준
지금까지는 "스팸이냐 아니냐"처럼 종류를 맞히는 모델이었습니다. 매출이나 집값처럼 숫자를 맞히는 모델은 맞혔다·틀렸다로 나눌 수 없습니다. 얼마나 빗나갔는지를 재야 합니다.
Pro 전용
여기까지 무료로 읽을 수 있어요
나머지 5개 장은 Pro 구독자에게 열려 있어요. 장마다 3D 그림과 "문제에 이런 표현이 나오면" 정리가 이어지고, 마지막 장에서는 직접 풀어 보며 확인합니다.
- 04MAE·RMSE
- 05생성한 글 평가
- 06LLM 채점·사람 평가
- 07A/B 테스트·비즈니스 지표
- 08지표 고르기
PasslyExam
개념을 읽었다면, 이제 시험 문제로 확인할 차례
PasslyExam은 자격증 시험 범위에 맞춰 만든 오리지널 연습문제와 해설, 실전 모의고사를 제공합니다. 왜 그 보기가 정답이고 비슷한 보기는 왜 틀리는지까지 해설로 짚습니다. 가입하면 매일 무료로 연습문제를 풀 수 있습니다.