데이터 전처리·연습 문제

OOB 마스크

문제 설명PROBLEM

preview

OOB (Out-Of-Bag) 마스크

Bootstrap(56번) 으로 크기 n 샘플을 만들면, 원본 인덱스 중 약 36.8% 는 한 번도 안 뽑힙니다. 이 OOB 샘플 은 별도의 validation 없이도 모델을 평가할 수 있는 공짜 holdout 입니다 — Random Forest 의 "OOB 점수" 의 정체.

과제

함수 oob_mask(n, sample_indices) 를 완성하세요.

  • n: 원본 크기.
  • sample_indices: 부트스트랩에서 뽑힌 인덱스 배열 (중복·누락 가능).
  • 반환: shape (n,) 불리언 — True 면 해당 원본 인덱스가 OOB (샘플에 없음).

힌트

mask = np.ones(n, dtype=bool)
mask[sample_indices] = False

또는 np.isin 을 반대 방향으로.

테스트 케이스

#이름검증
1shape (n,) 불리언
2샘플에 있는 인덱스 → False
3샘플에 없는 인덱스 → True
4OOB 비율 (큰 n, 기본 부트스트랩)≈ 0.368
5빈 샘플 → 모두 True
개념 노트와 실수 포인트

데이터 전처리

  • 표준화(평균 0·분산 1) vs 정규화(0~1 범위).
  • ⚠️ train 의 통계(평균/표준편차)로 test 를 변환 — test 로 fit 하면 데이터 누수.