모델이 내놓은 확률값이 실제 발생 빈도와 맞도록 조정하는 작업이다. “확률 0.7 이라고 예측한 사례들을 모아 보면 실제로 그중 약 70% 가 양성” 이면 잘 보정된 것이다.

분류 정확도가 높은 것과 확률이 맞는 것은 다른 문제다. 모든 양성에 0.55, 모든 음성에 0.45 를 주는 모델은 정확도가 완벽해도 확률값은 쓸모없다. 반대로 순위는 잘 매기지만 값 자체는 한쪽으로 쏠린 모델도 흔하다.

언제 확률값이 필요한가

순위만 필요한 작업(검색 결과 정렬 등)에는 보정이 없어도 된다. 확률값을 다른 수와 곱하거나 임계값과 비교해야 할 때 문제가 된다.

  • 광고 입찰: 예상 클릭률 × 입찰가 로 기댓값을 계산한다. 클릭률이 실제보다 부풀려져 있으면 그만큼 과다 입찰한다
  • 의사결정 임계값: “확률 0.3 이상이면 검사한다” 같은 규칙은 0.3 이 실제 확률일 때만 뜻이 있다
  • 모델 여러 개의 출력을 합칠 때: 서로 다르게 치우친 확률을 평균 내면 결과가 왜곡된다

무엇이 확률을 틀어지게 하나

로지스틱 회귀는 손실 함수 자체가 확률을 맞추도록 되어 있어 비교적 잘 보정된 편이다. 반면 부스팅 계열은 마진을 키우는 방향으로 학습하다 보니 확률이 0 과 1 쪽으로 밀리고, 나이브 베이즈는 특징 간 독립 가정 때문에 극단으로 치우친다. 깊은 신경망은 학습 데이터를 거의 완전히 맞출 때까지 훈련하면서 과한 확신을 갖게 되는 쪽으로 알려져 있다.

데이터를 리샘플링해 클래스 비율을 인위적으로 맞춘 경우에도, 학습 시 비율과 실제 비율이 달라 확률이 통째로 어긋난다.

보정 방법

검증용 데이터를 따로 떼어 두고, 모델 출력을 실제 빈도에 맞추는 함수를 그 위에서 학습한다. 학습에 쓴 데이터로 보정하면 이미 과하게 맞춰진 출력을 기준으로 삼게 되어 의미가 없다.

방법방식
Platt scaling모델 출력에 로지스틱 함수를 한 겹 씌워 두 개의 파라미터만 학습한다. 데이터가 적을 때 안정적이다
isotonic regression단조 증가만 지키는 계단 함수를 자유롭게 학습한다. 유연한 대신 데이터가 적으면 과적합한다
temperature scaling신경망의 logit 을 스칼라 로 나눈 뒤 softmax function 을 적용한다. 파라미터가 하나라 순위를 전혀 바꾸지 않는다

보정 정도는 예측 확률을 구간별로 묶어 실제 비율과 비교하는 reliability diagram 이나, 그 차이를 하나의 수로 요약한 expected calibration error (ECE) 로 본다.