중심 극한 정리: 데이터 과학에서?

3740 단어
얼마 전 데이터 과학에 필요한 모든 기술에 대해 친구와 이야기하면서 우리는 "흥미로운"통계가 아니기 때문에 대화에서 일반적으로 간과되는 중요한 기술에 대해 더 깊이 들어가기 시작했습니다. 그래서 오늘은 데이터를 다룰 때 매우 중요한 통계적 개념인 중심극한정리(Central Limit Theorem)에 대해 알아보려고 합니다.

CLT(Central Limit Theorem)가 알려주는 것은 독립적인 랜덤 변수가 함께 추가될 때 이들의 정규화된 합이 정규 분포로 수렴한다는 것입니다. 따라서 이러한 용어를 빠르게 살펴보고 이것이 데이터 과학자에게 유용한 이유를 살펴보겠습니다.

독립 랜덤 변수



따라서 여기서 독립 확률 변수는 더 큰 그룹에서 무작위로 선택된 변수의 하위 집합을 나타냅니다. 한 변수의 결과가 선택한 다른 변수의 결과에 영향을 미치지 않는다는 독립성으로. 예를 들어 동전을 100번 던진 다음 10번의 결과를 임의로 선택한 경우 동전 던지기의 결과가 앞면 또는 뒷면인지 여부는 동전을 던진 횟수에 따라 달라지지 않기 때문에 10개의 독립 변수가 있습니다. .

정규 분포



데이터셋이 정상적으로 분포된 경우 대부분의 데이터가 데이터의 평균 또는 그 주변에 있을 것이며 확률이 감소함에 따라 양쪽에 균등하게 분산되어 아래와 같은 벨 커브를 생성합니다.



이러한 방식으로 데이터를 배포하면 이상값을 찾기 위한 확률 분포 및 가설 테스트와 같은 데이터에 대한 많은 통찰력을 얻을 수 있습니다.

데이터 사이언스



DS 가설 테스트에서 작업의 매우 중요한 부분입니다. 당신이 가지고 있는 데이터가 당신의 아이디어를 뒷받침할 수 있는지, 아니면 데이터가 우연히 그런 것인지 끊임없이 자문해야 합니다. DS에서 이를 수행하는 방법은 가설이 틀렸을 때(귀무 가설) 이를 뒷받침하는지 확인하는 것입니다. 따라서 30개 이상으로 제안된 데이터의 하위 집합이 있는 한 이를 수행하기 위해 데이터의 정규 분포를 생성하여 귀무 가설이 있는 위치와 입증을 위해 이를 버릴 수 있는 확률을 확인할 수 있습니다. 우리의 가설. 이것이 혼란스럽다면 사과하고 다른 블로그에서 가설 테스트를 계속하려고 노력할 것이지만, 지금은 중앙 극한 정리가 작동하는 것을 보기 위해 Python을 사용하여 몇 가지 시각적 개체로 계속 진행할 것입니다.

코딩



이 예에서는 Kaggle의 Titanic Datasethttps://www.kaggle.com/c/titanic/data에서 train.csv에 손을 뻗어 가져왔습니다.

import random
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('../../Downloads/train.csv')
df.describe()


따라서 여기서 우리는 'Age' 열에 714개 행의 꽤 많은 데이터가 있지만 'PassengerId'의 891개 행과 일치하지 않는다는 것을 알 수 있으므로 성가신 작은 'nan'을 제거해야 합니다.

data=df.dropna()


이제 평균을 잡고 데이터 분포를 살펴보겠습니다.

pop_mean=data.mean()
print(pop_mean)
plt.hist(data,bins=100);




이제 우리는 평균 연령이 30세 미만이라는 것을 알고 데이터가 오른쪽으로 치우쳐 있음을 알 수 있습니다. 이제 Central Limit Theorem을 수행하는 함수를 만들고 데이터 세트에서 30명의 샘플 100개를 추출할 때 어떤 일이 발생하는지 살펴보겠습니다.

def CLT(num_of_samples,sample_size):
    sample_means=[]
    for i in range(num_of_samples):
        sample=np.random.choice(data,size=sample_size,replace=True)
        sample_means.append(sample.mean())
    sns.distplot(sample_means, bins=80, kde=True)
    print(f'mean:{sum(sample_means)/num_of_samples}')



CLT(100,30)




와우 우리의 평균은 실제로 꽤 가깝고 데이터가 정규 분포의 모양을 갖기 시작했지만 컴퓨터의 성능이 있으므로 샘플 또는 9,900개를 더 추가해 보겠습니다.

CLT(10000,50)




교과서 정규분포의 거울상과 거의 같은 분포를 볼 수 있습니다. 또한 평균은 29.68로 전체 모집단의 평균에서 0.01밖에 떨어져 있지 않습니다. 아마도 이 수학자들은 그들이 말하는 것을 실제로 알고 있을 것입니다!

좋은 웹페이지 즐겨찾기