1. 중심 극한 정리란?
내부 시스템을 알 수 없는 모집단 A에서 크기 \(n\)의 표본 \(k\)개 \((k_1, k_2, ..., k_N)\)를 무작위 복원 추출할 때, \(n\)과 \((k_1, k_2, ..., k_N)\)가 충분히 크다면 각 표본 평균의 분포 (sampling distribution of sample mean)는 정규 분포 (normal distribution)에 근사한다는 내용의 정리다. 이를 확률 개념으로 얘기해보면 독립 사건인 확률 변수들의 평균 분포가 정규 분포에 수렴한다는 내용이다.
중심 극한 정리를 통해 모집단 A의 각 사건 발생 확률은 정규 분포를 따르는지 알 수 없지만, 모집단 A에서 추출된 표본 \(K\)의 평균 분포를 바탕으로 하는 새로운 모집단 B를 만듦으로서 표본 \(K\) \((k_1, k_2, ..., k_N)\)를 정규 분포를 따르는 하나의 사건 집합으로 간주할 수 있다.
1.1 중심 극한 정리 실험(Python)
실제로 중심 극한 정리가 성립하는지 Python 코드를 통해 실험해보았다.
모집단 A는 +-1,000 사이의 값을 10,000번 무작위로 생성함으로 모집단 A의 분포를 확실하게 알 수 없다고 가정한다.
이 모집단 A에서 n을 30으로 고정하고 \(K\)를 증가시키며 표본 평균을 히스토그램으로 시각화 함으로써 분포의 변화를 살펴보자.
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import statistics
import random
A = np.array([random.randint(-1000, 1000) for r in range(10000)])
mean_list = []
fig, ax = plt.subplots(1,3, figsize=(12,4))
col = 0
num_k = 100
for i in range(10000):
B = np.random.choice(A, size=30, replace=True, p=None)
mean_list.append(statistics.mean(B))
if i+1 == num_k:
sns.distplot(mean_list, kde=False, ax = ax[col])
ax[col].set_title('k'+str(i+1))
num_k *= 10
col += 1
plt.show()
plt.close()
위 그래프에서 보이는 것과 같이 \(K\)가 증가할수록 표본 평균 분포가 정규 분포에 근사하는 것을 볼 수 있다.
2. 중심 극한 정리와 bootstrap
이전에 업로드 하였던 랜덤 포레트스는 bootstrap방식을 통해 트리를 학습한다. 또한 중심 극한 정리와 그 행위 자체가 완전히 같은 것을 알 수 있다.
bootstrap은 학습 데이터의 양이 부족한 상황에서 모집단 A에서 무작위 복원 추출된 표본으로 모델을 학습시키는 것을 말한다.
이 bootstrap이 통계적으로 타당하다는 근거가 바로 중심 극한 정리이다. bootstrap을 통한 bagging이 정규 분포를 따르는 모집단의 데이터를 학습했다고 볼 수 있다.
'머신러닝, 딥러닝' 카테고리의 다른 글
[ML] 피처 스케일링과 정규화(Scikit-Learn) (0) | 2022.02.21 |
---|---|
[ML] 교차 검증 (CV, Cross Validation) (0) | 2022.02.21 |
[DL] Cost Function (0) | 2022.02.15 |
[DL] 경사 하강법(Gradient Descent) (0) | 2022.02.04 |
[DL] 가중치 초기화(Weight Initialization)[파이썬/Python] (0) | 2022.02.02 |
댓글