← 문제 목록/Out-of-Bag 인덱스
문제 해설

Out-of-Bag 인덱스

앙상블 · easy

preview

Out-of-Bag (OOB) 인덱스

56번 Bootstrap 은 복원추출로 n 개를 뽑습니다. 큰 nn 에서 원본의 약 36.8% 는 한 번도 뽑히지 않음 — 이게 Out-of-Bag (OOB) 샘플:

P(i not drawn)=(11n)nne10.368P(i \text{ not drawn}) = \left(1 - \frac{1}{n}\right)^n \xrightarrow{n \to \infty} e^{-1} \approx 0.368

왜 유용한가

  • Bagging/Random Forest 에서, 샘플 ii 가 OOB인 모델들의 예측만 모아서 ii 를 평가 → 공짜 validation set.
  • n 개 모델이 있으면 평균 n × 0.368 ≈ 0.37n 개 모델이 각 ii 에 대해 OOB.
  • cross-validation 없이도 일반화 성능 추정 가능.

과제

함수 oob_indices(n, seed) 를 완성하세요.

  1. 내부적으로 bootstrap indices 하나 생성 (default_rng(seed).integers(0, n, size=n)).
  2. 원본 인덱스 [0, n) 중 bootstrap 에 안 들어간 것들 정렬된 배열로 반환.
  • 반환: np.ndarray[int] (1D), 정렬됨. 비어 있을 수 있음 (작은 n).
  • 힌트: np.setdiff1d(np.arange(n), boot).

테스트 케이스

#이름검증
11D 정수 배열
2OOB ⊂ [0, n)
3OOB + bootstrap 고유값 = [0, n)setdiff 관계
4n=1000 → OOB 비율 ≈ 0.368 ± 0.03
5시드 재현성
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.