확률을 학습하고, 기준을 정하고, 결과를 평가한다

스팸 탐지를 예로 들면, 스팸은 찾으려는 클래스인 positive이고 정상 메일은 negative다. 분류 모델은 보통 이 판정을 바로 출력하지 않는다. 먼저 각 클래스에 속할 확률이나 점수를 계산한다. 그다음 threshold(판정 기준값)를 적용해 positive와 negative를 나눈다. 예를 들어 스팸 확률이 0.7인 메일을 threshold 0.5에서는 스팸으로, 0.8에서는 정상으로 판정한다.

이 흐름에서 cross-entropy, Precision·Recall, ROC-AUC는 서로 다른 질문에 답한다. Cross-entropy는 정답에 부여한 확률을, Precision·Recall은 특정 기준에서 내린 판정을, ROC-AUC는 positive를 negative보다 높은 점수에 놓는 순서를 평가한다.

평가 대상대표 지표확인하는 것
예측 확률Cross-entropy / Log loss정답에 얼마나 높은 확률을 부여했는가
특정 threshold의 판정Accuracy, Precision, Recall, F1실제로 선택한 기준에서 무엇을 맞히고 놓쳤는가
threshold를 바꿔 가며 본 순위ROC-AUC, PR curve, APpositive를 높은 점수 쪽에 얼마나 모았는가

Loss는 학습 중 최소화하는 목적 함수이고, metric은 성능을 보고 판단하는 수치다. 같은 cross-entropy를 학습 loss로도, 검증·테스트 지표로도 쓸 수 있다. 학습 목적과 서비스의 최종 평가 기준이 반드시 같을 필요는 없다.

먼저 스팸과 정상 메일을 나누는 이진 분류로 이 흐름을 살펴본다. 최대우도와 미분을 통한 학습 원리, 다중 클래스의 학습과 평가는 뒤에서 이어서 설명한다.

Cross-entropy는 정답에 준 확률을 평가한다

정답이 positive인 샘플에 두 모델이 각각 0.51과 0.99를 예측했다고 하자. Threshold가 0.5이면 둘 다 정답이다. Accuracy만으로는 두 예측을 구별할 수 없다.

Cross-entropy는 정답에 더 높은 확률을 줄수록 작아진다. 반대로 틀린 답을 강하게 확신하면 큰 손실을 준다. 이진 분류에서는 binary cross-entropy(BCE)라고 하며, 샘플 하나에 대한 식은 다음과 같다. 이 노트의 로그는 자연로그다.

기호뜻
실제 레이블. Positive는 1, negative는 0
모델이 예측한 positive 확률. 이 식에서는
샘플 하나의 손실

정답이 1이면 첫 항만 남아 가 되고, 정답이 0이면 두 번째 항만 남아 가 된다.

실제 레이블예측 positive 확률손실해석
10.990.0101정답에 높은 확률
10.510.6733정답이지만 확신이 약함
10.014.6052오답을 강하게 확신

여러 샘플에서는 보통 손실의 평균을 사용한다.

여기서 은 샘플 수, 는 샘플 번호, 와 는 해당 샘플의 실제 레이블과 예측 확률이다. 평균 대신 합을 쓸 수도 있으므로 loss를 비교할 때는 집계 방식과 가중치도 같아야 한다.

확률을 판정으로 바꾸면 평가 기준도 달라진다

Cross-entropy는 예측 확률 자체를 평가했다. 하지만 메일을 실제로 차단하려면 그 확률에 threshold를 적용해 스팸인지 아닌지를 결정해야 한다. 이제부터는 확률의 크기 대신 그 판정으로 무엇을 맞히고 놓쳤는지를 센다.

Confusion matrix와 지표의 분모

Confusion matrix는 실제 레이블과 예측 레이블을 교차해 센 표다. 앞의 True/False는 판정이 맞았는지, 뒤의 Positive/Negative는 모델이 무엇으로 판정했는지를 뜻한다.

실제 / 예측Positive로 예측Negative로 예측
실제 positiveTP: 맞게 찾음FN: 놓침
실제 negativeFP: 잘못 검출TN: 맞게 제외

스팸 메일 20개와 정상 메일 80개가 있다고 하자. 모델이 스팸 15개를 찾고 5개를 놓쳤으며, 정상 메일 10개를 스팸으로 잘못 분류했다. 그러면 TP=15, FN=5, FP=10, TN=70이다.

지표식예제 값분모가 뜻하는 집합
Accuracy85%전체 메일
Precision60%스팸이라고 예측한 25개
Recall / TPR75%실제 스팸 20개
FPR12.5%실제 정상 메일 80개
Specificity / TNR87.5%실제 정상 메일 80개

Precision은 “스팸이라고 한 것 중 얼마나 맞았나”, Recall은 “실제 스팸 중 얼마나 찾았나”에 답한다. Precision의 분모는 모델의 선택이고, Recall의 분모는 실제 정답이다.

FPR은 Precision의 반대가 아니다. 인 반면 FPR의 분모는 실제 negative 전체다. FPR과 짝을 이루는 것은 Specificity이며 두 값의 합이 1이다.

F1은 두 비율을 묶지만 비용까지 표현하지는 않는다

F1은 Precision과 Recall의 조화평균이다.

여기서 는 Precision, 은 Recall이다. 예제에서는 이다. 두 비율 중 하나가 낮으면 산술평균보다 낮은 점수를 주며, TN은 식에 들어가지 않는다.

F1을 최대화한다고 실제 서비스 비용이 최소화되지는 않는다. 정상 메일을 차단하는 비용과 스팸을 놓치는 비용이 다르면, 각각의 비용이나 허용 가능한 오류 조건으로 threshold를 선택해야 한다. Recall을 더 강조하는 도 있지만 비용 모델을 그대로 대신하지는 않는다.

Threshold를 움직이며 판정의 변화를 본다

같은 모델이라도 threshold에 따라 Precision과 Recall이 달라진다. 변화 과정을 직접 보기 위해 메일 네 개의 예측 확률을 높은 순서로 놓아 보자. 이후 ROC와 PR도 이 예제로 계산한다.

메일실제 레이블예측 스팸 확률
A1: 스팸0.9
B0: 정상0.8
C1: 스팸0.7
D0: 정상0.1

예측 확률이 threshold 이상이면 스팸으로 판정한다. Threshold를 높은 값에서 낮춰 가면 A, B, C, D가 차례로 예측 positive에 포함된다.

Threshold스팸으로 판정한 메일TPFPRecall / TPRFPRPrecision
0.9보다 큼없음0000정의되지 않음
0.9A100.501
0.8A, B110.50.50.5
0.7A, B, C2110.5약 0.6667
0.1A, B, C, D22110.5

여기서 TP와 FP는 각각 맞게 찾은 스팸과 잘못 검출한 정상 메일의 수다. 실제 스팸과 정상 메일은 각각 두 개이므로 Recall은 TP를 2로, FPR은 FP를 2로 나눈 값이다.

같은 데이터와 점수를 고정하면 threshold를 낮출수록 예측 positive 집합이 커진다. 따라서 TP와 FP는 줄어들지 않고, Recall과 FPR도 내려가지 않는다. 반면 Precision은 새로 포함된 메일의 실제 레이블에 따라 달라진다. 위 예제에서도 threshold를 0.8에서 0.7로 낮추면 Precision이 0.5에서 약 0.6667로 올라간다.

그래서 Precision–Recall trade-off는 일반적인 경향이지, 모든 구간에서 Precision이 단조 감소한다는 뜻은 아니다. Threshold를 하나 정한 성능과 여러 threshold에 걸친 성능을 구분해야 하는 이유도 여기에 있다.

아무 샘플도 positive로 예측하지 않으면 Precision의 분모는 0이다. 실제 positive가 하나도 없으면 Recall을 정의할 수 없다. 평가 코드가 0, NaN, 경고 중 무엇을 반환하는지도 함께 확인한다.

ROC-AUC는 판정 하나가 아니라 순서를 본다

Threshold별 판정을 곡선으로 옮긴다

앞 표에서는 threshold마다 Recall과 FPR을 계산했다. 이 두 열을 좌표로 옮기면 ROC curve가 된다.

ROC curve는 threshold를 바꾸며 가로축에 FPR, 세로축에 TPR(Recall)을 찍은 곡선이다. 점 하나는 두 비율의 나눗셈이 아니라 좌표 다.

모두 negative로 판정하면 , 모두 positive로 판정하면 이다. 왼쪽 위에 가까울수록 오탐을 적게 내면서 positive를 많이 찾는다. ROC-AUC는 이 곡선 아래 면적이며, 전체 threshold 범위의 순위 성능을 요약한다.

앞의 네 메일에서 좌표는 → → → → 순서로 움직인다. 실제 스팸을 포함할 때는 위로, 정상 메일을 포함할 때는 오른쪽으로 이동한다.

세로 이동은 가로 폭이 0이므로 면적을 늘리지 않는다. 두 가로 구간의 면적을 더하면 AUC는 다. 각 곱의 첫 값은 FPR의 증가량, 두 번째 값은 해당 구간의 TPR이다.

곡선의 면적이 순위 비교와 같은 이유

정상 메일 B를 포함할 때, B보다 높은 점수의 스팸은 A 하나다. 그래서 첫 가로 구간의 높이는 다. 정상 메일 D를 포함할 때는 스팸 A와 C가 모두 위에 있으므로 높이가 가 된다.

이 예제처럼 점수에 동점이 없으면 가로 구간 하나는 negative 하나에 대응하고, 그 높이는 해당 negative보다 점수가 높은 positive의 비율이다. 모든 negative에 대해 이 비율을 평균한 값이 곡선 아래 면적이므로, 전체 positive–negative 쌍에서 순서를 맞힌 비율과 같다.

무작위로 positive 하나와 negative 하나를 골랐을 때, positive의 점수가 더 높을 확률로 ROC-AUC를 해석할 수 있다. 동점에는 절반의 점수를 준다.

여기서 와 는 각각 positive와 negative 샘플의 점수이고, 은 쌍을 뽑았을 때 해당 조건이 성립할 확률이다. 값이 클수록 positive라는 점수 방향을 가정한다.

Positive A는 negative B와 D보다 높다. Positive C는 D보다 높지만 B보다 낮다. 총 네 쌍 중 세 쌍의 순서가 맞으므로 AUC는 0.75다.

AUC 0.75는 “75%를 정확하게 분류했다”는 뜻이 아니다. 위 예제에서 threshold를 0.5로 잡으면 TP=2, FP=1, FN=0, TN=1이지만, threshold 0.85에서는 TP=1, FP=0, FN=1, TN=2다. AUC는 그대로다.

무작위 순위의 AUC는 기대값으로 0.5다. 유한 표본에서는 정확히 0.5가 아닐 수 있다. AUC가 0.5보다 낮으면 점수 방향, positive 레이블 지정, 실제 역순 학습 여부를 확인한다.

AUC가 좋아도 확률과 운영 성능은 나쁠 수 있다

점수에 엄격한 단조 증가 변환을 적용하면 순서와 동점 관계가 보존되므로 ROC-AUC가 같다. 예를 들어 모든 예측 확률을 제곱하면 순서는 같지만 확률값과 threshold 0.5에서의 판정은 달라질 수 있다. Cross-entropy도 달라진다.

Calibration은 “0.8이라고 예측한 샘플들 중 실제 positive 비율도 약 80%인가”를 뜻한다. ROC-AUC가 높다는 사실만으로 calibration이 좋다고 할 수 없다. Log loss도 calibration만 따로 측정하는 지표는 아니므로, 확률의 신뢰도가 필요하면 예측 확률 구간별 실제 비율도 함께 살핀다.

또한 전체 AUC가 높아도 실제로 사용할 낮은 FPR 구간에서 성능이 나쁠 수 있다. 오탐을 제한해야 한다면 전체 면적과 함께 “FPR 1%에서 Recall”처럼 운영할 지점을 확인한다.

불균형 데이터에서는 positive를 얼마나 믿을 수 있는가

높은 Accuracy와 낮은 FPR이 숨기는 것

ROC는 실제 positive와 negative를 각각 분모로 삼는다. 그러나 스팸으로 분류된 메일을 보는 사용자에게는 그중 얼마나 많은 메일이 정상인지도 중요하다. 이 비율은 실제 스팸이 얼마나 드문지에 영향을 받는다.

클래스 불균형은 클래스별 샘플 수가 크게 다른 상태다. Positive가 1%, negative가 99%이면 전부 negative라고 하는 모델도 Accuracy 99%다. 하지만 Recall은 0이다.

10,000개 중 positive가 100개인 데이터에서 TPR=80%, FPR=1%라고 하자. TP는 80개, FP는 99개다. Precision은 다. FPR은 작지만 예측 positive 중 절반 이상이 오탐이다.

이를 positive 비율과 연결하면 다음 식이 된다.

여기서 는 실제 positive 비율이다. 클래스별 점수 분포가 같아 TPR과 FPR이 유지되더라도 가 바뀌면 Precision은 바뀐다. 클래스 비율만 바뀌는 조건에서 ROC는 유지될 수 있지만 PR curve는 달라진다. 실제 데이터 변화가 클래스별 점수 분포까지 바꾸면 ROC도 달라질 수 있다.

PR curve와 Average Precision

Precision–Recall(PR) curve는 threshold를 바꾸며 가로축에 Recall, 세로축에 Precision을 찍는다. Positive를 더 많이 찾을 때 예측 결과의 정확성이 어떻게 달라지는지 보여준다. Positive가 드문 탐지 문제에서는 ROC와 함께 읽으면 실제 오탐 부담을 파악하기 쉽다.

Average Precision(AP)은 Recall이 증가한 양으로 Precision을 가중해 더한 값이다.

여기서 는 Recall이 증가하는 순서로 정렬한 평가 지점, 와 는 그 지점의 Recall과 Precision이며 시작 Recall은 이다. 앞의 threshold 표에서 스팸 A를 찾으면 Recall이 0에서 0.5로, C까지 찾으면 0.5에서 1로 증가한다. 그때의 Precision은 각각 1과 2/3이다. 따라서 AP는 이다.

AP와 PR curve를 사다리꼴로 적분한 면적은 일반적으로 다르다. PR-AUC라고만 적으면 계산법이 모호하므로, AP인지 사다리꼴 면적인지 함께 명시한다. 점수가 레이블과 독립인 모집단에서 PR의 기준선은 positive 비율이다. 유한 표본의 AP가 항상 그 비율과 정확히 같아지는 것은 아니다.

ROC-AUC와 AP는 보는 관점이 달라 숫자 크기만 직접 비교할 수 없다. 데이터셋 간 AP를 비교할 때도 positive 비율과 난이도가 같다는 보장이 필요하다.

평가 지표와 threshold를 함께 선택한다

최종 결정의 비용에서 시작한다

지금까지의 지표는 서로 다른 측면을 보여준다. 확률값을 사용할지, 순위가 필요할지, 특정 threshold에서 차단 여부를 결정할지에 따라 평가 기준도 달라진다.

상황확인할 지표와 조건이유
예측 확률을 기대 수익 계산에 사용Log loss, calibration확률값 자체가 의사결정에 쓰임
희귀 이벤트 후보를 사람이 검토PR curve/AP, 검토 예산에서 Precision·Recall오탐이 검토 자원을 사용
놓치는 positive를 줄여야 함Precision 또는 FPR 제약 아래 Recall전부 positive라고 하는 해법을 배제
오탐 허용량이 매우 작음낮은 FPR에서 TPR, 실제 FP 건수전체 ROC-AUC만으로 운영 지점을 알 수 없음

예측 확률이 배포 환경에서 잘 보정되어 있고, FP와 FN 비용이 샘플마다 같으며 올바른 판정 비용은 0이라고 가정하면 비용 기준 threshold를 유도할 수 있다.

여기서 는 FP 한 건의 비용, 은 FN 한 건의 비용, 는 positive 확률이며 비용은 양수다. Positive로 판정할 때의 기대 비용은 왼쪽, negative로 판정할 때는 오른쪽이다. FN 비용이 클수록 positive로 판정할 threshold가 낮아진다. 확률이 보정되지 않았거나 검토 예산 같은 추가 제약이 있으면 이 식만으로 threshold를 정할 수 없다.

평가 데이터로 기준을 반복 조정하지 않는다

  1. Train 데이터로 모델 파라미터를 학습한다.
  2. Validation 데이터나 교차검증으로 모델과 threshold를 선택한다. 필요한 calibration도 학습에 사용하지 않은 예측으로 맞춘다.
  3. 선택을 끝낸 뒤 test 데이터에서 최종 지표를 측정한다.
  4. 배포 뒤 positive 비율과 지표 변화를 관찰한다.

Test 결과를 보고 threshold를 계속 고르면 test 데이터도 선택에 사용한 셈이 된다. 시간 순서가 있는 데이터는 과거로 학습하고 미래를 평가하며, 같은 사용자나 개체가 여러 행에 나타나면 분할 사이의 정보 누출도 점검한다.

Class weighting이나 oversampling은 학습에 기여하는 클래스 비중을 바꾼다. 이때 학습된 점수를 배포 환경의 확률로 그대로 해석하기 어려울 수 있다. 평가 데이터의 실제 클래스 비율을 유지하고, 운영 threshold와 calibration을 별도로 검증한다.

Cross-entropy의 수학적 배경

앞에서는 정답에 높은 확률을 줄수록 손실이 작아진다는 성질로 cross-entropy를 이해했다. 이제 이 손실이 최대우도 추정과 어떻게 연결되고, 모델을 학습시키는 gradient는 어떻게 얻는지 살펴본다.

최대우도와 연결되는 이유

Bernoulli 분포는 0과 1 두 결과의 확률을 나타낸다. 이 분포로 이진 레이블을 모델링하면 실제로 관측한 레이블의 확률은 다음과 같다.

기호뜻
입력 특성
모델 파라미터
입력 에 대한 모델의 positive 확률
모델이 관측 레이블 에 부여한 조건부 확률

샘플들이 독립이라고 두면 데이터 전체의 우도는 이 확률들의 곱이다. 로그를 취하면 합으로 바뀌고, 음수를 붙여 최소화하면 앞의 binary cross-entropy가 된다. 따라서 이 설정에서 cross-entropy 최소화는 최대우도 추정과 같다.

Entropy와 KL divergence의 관계

Entropy는 정답 분포 자체의 불확실성이고, cross-entropy에는 예측 분포가 정답 분포와 다른 만큼의 손실이 추가된다.

여기서 는 고정된 정답 분포, 는 예측 분포다. 앞의 BCE에서 는 positive 확률 하나였지만, 이 식에서는 클래스 전체에 대한 확률 분포를 나타낸다. 는 entropy, 은 두 분포의 KL divergence다.

가 고정되어 있을 때 cross-entropy를 최소화하는 것과 KL divergence를 최소화하는 것은 같다. 두 분포가 같으면 KL divergence는 0이고, cross-entropy와 entropy도 같다.

왜 Accuracy를 그대로 loss로 쓰지 않는가

Threshold를 넘기 전까지 확률이 달라져도 정답·오답 판정은 그대로다. 그래서 Accuracy를 파라미터의 함수로 보면 대부분의 구간에서 gradient가 0이고, 판정이 바뀌는 경계에서는 불연속이다. 일반적인 gradient 기반 학습에 바로 쓰기 어렵다.

Sigmoid로 얻은 확률과 binary cross-entropy를 함께 쓰면 logit에 대한 미분이 간단해진다. Logit은 sigmoid에 넣기 전의 실수 점수다.

여기서 는 logit, 는 sigmoid, 는 예측 확률, 는 레이블, 은 가중치 없는 샘플별 BCE다. 인데 가 작으면 미분이 음수이므로 gradient descent는 를 높이는 방향으로 움직인다. 실제 구현에서는 logits를 직접 받는 loss를 쓰면 sigmoid와 로그를 따로 계산할 때 생길 수 있는 수치 문제를 줄일 수 있다.

다중 클래스의 학습과 평가

지금까지는 스팸 여부 하나를 예측했다. 클래스가 여러 개이면 정답의 구조에 맞춰 출력과 loss를 정하고, 클래스별 평가 결과를 어떻게 묶을지도 정해야 한다.

정답이 하나인지 여러 개인지에 따라 loss가 달라진다

한 샘플에 정답 클래스가 하나라면 Softmax로 클래스 확률의 합을 1로 만들고 categorical cross-entropy를 쓴다.

기호뜻
, 클래스 수와 클래스 번호
정답 클래스만 1인 one-hot 레이블
클래스 의 예측 확률
정답 클래스 번호

한 이미지에 고양이와 자동차가 함께 있는 것처럼 여러 레이블이 동시에 정답이면, 보통 레이블마다 sigmoid와 BCE를 적용한다. 이 경우 클래스 확률의 합이 1일 필요가 없다. Softmax와 sigmoid의 선택은 출력 개수보다 정답들이 서로 배타적인지에 달려 있다.

Macro, Micro, Weighted의 차이

다중 클래스에서는 클래스 하나를 positive, 나머지를 negative로 보는 One-vs-Rest 방식으로 클래스별 Precision·Recall·F1을 계산할 수 있다.

평균 방식계산해석
Macro클래스별 지표를 같은 비중으로 평균드문 클래스도 같은 비중
Weighted클래스별 실제 샘플 수로 가중 평균자주 나오는 클래스가 더 큰 비중
Micro클래스들의 TP·FP·FN을 먼저 합쳐 계산전체 판정 수 기준

각 샘플에 정답도 예측도 하나인 single-label multiclass에서 모든 클래스를 포함하면 Micro Precision = Micro Recall = Micro F1 = Accuracy다. Multilabel이거나 일부 클래스만 집계하면 이 등식은 일반적으로 성립하지 않는다. Weighted F1의 가중치는 사업적 중요도가 아니라 실제 샘플 수이며, 소수 클래스의 실패를 가릴 수 있다.

References