개발로그필름

[ML] 부트스트랩(복원추출) 본문

ML

[ML] 부트스트랩(복원추출)

yuullog 2025. 5. 26. 16:19
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
Comments