인프런 커뮤니티 질문&답변

sonysame님의 프로필 이미지

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

배깅(Bagging)과 랜덤 포레스트(Random Forest)의 이해

부트스트래핑

해결된 질문

작성

·

216

0

원본데이터 갯수가 n개이면

n_estimators=10이라고 하면, 부트스트래핑을 하면 중첩을 허용하여 n개씩 10개의 데이터 서브세트가 만들어지는건가요?

그렇다면, 213쪽에 "10000개의 데이터를 10개의 분류기가 배깅방식으로 나누더라도 각 1000개의 데이터 내에는 중복된 데이터가 있다"고 나와있는데 1000개씩 10개의 데이터 서브세트가 만들어지는게 아니라, 10000개씩 10개의 데이터 서브세트가 만들어지는것이 아닌가요?

답변 4

1

권 철민님의 프로필 이미지
권 철민
지식공유자

먼저 올린 답을 다시 수정드립니다.

머신러닝 scikit learn에서는 배깅 방식(가령 Random Forest)을 적용할 때 개별 estimator가 학습 하는 데이터 셋의 갯수가 전체 데이터 갯수/estimator의 갯수가 아니라  max_samples로 설정이 가능합니다.

max_samples 값을 설정하지 않으면 전체 데이터 건수로 개별 estimator를 학습합니다.

따라서 10000개의 전체 데이터의 10개의 estimator가 있다면 개별 estimator가 학습하는 데이터 건수는 가변적입니다.

아래 문서의 max_samples 파라미터 설명을 참조 부탁드립니다.

https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

0

sonysame님의 프로필 이미지
sonysame
질문자

감사합니다! 헷갈렸던 부분이 완전히 해결되었습니다~~

0

sonysame님의 프로필 이미지
sonysame
질문자

그러면 218페이지에는 10개의 학습 데이터 세트를 n_estimators=3으로 부트스트래핑을 할 때, 그림에서는 3개의 서브세트에 각각 10개의 데이터가 들어있는데, 그림이 잘못나온건가요?

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

bootstrapping은 원래 통계학에서 사용됩니다.

모집단의 확률 분포등의 특성을 모를 때 모집단의 일부 집합을 중복을 고려해서 추출하여 평균등을 계산하여 모집단의 특성을 파악하는 기법입니다.

이를 머신러닝에 응용을 한것이고,  모집단 전체가 아닌 일반 집합의 sampling을 중복을 고려해서 여러번 데이터를 추출합니다.  보통은 n_estimators=10이면 전체 sample이 10,000이면 10,000/10 개씩 중복을 고려하여 추출한 뒤 이들을 기반으로 학습 및 예측을 수행합니다.

설 연휴 잘 보내십시요.

sonysame님의 프로필 이미지

작성한 질문수

질문하기