728x90
반응형
· 부트스트랩(Bootstrap)
모수의 분포를 추정하는 방법에 있어서 강력한 방법으로 기존의 표본으로부터 추가적인 표본을 복원 추출(중복 허용)을 하여 표본에 대한 통계량을 다시 계산하는 것이다. 이러한 방법을 부트스트랩이라고 하는데, 부트스트랩은 자료가 정규분포를 따뤄야 한다는 가정을 필요로 하지 않는다. 그렇다면 이런 부트스트랩은 언제 사용하는걸까?
바로 모집단에 대한 분포의 정보가 미지(未知)일 때 신뢰 구간을 가늠하는 방법이다.
간단한 예를 들어 수십만의 데이터로 구성된 모집단으로부터 1000개의 표본을 사용한다고 할 때, 1000개로만 통계량을 계산하는 것이 아닌 1000개 내에서 추가적으로 중복을 허용하는 표본을 뽑아서 새로운 표본을 만들어 사용하는 것이다.
요약하면 다음과 같은 순서로 진행된다고 볼 수 있다.
(1) n개의 표본으로부터 m개의 중복을 허용하는 표본을 뽑는다.
(2) m개의 추출된 추가 표본의 평균을 구한다.
(3) 이렇게 평균을 구하는 과정을 총 k번 반복한다.(여기서 k는 부트스트랩의 반복 횟수가 된다.)
(4) 평균에 대한 k번의 결과를 사용하여 신뢰구간을 구하여 분포에 대한 정보를 얻을 수 있다.
· 예제
# 부트스트랩 예제
import numpy as np
import pandas as pd
import random
np.random.seed(123) # 랜덤으로 나오는 값을 항상 일정하게 나오게 하기 위한 설정
# 모집단
data1 = [] # 집단1
data2 = [] # 집단2
def rand():
for _ in range(0, 10000): # 10000개의 모집단 데이터를 생성
dt1 = random.randint(1, 100) # 여기서는 random.seed와는 별개로 랜덤하게 생성
data1.append(dt1)
dt2 = random.randint(1, 500)
data2.append(dt2)
# print(data)
rand()
dt_sample1 = random.sample(data1, 500) # 50개의 표본 샘플 샘플
dt_sample2 = random.sample(data2, 500) # 50개의 표본 샘플 샘플
print(dt_sample1[:5]) # 5개의 데이터만 뽑아본다.
data_set = pd.DataFrame()
data_set['data_1'] = dt_sample1
data_set['data_2'] = dt_sample2
print(data_set) # [500 rows x 2 columns]
diff_list = [] # 두 평균의 차이를 저장할 리스트
cycle_Num = 1000 # 1000번 반복한다.
for _ in range(cycle_Num):
boot_sample = data_set.sample(250, replace = True) # 복원(중복) 추출 허용
n = len(boot_sample) # 250
# jibdan1 = boot_sample['data_1']
# jibdan2 = boot_sample['data_2']
jibdan1_mean = boot_sample['data_1'].mean()
jibdan2_mean = boot_sample['data_2'].mean()
diff = jibdan1_mean - jibdan2_mean
diff_list.append(diff)
# print(diff_list)
# print(n)
# print(np.mean(diff_list))
# 신뢰구간
print(np.percentile(diff_list, (2.5, 97.5))) # [-214.39 -176.059]
728x90
반응형
'개념 정리' 카테고리의 다른 글
교차 검증(Cross Validation) (0) | 2021.09.25 |
---|---|
지도 학습 - Random Forest + 앙상블(Ensemble) (0) | 2021.09.18 |
지도 학습 - 의사 결정 나무(Decision Tree) (4) | 2021.08.27 |
ROC와 분류 성능 평가 지표(혼동 행렬, Confusion Matrix) (0) | 2021.08.19 |
머신 러닝(Machine Learning, 기계 학습)이란? + 종류 (0) | 2021.08.08 |