
v1 OOB mask 는 한 부트스트랩의 OOB 인덱스. Random Forest 실제 활용: 각 샘플 에 대해 를 학습에 쓰지 않은 트리들만 골라 예측 → 평균 → "공짜 validation" 이 완성됨.
입력:
sample_indices_matrix shape (B, n): 개 bag 의 훈련 인덱스 (각 행).tree_preds shape (B, n): 각 tree 가 전체 훈련 X 에 대해 예측한 회귀값.처리:
for i in range(n):
oob_trees = [b for b in range(B) if i not in sample_indices_matrix[b]]
oob_pred[i] = mean(tree_preds[b, i] for b in oob_trees)
효율적 구현은 OOB 마스크 행렬을 한 번에 만들어 masked average.
nan 반환.y - oob_pred 의 MSE = 별도 val set 없는 일반화 추정.RandomForestRegressor(oob_score=True).oob_prediction_ 이 바로 이 값.함수 oob_predictions(sample_indices_matrix, tree_preds) 를 완성하세요.
(n,) 부동소수점 배열.np.nan.B, n = tree_preds.shape
oob_mask = np.ones((B, n), dtype=bool)
for b in range(B):
oob_mask[b, sample_indices_matrix[b]] = False
counts = oob_mask.sum(axis=0) # (n,)
sums = (oob_mask * tree_preds).sum(axis=0)
| # | 이름 | 검증 |
|---|---|---|
| 1 | 반환 shape (n,) | |
| 2 | 모든 트리에서 OOB 인 샘플 → 전체 tree_preds 평균 | |
| 3 | 샘플이 한 bag 에만 포함 → 나머지 B-1 트리 평균 | |
| 4 | 모든 bag 에 포함된 샘플 → nan | |
| 5 | B=1, n=1, bag 에 포함 → nan | |
| 6 | OOB error 계산 가능 (유한) | |
| 7 | 큰 B (여러 bag) 에서 nan 없음 | 높은 확률적 |
코드를 작성하고 Run 을 눌러보세요.