개발로그필름
[ML] 부트스트랩(복원추출) 본문
728x90
반응형
SMALL
반응형
1. 부트스트랩이란?
하나의 데이터셋에서 복원추출을 여러 번 수행해, 새로운 표본 데이터를 만드는 방법
“데이터를 뽑고, 다시 넣고, 또 뽑는 방식”
이 방식은 특히 앙상블 학습 중 ‘배깅(Bagging)’ 에서 아주 중요하게 사용됨
2. 비유로 이해해 보기
- 주머니 안에 동전 5개(A, B, C, D, E) 가 있다
- 이 중에서 5개를 무작위로 뽑되, 한 번 뽑은 동전은 다시 집어넣는다
- 예를 들면: B → A → B → E → C 이렇게 될 수 있다
-> 즉, 어떤 동전은 여러 번 뽑히고, 어떤 동전은 한 번도 안 나올 수도 있다
3. 복원추출 vs 비복원추출
방식 | 설명 | 예시 |
복원추출 (부트스트랩) | 뽑은 뒤 다시 넣는다 | A → B → A → A → E |
비복원추출 | 뽑은 건 다시 안 넣는다 | A → B → C → D → E |
부트스트랩에서는 항상 복원추출을 사용
4. 왜 부트스트랩을 쓸까?
(1) 각 모델이 서로 다른 버전의 데이터를 학습하게 하기 위해
- 원본 데이터를 그대로 복사해서 학습시키면 모델들이 너무 똑같이 배운다
- 부트스트랩으로 약간씩 다른 데이터셋을 만들어주면, 각 모델이 서로 다른 관점으로 학습함 → 앙상블 효과 상승
(2) 데이터가 작아도 표본을 늘리는 효과
- 데이터가 작아도 중복을 허용해서 충분한 크기의 학습 데이터를 만들 수 있다
- 원래 데이터셋의 수가 100개면 부트스트랩으로 만든 표본도 100개이지만
- 그 안에 중복된 값이 많아지고, 빠진 값도 생김 → 다양성 확보
5. 확률적으로 무슨 일이 일어날까?
“전체 n개에서 n번 복원추출하면, 평균적으로 약 36%는 한 번도 뽑히지 않는다”
계산
- 특정 샘플이 한 번도 안 뽑힐 확률 =
- 이 값은 n이 커질수록 → 약 0.368 (≈ 36.8%)로 수렴
즉, 원래 데이터 중 약 1/3은 부트스트랩 표본에 포함되지 않는다
6. OOB (Out-Of-Bag)란?
부트스트랩으로 한 번도 선택되지 않은 샘플들
✔️ 이걸 검증용(테스트용) 데이터로 사용해 모델의 성능을 평가할 수 있다 (마치 교차검증처럼!)
예: 랜덤 포레스트는 OOB 데이터를 자동으로 활용해 정확도를 측정
7. 예제
원본 데이터: A, B, C, D, E
→ 부트스트랩 샘플: B, C, C, E, B
→ OOB 데이터: A, D
- 학습은 [B, C, C, E, B]로 하고
- 검증은 [A, D]로 평가하는 방식
정리
항목 | 내용 |
정의 | 복원추출로 샘플링하여 새로운 표본 생성 |
목적 | 다양성 확보, 데이터 확장, 과적합 방지 |
장점 | 작은 데이터로도 다양한 학습 가능 |
OOB | 부트스트랩에서 빠진 데이터를 검증용으로 사용 |
36% 법칙 | 평균적으로 약 1/3은 한 번도 뽑히지 않음 |
부트스트랩은 원본 데이터에서 복원추출하여 표본을 만드는 방법
앙상블 모델(특히 배깅)에서 각 모델이 다른 데이터를 학습해서 성능을 높이고 과적합을 줄이는 핵심 기술
반응형
LIST
'ML' 카테고리의 다른 글
[ML] 결정트리 단일 모델과 배깅(Bagging) 앙상블 모델을 비교 (0) | 2025.05.27 |
---|---|
[ML] stratify 옵션 이해하기 (0) | 2025.05.26 |
[ML] 앙상블이란? (0) | 2025.05.25 |
[ML] 결정트리회귀란? (0) | 2025.05.24 |
[ML] 결정나무의 주요 특징 (0) | 2025.05.24 |
Comments