Bootstrap (부트스트랩)은 데이터 내에서 반복적으로 샘플을 사용하는 resampling 방법 중 하나이다.
다른 resampling 방법인 K-Fold Cross Validation은 다음 글에서 자세히 확인할 수 있다.
Bootstrap을 이해하기 전에, 장화의 손잡이 부분을 의미하는 bootstrap이라는 단어가 왜 사용되었는지 그 기원이 재미있다. The Adventures of Baron Munchausen(바론의 대모험)이라는 책을 보면 주인공 바론이 늪에 빠지게 되는데 이때 자신의 장화 끝 단(bootstrap)을 잡아 올라 스스로 늪에서 빠져나오는 장면이 나온다. 사실 작용 반작용의 법칙에 따라 불가능한 일이지만 논리는 차치하고, 이 일화처럼 스스로를 구해낸다는 뜻으로 bootstrap이라는 단어가 사용되었다. 실제로 bootstrap sampling이 보이는 결과를 보면 의미가 꽤나 잘 맞는다는 것을 알 수 있다.
참고로, 개발자가 되기 위해 다양한 교육과정이 있는데 국비지원이 가능한 곳도 몇 곳이 있으니 코딩에 관심이 있다면 지원해보는 것도 커리어에 도움이 된다. 공고 기회가 있을때 확인해보시길 바란다.
Bootstrap sampling 사용하는 이유
Bootstrap sampling을 하면 애초에 한 개 밖에 없었던 우리들의 sample data set을 n개의 sample data set을 가지고 있는 것과 같은 효과를 누릴 수 있게 한다. 이를 통해 우리는 data의 variance를 상당히 잘 근사 할 수 있는 결과를 볼 수 있다.
Bootstrap sampling 하는 방법
Bootstrap sampling을 하는 방법은 매우 간단하다. N개의 sample data를 가지고 있을 때 1000개의 bootstrap samples를 만들고자 하면, 복원 추출을 N번 실행하여 새로운 sample data set을 만들고 이 작업을 1000번 반복하면 된다.
아래 그림은 N=3인 original data로, N번의 복원 추출을 각각 시행하여 총 B개의 bootstrap data set을 만든 것을 볼 수 있다.
Bootstrap sampling 특징
우리가 가진 original data set은 모집단의 표본으로, 실제 모집단을 추정하는 estimated population이라고 볼 수 있다. Estimated population에서 bootstrapping을 수행하면 실제 population에서 random sampling한 실제 데이터와 매우 비슷한 분포를 보이는 것을 볼 수 있다. 나의 샘플 데이터 셋에서 복원 추출한 데이터 셋들이 실제 모집단에서 추출한 데이터 셋들과 비슷하다는 놀라운 결과이다.
아래 주황색 그림은 실제 모집단에서의 샘플들의 분포이고, 파란색 그림은 bootstrapping한 샘플들의 분포이다. 두 분포가 상당히 비슷한 것을 볼 수 있다. 이러한 특징으로 인해 위에 언급한 것과 같이 data의 variance를 추정하는 데에 아주 유용하다.
또 한가지의 특징으로, bootstrap을 사용하면 중복이 허용되기에 확률적으로 sample data의 2/3 정도의 data만 사용하게 된다. 이러한 특징을 사용하여 sample data에 사용되지 않은 나머지 1/3을 validation에 사용할 수 있다.
K-Fold Cross Validation은 다음글에서 확인할 수 있다.
'IT > ML' 카테고리의 다른 글
Boosting(부스팅) 쉽게 이해하기, Adaboost 파이썬 코드 (0) | 2020.11.03 |
---|---|
의사결정트리 배깅(Bagging)과 랜덤포레스트(Random Forest) 쉽게 이해하기 (0) | 2020.11.03 |
의사결정트리(Decision Tree) 분류트리, Gini, Entropy 쉽게 이해하기 (0) | 2020.11.03 |
의사결정트리(Decision Tree) 회귀트리, pruning 쉽게 이해하기 (0) | 2020.11.03 |
Lasso 간단한 설명과 ridge, lasso 비교 (0) | 2020.10.26 |