Posts 예측이 4배 정확한 모델이 판정은 더 나빴다 — 지표와 용도의 불일치
Post
Cancel

예측이 4배 정확한 모델이 판정은 더 나빴다 — 지표와 용도의 불일치

두 모델, 반대 방향을 가리키는 두 숫자

시계열 예보 모델 두 개를 같은 하드웨어, 같은 양자화 조건에서 비교했다. 둘 다 과거 120초 창을 보고 30초 앞을 예측한다. 예측값은 이상 검출기로 들어가서 “정상 범위를 벗어났는가”를 판정한다.

 예측 오차 (nMAE)이상 검출 판정 통과율
모델 A0.0593 (3.9배 정확)82.0%
모델 B0.232399.0%

예측이 4배 정확한 모델이 판정에서는 17%p 나빴다.

처음에는 환경 차이나 노이즈를 의심했다. 아니었다. 두 모델의 실패 시나리오가 하나도 겹치지 않았고, 212라운드 전 구간에서 결정론적이었다. 간헐 실패 0건, 재시도 0건.

결론부터 말하면 두 지표가 본질적으로 다른 것을 재고 있었다.

검출기는 예측의 3분의 1만 쓴다

예측 결과가 검출기로 넘어가기 전에 두 가지 후처리가 있다. 이걸 확인하는 데 대부분의 시간이 들었다.

① 겹치는 예측을 되깔 때 나중 값이 이긴다

모델은 30스텝(h=1~30) 앞을 예측하는데, 슬라이딩 stride는 10이다. 즉 10스텝 뒤의 윈도우가 앞 윈도우의 예측을 덮어쓴다. 실제로 사용되는 분포를 재봤다.

1
2
h1~h10   → 100.0%
h11~h30  →   0.0%

h=11~30은 전혀 쓰이지 않는다.

그런데 모델 B의 오차는 64%가 h16~30에 몰려 있었다(h30/h1 = 3.75배). 모델 A는 평탄했다(1.10배). 즉 nMAE는 모델 B에게 검출기가 절대 보지 않는 구간의 오차로 벌점을 주고 있었다.

검출기가 실제로 쓰는 h=1에서만 비교하면 격차가 3.9배가 아니라 1.56배로 줄어든다.

② 블록 평균이 노이즈를 지운다

되깐 예측을 10행씩 평균 내서 검출기에 넣는다. 평균은 zero-mean 노이즈는 상쇄하지만 bias는 그대로 남긴다.

 평균 전 미탐율평균 후 미탐율개선
모델 B27.45%1.02%27배
모델 A7.86%6.80%1.16배

모델 B의 오차는 양자화에서 온 노이즈성이라 평균으로 거의 소거되고, 모델 A의 오차는 systematic이라 평균을 통과한다. 방향성 지표도 일치했다. 모델 A가 정상 범위 안쪽으로 더 강하게 수축했는데, 안쪽 수축은 평균을 내도 그대로 미탐으로 남는다.

재현

실제 파이프라인을 그대로 재현해서 다시 재봤다.

측정 방식모델 A모델 B우세
nMAE (h1~30 균등)0.05930.2323A
미탐 — 원시 30스텝7.86%27.45%A
미탐 — 실제 파이프라인6.80%1.02%B
실제 장시간 판정 통과율82.0%99.0%B

실제 파이프라인을 재현하니 모델 B의 미탐이 A의 1/6.7로, 운영 결과와 방향이 정확히 맞았다.

어긋나는 축이 셋이다

 nMAE가 재는 것검출이 요구하는 것
예측 지평h1~30 균등 가중h1~10만 (나머지 폐기)
오차 성격노이즈·bias 동일 벌점평균 후 → bias만 문제
대상전체 채널 평균임계를 넘는 소수 채널

여기에 하나 더 있다. nMAE는 대칭이고 검출은 방향성이다.

  • nMAE는 |예측 − 실제|다. 정상 범위 바깥으로 틀리든 안쪽으로 틀리든 같은 벌점
  • 검출은 “범위를 넘느냐”다. 바깥으로 틀리면 검출은 살아 있고, 안쪽으로 틀려야 미탐이 된다

그리고 오차가 하필 판단이 필요한 채널에 몰려 있느냐가 갈린다. 모델 A는 오차가 이상 발생 채널에 3.22배 쏠려 있었고 모델 B는 1.54배로 고르다. 모델 A는 절대값으로는 정확한데 가장 중요한 곳에서 상대적으로 가장 나빴다.

그래서 무엇을 믿는가

질문
nMAE가 틀렸나아니다. 모델 B의 예측이 실제로 나쁜 게 맞다
그런데 왜 판정은 좋나nMAE가 재는 것과 판정이 요구하는 것이 다르다
어느 쪽을 믿나용도에 따라. 예측값 자체를 표시·전송에 쓰면 nMAE, 검출 판정만 쓰면 통과율

모델 승격 게이트는 최종 판정 지표여야 한다.

근거가 하나 더 있다. 모델 A의 실패 18종을 오프라인 난이도로 순위 매기면 중앙값이 100분위 중 35위다(무작위면 50). 반면 모델 B의 유일한 실패는 오히려 평균보다 쉬운 축(60위)이고 nMAE도 통과 평균보다 낮았다. 같은 케이스에서 모델 A는 통과했다.

다만 같은 모델 안에서는 상관이 있다

모델 A의 실패 18종은 nMAE 기준 상위 37% 안에 전부 들어간다(중앙 순위 14/100). 즉 같은 모델 안에서 위험한 케이스를 짚어내는 데는 nMAE가 쓸모 있다. 모델 간 우열만 최종 판정으로 가려야 한다.

부수적으로 드러난 것

stride=10 + horizon=30 + 나중 값 우선 조합 때문에 h11~30이 전부 폐기된다. 30초 앞을 보려고 학습한 모델인데 실제로는 10초 앞까지만 쓰인다. 예측 능력의 3분의 2가 버려지고 있었다.

의도된 설계인지 확인이 필요했다. 만약 30초 예측을 실제로 쓰려면 stride를 30으로 두거나 되깔기를 먼저 값 우선/평균으로 바꿔야 하는데, 그러면 모델 B의 약점(뒤쪽 지평 오차)이 그대로 노출되어 지금의 99%가 유지되지 않을 가능성이 크다.

현재의 좋은 판정 결과가 후처리의 우연한 성질에 기대고 있다. 이걸 모른 채로 stride를 “개선”하면 성능이 이유 없이 떨어진다.

남은 규칙

이 건에서 얻은 것을 정리하면 이렇다.

  1. 모델을 고르는 숫자는 모델이 실제로 쓰이는 방식으로 재야 한다. 중간 후처리가 예측의 일부만 쓰거나 성질을 바꾸면, 원시 지표는 다른 것을 잰다.
  2. 오차의 크기만큼 성격(노이즈냐 bias냐)과 방향(안쪽이냐 바깥이냐)이 중요하다. 대칭 지표는 이 둘을 지운다.
  3. 전체 평균 지표는 “임계를 넘는 소수”가 중요한 태스크에서 특히 오도한다.
  4. 두 지표가 반대를 가리키면 둘 중 하나가 틀린 게 아니라, 둘이 다른 질문에 답하고 있을 가능성을 먼저 본다.
This post is licensed under CC BY 4.0 by the author.