21.2 예측분포와 구간의 평가

실습 · 연습문제 2개

앙상블 예측의 CRPS crps-ensemble

앙상블·MC dropout·생성모델처럼 예측분포를 표본으로만 내는 모델은 밀도를 모르므로 NLL을 바로 계산할 수 없다. CRPS는 표본만으로 계산할 수 있다. 예측분포 FF에서 독립으로 뽑은 X,X′X, X'에 대해

CRPS(F,y)=E ∣X−y∣−12 E ∣X−X′∣\mathrm{CRPS}(F, y) = \mathbb{E}\,\lvert X - y\rvert - \tfrac{1}{2}\,\mathbb{E}\,\lvert X - X'\rvert

이다. 표본 x1,…,xSx_1, \dots, x_S가 있으면 두 기대값을 표본 평균으로 바꾼다.

CRPS^=1S∑i∣xi−y∣−12S2∑i∑j∣xi−xj∣.\widehat{\mathrm{CRPS}} = \frac{1}{S}\sum_{i} \lvert x_i - y\rvert - \frac{1}{2S^2}\sum_{i}\sum_{j} \lvert x_i - x_j\rvert.

함수 crps_ensemble(samples, y)를 완성한다.

인자 shape 의미
samples (S, N) 관측 NN개 각각에 대한 예측 표본 SS개
y (N,) 관측값

반환값은 관측마다의 CRPS, shape (N,)이다. 이중합은 samples[:, None, :] - samples[None, :, :]로 한 번에 계산할 수 있다(메모리 S2NS^2 N).

테스트는 다음을 확인한다.

  • 표본이 하나뿐이면 CRPS는 절댓값 오차 ∣x1−y∣\lvert x_1 - y\rvert다.
  • 가우시안 표본이 많으면 닫힌 형태(12.3장)에 가깝다.
  • 관측값을 정확히 맞힌 퇴화 분포(모든 표본이 yy)의 CRPS는 0이다.

예측 구간의 interval score interval-score

중심 (1−α)(1-\alpha) 예측 구간 [l,u][l, u]를 관측 yy로 평가하는 interval score는

Sα(l,u;y)=(u−l)+2α(l−y) 1[y<l]+2α(y−u) 1[y>u]S_\alpha(l, u; y) = (u - l) + \frac{2}{\alpha}(l - y)\,\mathbb{1}[y < l] + \frac{2}{\alpha}(y - u)\,\mathbb{1}[y > u]

이다(작을수록 좋다). 첫째 항은 구간의 폭(sharpness)이고, 나머지 두 항은 관측이 구간 밖에 떨어졌을 때 벗어난 거리에 2/α2/\alpha를 곱한 벌점이다. 이 점수는 적정 점수 규칙이다. 기대 점수를 가장 작게 만드는 구간은 예측분포의 α/2\alpha/2 분위수와 1−α/21-\alpha/2 분위수다.

두 함수를 완성한다.

  1. interval_score(lower, upper, y, alpha): 배열 lower, upper, y(같은 shape)에 대한 평균 interval score
  2. best_symmetric_halfwidth(y, center, alpha, grid): 중심을 center로 고정하고 반폭 h만 바꿀 때, 후보 배열 grid 중 평균 interval score를 가장 작게 만드는 h

테스트는 손으로 계산한 예와, 표준정규 관측에서 2번 함수의 답이 z1−α/2z_{1-\alpha/2} 근처인지 확인한다. 이 결과는 "구간을 일부러 좁히거나 넓혀서 점수를 올릴 수 없다"는 적정성의 의미다.