본문 바로가기

책/파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습

03 파이토치 기초 (2) 가설

가설(Hyprothesis)이란?

어떤 사실을 설명하거나 증명하기 위한 가정으로 두 개 이상의 변수의 관계를 검증 가능한 형태로 기술하여 변수 간의 관계를 예측하는 것을 의미한다. 가설은 어떠한 현상에 대해 이론적인 근거를 토대로 통계적 모형을 구축하며, 데이터를 수집해 해당 현상에 대한 데이터의 정확한 특성을 식별해 검증한다.

 

  • 연구가설(Research Hyprothesis) : 연구자가 검증하려는 가설로 귀무가설을 부정하는 것으로 설정한 가설을 증명하려는 가설이다.
  • 귀무가설(Null Hyprothesis) : 통계학에서 처음부터 버릴 것을 예상하는 가설이다. 변수 간 차이나 관계가 없음을 통계학적 증거를 통해 증명하려는 가설이다.
  • 대립가설(Alternative Hyprothesis) : 귀무가설과 반대되는 가설로, 귀무가설이 거짓이라면 대안으로 참이 되는 가설이다. 즉, 연구가설과 동일하다고 볼 수 있다.

머신러닝에서의 가설

머신러닝에서의 가설은 통계적 가설 검정이 되며, 데이터와 변수 간의 관계가 있는지 확률론적으로 설명하게 된다. 즉, 독립 변수와 종속 변수를 가장 잘 매핑시킬 수 있는 기능을 학습하기 위해 사용하며, 독립 변수와 종속 변수 간의 관계를 가장 잘 근사시키기 위해 사용된다.

 

  • 단일 가설 : 입력을 출력에 매핑하고 평가하고 예측하는 데 사용할 수 있는 단일 시스템을 의미. $h$로 표현.
  • 가설 집합 : 출력에 입력을 매핑하기 위한 가설 공간으로, 모든 가설을 의미. $H$로 표현

통계적 가설 검정 사례

대표적인 통계적 가설 검정은 t-test가 있다.

  • paired t-test : 동일한 항목 또는 그룹을 두 번 테스트할 때 사용한다. 예를 들어 동일 집단에 대한 약물 치료 전후 효과 검정.
  • unpaired t-test : 등분산성(homoskedasticity)을 만족하는 두 개의 독립적인 그룹 간의 평균을 비교하는 데 사용된다. 제약 연구에서 서로 다른 두 개의 독립적인 집단(실험군, 대조건) 간의 유의미한 차이가 있는지 조사하는 경우.

등분산성은 모든 확률 변수가 같은 유한 분산을 가지는 성질을 가정한다. 등분산성 검정을 통해 확인할 수 있다.

 

두 가지 t-test의 가설은 동일하며 다음과 같다.

  • 귀무가설 : 두 모집단의 평균 사이에 유의한 차이가 없다.
  • 대립가설 : 두 모집단의 평균 사이에 유의한 차이가 있다.

머신러닝의 통계적 가설을 적용한다면 unpaired t-test를 사용해야 한다. 왜냐하면 독립 변수와 종속 변수 사이에 유의미한 차이가 있는지 검정하는데, 이때 변수들의 샘플 데이터는 독립항등분포를 따르기 때문이다.

 

성별에 따른 키 차이 검정

import numpy as np
import pandas as pd
import seaborn as sns
from scipy import stats
from matplotlib import pyplot as plt

# loc=평균, scale=표준편차
man_height = stats.norm.rvs(loc=170, scale=10, size=500, random_state=1)
woman_height = stats.norm.rvs(loc=150, scale=10, size=500, random_state=1)

X = np.concatenate((man_height, woman_height))
Y = ['man'] * 500 + ['woman'] * 500

df = pd.DataFrame(list(zip(X, Y)), columns=["X", "Y"])
fig = sns.displot(data=df, x="X", hue="Y", kind="kde")
fig.set_axis_labels("cm", "count")
plt.show()
  • stats.norm.rvs : 특정 평균(loc)과 표준편차(scale)을 따르는 분포에서 데이터를 샘플링하는 함수

출력 결과

남성의 평균 키가 여성의 평균 키보다 높다는 것을 확인할 수 있다. 통계적으로 키(Y)가 성별 차이(X)에 유의미한 요소인지 unpaired t-test로 확인해 본다.

 

unpaired t-test

statistic, pvalue = stats.ttest_ind(man_height, woman_height, equal_var=True)

print("statistic:", statistic)
print("pvalue :", pvalue)
print("*:", pvalue < 0.05)
print("**:", pvalue < 0.001)

출력 결과

statistic: 31.96162891312776
pvalue : 6.2285854381989205e-155
*: True
**: True
  • 유의 확률 p-value가 작다면 귀무가설이 참일 확률이 낮다고 할 수 있다. 즉, '남녀 키의 평균이 서로 같다'의 확률이 낮다고 할 수 있다.