28.4 분자·재료 생성과 역설계

실습 · 연습문제 1개

예측 모델 착취를 수치로 재기 optimizer-curse

생성·최적화로 만든 후보들의 예측 물성 pred와 (검증으로 얻은) 참 물성 true가 있다. 예측값을 기준으로 상위 kk개를 "유망 후보"로 고를 때, 그 후보들에서 예측이 참보다 얼마나 낙관적인지를 재는 함수 selection_bias(pred, true, k)를 완성한다.

bias=1k∑i∈top-k(predi−truei).\text{bias} = \frac{1}{k}\sum_{i \in \text{top-}k} \big(\text{pred}_i - \text{true}_i\big).

여기서 top-kk는 예측값 pred가 큰 상위 kk개의 인덱스다(참값 기준이 아니다). 반환값은 이 평균 낙관 편향(스칼라)이다.

인자 의미
pred (N,) 후보들의 예측 물성
true (N,) 후보들의 참 물성
k 상위 몇 개를 고를지

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

  • 예측이 참과 같으면(완벽한 모델) 편향이 0이다.
  • 예측에 상위에서 더 큰 양의 오차가 있으면(모델이 높은 값에서 과신) 편향이 양수다.
  • 예측을 기준으로 뽑으므로, 같은 오차라도 무작위로 뽑을 때보다 편향이 크다(optimizer's curse).

힌트: np.argsort(pred)[::-1][:k]로 예측 상위 kk개의 인덱스를 얻는다.