부트 스트랩 샘플링 (Bootstrap Sampling) 방법과 그 scikit-learn을 이용한 실행

Bootstrap Sampling이란?



모집단이 되는 데이터가 있을 때, 모집단으로부터 중복을 허가하여 랜덤하게 약간 데이터를 꺼내 재표본화를 하는 수법.

구체적인 예:



모집단을 $X={x_1,x_2,...,x_{10}}$로 한다.
1. 재표본화를 실시하는 횟수와, 재표본화된 샘플의 샘플 사이즈를 설정한다(예에서는 재표본화를 3회, 샘플 사이즈를 5로 둔다)
2. 모집단 $X$에서 중복을 허용하고 랜덤하게 샘플링을 한다
예:
$X_1=x_1,x_3,x_3,x_6,x_9$
$X_2=x_2,x_2,x_2,x_3,x_7$
$X_3=x_2,x_4,x_5,x_8,x_8$

기계 학습에서 Bootstrap sampling



Bagging이라고 불리는 앙상블 학습 방법은 먼저 모집단에서 Bootstrap sampling을 통해 여러 샘플을 추출합니다. 그런 다음이를 훈련 데이터로 사용하여 여러 예측 모델을 생성하고 이러한 예측 모델을 몇 가지 방법으로 결합하여 다수결, 평균 및 출력을 메타 특징 량으로 사용하여 새로운 예측 모델 구축, etc. .), 예측 정밀도의 향상, 과학습의 회피를 전망할 수 있다. 


scikit-learn을 사용한 Bootstrap



'Bootstrap sklearn'이라든지 구그하면 대체로 공식 문서가 맨 위에 나와 sklearn.cross_validation.Bootstrap (내 환경에서는 원래 sklearn.cross_validation 속에 sklearn.cross_validation 를 찾을 수 없고 import조차 할 수 없었다)
그렇다면 대신 Bootstrap를 사용하여 Bootstrap sampling을 사용하십시오.

bootstrap.py
from sklearn.utils import resample
# [0,1,2,...,9]と[10,11,12,...,19]の生成
data_x = [i for i in range(10)]
data_y = [i+10 for i in range(10)]

# K:再標本化の回数 SIZE:再標本化されたもののサンプルサイズ
K = 10
SIZE = len(data_x)

# bootstrap sampling
for i in range(K):
    resampled_data_x, resampled_data_y = resample(data_x,data_y, 
                                                   n_samples = SIZE)
    print("------%d resample ------"% i)
    print(resampled_data_x)
    print(resampled_data_y)

output
------0 resample ------
[4, 6, 0, 9, 7, 5, 0, 5, 3, 3]
[14, 16, 10, 19, 17, 15, 10, 15, 13, 13]
------1 resample ------
[5, 2, 6, 4, 5, 1, 1, 3, 1, 1]
[15, 12, 16, 14, 15, 11, 11, 13, 11, 11]
------2 resample ------
[0, 3, 0, 1, 2, 1, 7, 7, 1, 3]
[10, 13, 10, 11, 12, 11, 17, 17, 11, 13]
------3 resample ------
[1, 8, 1, 0, 2, 8, 3, 8, 4, 0]
[11, 18, 11, 10, 12, 18, 13, 18, 14, 10]
------4 resample ------
[3, 1, 6, 7, 6, 6, 4, 3, 1, 1]
[13, 11, 16, 17, 16, 16, 14, 13, 11, 11]
------5 resample ------
[3, 4, 6, 6, 9, 7, 3, 1, 4, 3]
[13, 14, 16, 16, 19, 17, 13, 11, 14, 13]
------6 resample ------
[6, 7, 1, 3, 6, 4, 8, 9, 9, 9]
[16, 17, 11, 13, 16, 14, 18, 19, 19, 19]
------7 resample ------
[9, 8, 3, 2, 6, 2, 0, 9, 4, 1]
[19, 18, 13, 12, 16, 12, 10, 19, 14, 11]
------8 resample ------
[0, 9, 2, 7, 4, 6, 0, 6, 8, 8]
[10, 19, 12, 17, 14, 16, 10, 16, 18, 18]
------9 resample ------
[5, 9, 9, 1, 3, 7, 7, 3, 6, 3]
[15, 19, 19, 11, 13, 17, 17, 13, 16, 13]
sklearn.utils.resample 메소드는 재 표본화 된 샘플의 샘플 크기를 resample에 전달해야합니다. (기본값은 입력 데이터 길이 n_samples)
출력을 확인하면, len(array)data_x가 대응한 상태에서 재표본화되어 중복이 허용되고 있는 것을 알 수 있다.

참고



scikit-learn data_y 메서드 문서 ( h tps : / / s shiki t ぇ 아 rn. 오 rg/s타 bぇ/모즈ぇs/게네라테 d/skぇ아 rn. 그중 ls. 레사 mpぇ. HTML )
朱鷺의 杜Wiki "바깅"( ht tp // // 코끼리 s 흠뻑 st. rg / 어서 x. php? % 3 % 83 % 90 % 3 % 82 % 3 % 83 % B3 % 3 % 82 % B0 )

좋은 웹페이지 즐겨찾기