본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

AI & Data

분류 모델 성능 평가 지표

작성 2026. 10. 31.추가
목차12개 항목
출처와 참고

팔만코딩경(42Seoul 커뮤니티 위키)의 「머신러닝 분류 모델의 성능 평가 지표 분석」을 바탕으로 재구성한 노트다. ROC·AUC와 회귀 지표는 zzsza의 「Datascience Interview Questions」 머신러닝 질문 목록을 따라 scikit-learn 「Metrics and scoring」 문서로 보강했다.

혼동 행렬

이진 분류 모델의 예측은 정답과 짝지어 네 경우로 나뉜다. 이 표를 혼동 행렬(confusion matrix)이라 하고, 모든 지표가 여기서 나온다.

실제 양성(True)실제 음성(False)
예측 양성TP (참 양성)FP (거짓 양성, 1종 오류)
예측 음성FN (거짓 음성, 2종 오류)TN (참 음성)

이름 읽는 법: 뒤 글자(P/N)는 모델의 예측, 앞 글자(T/F)는 그 예측이 맞았는지다.

정밀도와 재현율

지표식묻는 것날씨 예
정밀도(precision)TP / (TP + FP)양성이라고 한 것 중 진짜 양성 비율"맑다"고 한 날 중 실제로 맑은 날
재현율(recall)TP / (TP + FN)진짜 양성 중 모델이 찾아낸 비율실제로 맑은 날 중 "맑다"고 맞힌 날

둘은 맞바뀐다

한 달 30일 중 맑은 날이 20일이라고 하자.

모델전략정밀도재현율
A확실한 2일만 "맑다"2/2 = 100%2/20 = 10%
B30일 전부 "맑다"20/30 ≈ 67%20/20 = 100%

어느 한쪽 지표만 100%로 만드는 것은 쉽다. 그래서 정밀도와 재현율은 항상 함께 본다. 어느 쪽을 더 중시할지는 오류의 비용이 정한다.

상황더 비싼 오류우선 지표
암 진단, 사기 거래 탐지놓치는 것(FN)재현율
스팸 필터, 추천잘못 거르는 것(FP)정밀도

정확도와 불균형 데이터

정확도(accuracy)는 음성을 음성으로 맞힌 경우까지 포함한 전체 정답률이다.

Accuracy = (TP + TN) / (TP + TN + FP + FN)

가장 직관적이지만 클래스가 불균형하면 속인다. 여름 한 달 동안 눈 온 날이 하루라면, "매일 눈 안 옴"이라고만 답하는 모델도 정확도 97%가 나온다. 눈 오는 날을 찾는 능력은 0인데도 그렇다.

F1 점수

F1 점수는 정밀도와 재현율의 조화평균이다.

F1 = 2 · (Precision · Recall) / (Precision + Recall)

산술평균 대신 조화평균을 쓰는 이유는 작은 값 쪽으로 끌려가기 때문이다. 위 모델 A는 산술평균이 55%지만 F1은 약 18%다. 한쪽이 무너진 모델이 높은 점수를 받지 못하게 막는다. 평균 속력을 구할 때 조화평균을 쓰는 것과 같은 원리다. 클래스가 불균형할 때 정확도 대신 하나의 숫자로 성능을 요약하기 좋다.

ROC 곡선과 AUC

정밀도·재현율·F1은 모두 임계값 하나를 정한 뒤의 숫자다. 대부분의 분류기는 양성일 확률(점수)을 내고, 「0.5 이상이면 양성」 같은 임계값은 사람이 고른다. 임계값을 1에서 0까지 내리며 성능이 어떻게 바뀌는지 한 장에 그린 것이 ROC 곡선(receiver operating characteristic curve)이다.

축식다른 이름
y: TPR(참 양성 비율)TP / (TP + FN)재현율, 민감도
x: FPR(거짓 양성 비율)FP / (FP + TN)1 − 특이도
TPR
1 ┤   ╭────────   좋은 모델: 왼쪽 위로 붙는다
  │  ╱       ╱
  │ ╱      ╱      대각선: 무작위 추측 (AUC 0.5)
  │╱     ╱
0 ┼────────── FPR
  0           1
임계값을 낮출수록 오른쪽 위로 이동한다 (양성 판정이 늘어 TPR·FPR이 함께 오른다)
  • AUC(area under the ROC curve) 는 곡선 아래 넓이로, 1이면 완벽, 0.5면 동전 던지기다. 뜻은 「무작위로 뽑은 양성 하나가 무작위로 뽑은 음성 하나보다 높은 점수를 받을 확률」이다. 그래서 임계값과 무관하게 순위를 매기는 능력을 잰다.
  • AUC는 점수의 순서만 보므로 확률이 잘 맞는지(보정, calibration)는 알려 주지 않는다. 확률 자체가 중요하면 로그 손실(log loss)이나 브라이어 점수(Brier score)를 함께 본다.
  • 양성이 아주 드물면 ROC보다 PR 곡선이 정직하다. FPR의 분모인 TN이 거대해서 FP가 크게 늘어도 FPR은 거의 안 움직이고, ROC AUC가 0.95처럼 좋아 보인다. 정밀도는 FP 증가를 그대로 드러낸다. 사기 탐지·희귀 질환처럼 양성이 1% 미만이면 PR 곡선과 그 넓이(평균 정밀도, AP)를 본다.
  • 다중 클래스는 클래스 하나 대 나머지(OvR)나 클래스 쌍(OvO)으로 이진 AUC를 구해 평균한다. scikit-learn의 roc_curve, roc_auc_score(multi_class="ovr"), average_precision_score가 이 계산을 한다.
  • 곡선으로 모델을 고른 뒤에도 배포할 임계값은 따로 정한다. 재현율 하한(예: 사기의 95%는 잡는다)을 두고 그 안에서 정밀도가 가장 높은 지점을 고르는 식이다.

회귀 지표: 문제 유형에 맞는 지표 고르기

연속값을 맞히는 회귀에는 혼동 행렬이 없다. 예측과 정답의 차이(잔차) 를 어떻게 모으느냐로 지표가 갈린다.

지표식성질
MAE(평균 절대 오차)mean(|y − ŷ|)단위가 원래 값과 같아 설명하기 쉽다. 이상치에 덜 민감하다
MSE(평균 제곱 오차)mean((y − ŷ)²)큰 오차에 제곱 벌점을 준다. 미분이 쉬워 학습 손실로 흔히 쓴다
RMSE√MSEMSE를 원래 단위로 되돌린 것. 큰 오차를 특히 피해야 할 때
MAPE(평균 절대 백분율 오차)mean(|y − ŷ| / |y|)규모가 다른 대상끼리 비교하기 좋다. 정답이 0 근처면 폭발한다
R²(결정 계수)1 − SSE / SST「평균으로만 찍는 모델」 대비 설명한 분산의 비율. 1이 완벽, 0이면 평균과 같고, 평균보다 못하면 음수가 된다
문제먼저 보는 지표
이진 분류, 클래스 균형정확도, ROC AUC
이진 분류, 양성이 드묾재현율·정밀도, F1, PR AUC
확률 자체를 쓰는 분류(위험 점수, 입찰가)로그 손실, 브라이어 점수, 보정 곡선
회귀, 큰 오차가 치명적RMSE
회귀, 이상치가 많고 설명이 중요MAE, 중앙값 절대 오차
회귀, 규모가 다른 여러 대상MAPE(0이 없을 때)
순위·추천nDCG, Recall@K(추천 평가)

학습에 쓰는 손실과 평가 지표가 어긋나면 손실은 줄어도 지표는 안 오른다. 가능하면 같은 기준을 쓰고, 어긋날 수밖에 없으면(예: 정확도는 미분이 안 된다) 평가 지표로 하이퍼파라미터와 임계값을 고른다.

객체 탐지 지표: IoU, PR 곡선, AP, mAP

이미지에서 물체의 위치(바운딩 박스)까지 맞혀야 하는 객체 탐지는 "맞혔다"의 기준부터 정해야 한다.

IoU

IoU(Intersection over Union)는 예측 박스와 정답 박스가 얼마나 겹치는지다.

IoU = 두 박스의 교집합 넓이 / 두 박스의 합집합 넓이

IoU가 기준값(흔히 0.5) 이상이면 TP, 미만이면 FP로 센다. 기준값은 과제에 따라 바꾼다.

PR 곡선

탐지 결과마다 모델의 확신도(confidence)가 붙는다. 확신도 기준값을 높이면 확실한 것만 남아 정밀도가 오르고 재현율이 내려간다. 기준값을 낮춰 가며 (재현율, 정밀도) 쌍을 찍은 그래프가 PR 곡선(precision-recall curve)이다. x축이 재현율, y축이 정밀도다.

정답 번호판 15개, 확신도 순으로 정렬한 탐지 결과
기준 90% → 1개 탐지(맞음)  정밀도 1/1 = 1.00, 재현율 1/15 = 0.07
기준 85% → 2개 탐지(맞음)  정밀도 2/2 = 1.00, 재현율 2/15 = 0.13
   ⋮
기준 최저 → 10개 탐지(7개 맞음) 정밀도 0.70, 재현율 7/15 = 0.47

AP와 mAP

PR 곡선은 한눈에 보기엔 좋지만 두 모델을 숫자로 비교하기 어렵다.

지표계산의미
AP(Average Precision)PR 곡선을 단조 감소하도록 보정한 뒤 곡선 아래 넓이한 클래스에 대한 탐지 성능을 숫자 하나로
mAP(mean AP)클래스별 AP의 평균여러 클래스를 탐지하는 모델 전체 성능

COCO 벤치마크는 IoU 기준을 0.5부터 0.95까지 0.05 간격으로 바꿔 가며 구한 mAP의 평균(mAP@[.5:.95])을 쓴다. 논문에서 mAP를 볼 때는 어떤 IoU 기준인지 함께 확인한다.

정리

  • 모든 분류 지표는 혼동 행렬의 TP·FP·FN·TN에서 나온다.
  • 정밀도와 재현율은 맞바뀌므로 함께 보고, 오류 비용에 따라 우선순위를 정한다.
  • 불균형 데이터에서는 정확도를 믿지 말고 F1이나 PR 곡선을 본다.
  • ROC AUC는 임계값과 무관한 순위 능력을 재지만, 양성이 아주 드물면 PR AUC가 더 정직하다.
  • 회귀는 MAE·RMSE·MAPE·R² 중 오차의 비용 구조에 맞는 것을 고른다.
  • 객체 탐지는 IoU로 정답 여부를 가르고 AP·mAP로 성능을 요약한다.
  • 지표를 고르는 일은 "어떤 실수가 더 비싼가"를 정하는 일이다.

관련 노트: 머신 러닝 기초: 네 단계 추상화, 퍼셉트론과 다층 퍼셉트론, 불확실한 지식으로 추론하기: 베이지안 분류기와 퍼지 추론, 예측형 AI와 생성형 AI

원본 기록3

댓글

GitHub 계정으로 댓글을 남길 수 있어요.