본문 바로가기
Data Science/Statistics

부트스트랩(+배깅) 리샘플링 개념 정리

by Queen2 2023. 1. 1.
728x90
반응형

오늘은 부트스트랩과 리샘플링의 개념을 알아보겠습니다.

 

부트스트랩이란?

부트스트랩은 리샘플링 방법의 일종으로, 현재의 표본에서 추가적으로 표본을 복원추출하는 방법입니다.

복원추출이라는 말이 어렵다면 간단히 주머니에서 공을 꺼냈다가, 공을 빼지 않고 다시 주머니에 넣어서 그 다음에 공(표본)을 다시 추출하는걸 상상해보면 됩니다. 즉, 뽑았던걸 다시 뽑음 = 중복돼서 뽑음 = 복원추출하면서 리샘플링하는 방법이 부트스트랩인거죠.

[ 부트스트랩 재표본추출 과정]

1. 샘플 복원추출 n 번 반복
2. 재표본 추출된 값의 평균 기록
3. 1-2단계 m번 반복
4. m개의 결과를 기반으로 표준편차, 신뢰구간 탐색, 가설검증 수행

 

그렇다면 부트스트랩의 목적은 뭘까요? 데이터사이언스를 위한 통계 책에서는 부트스트랩의 목적이 '표본의 크기가 작은 것은 보완하기 위함이 아니다'라고 주의사항을 명시해뒀는데요. 이렇게 명시한 이유는 부트스트랩의 목적은 표본 추출 본연의 목적과 마찬가지로 샘플링을 통한 모집단에 대한 통계를 추정하기 위함을 강조하기 위해서입니다.

 

 

Source: Trist'n Joseph

부트스트랩의 가장 큰 특징은 데이터가 정규분포를 따른다는 일반적인 통계적 가설을 사용하지 않는건데요. 이렇게 모수에 대한 가정을 하지 않고 추정을 하기 때문에 부트스트랩을 '비모수 추정'이라고 부릅니다. 이러한 접근 방식이 중요한 이유는 데이터를 다룰 때, 현실에서는 데이터의 크기가 작거나, 데이터의 분포가 편향되어 있거나, 모수의 분포를 가정하기 어려운 상황이 많기 때문입니다! 이때 하나의 효과적인 방법으로 사용될 수 있는게 부트스트랩입니다.

 


배깅(Bootstrap Aggregating)이란?

부트스트랩을 다뤘으니 빠질 수 없는 개념이 부트스트랩을 활용한 배깅(Bootstrap Aggregating)입니다.

머신러닝에서 앙상블 모델을 만드는 메인 방법 중 하나로, 부트스트랩 방식을 통하여 샘플 추출을 여러번 추출해 모델을 적용하고, 각 결과값을 조합하여 최종 결과를 예측하는 방법입니다.

 

배깅을 사용하면 머신러닝 모델의 안정성 ,정확도를 향상시키고 데이터의 분산을 감소시켜 모델의 오버피팅(과적합)을 줄여주는 효과가 있습니다. 대표적인 예시가 아래 그림에 나타난 랜덤포레스트 모델입니다. 주어진 데이터셋에서 부트스트랩 방식으로 여러번 랜덤 샘플링을 하고 > 각 샘플에 결정트리모델 통해 예측하고 > 예측값을 보팅(평균 혹은 가장 정확도가 높은 값)해서 최종값을 도출하는게 랜덤포레스트 모델입니다.

source: wikipedia

 


재표본추출(Resampling)이란?

돌고 돌아서 리샘플링이 뭔지 알아보겠습니다. 간단하게 보면 리샘플링은 영어 뜻과 마찬가지로 => 데이터를 반복해서 표본추출하는 과정을 의미합니다. 부트스트랩을 포괄하는 좀 더 큰 개념으로 볼 수 있는데요. 

 

Resampling 방법 예시)

홀드아웃 검증, k-fold검증, 부트스트랩, 오버샘플링, 언더샘플링 등등

 

 

이렇게 리샘플링 방법에는 여러가지 방법이 있지만, 각각의 방법을 살표보기 보다는 왜 리샘플링이 필요한지 살펴보겠습니다. 리샘플링은 우리가 만든 모델이 robust (여러 형태의 데이터 분표에도 효과적으로 잘 적용되는 =데이터에 따라 모델 성능이 달라지지 않는) 하게 작동될 수 있도록 하는데에 의의가 있습니다.

 

모델 훈련시, 주어진 표본 데이터를 그대로 사용하면 현재 주어진 훈련 데이터의 분포에 맞춤화된 = 과적합된 모델이 나올 가능성이 높습니다. 이런 경우, 훈련 데이터와 다른 실험 데이터를 사용하면 모델의 성능이 급격히 떨어지는 현상이 발생합니다. 훈련데이터에만 잘 적용하고 실제 써 먹을 수 없는 모델은 우수한 모델이라고 볼 수 없겠죠 ? 이 때문에 머신러닝 모델을 만들 때는 주어진 훈련 데이터를 쪼개서(리샘플링) => 다양한 형태의 데이터 분포를 기반으로 훈련된 robust한 모델을 만들고자 합니다.

 

부트스트랩은 머신러닝의 회귀나 분류 모델을 만들때 사용될 수 있는 효과적인 리샘플링 방법인 거죠 :)

 

728x90
반응형

댓글