데이터분석

[혼자 공부하는 데이터 분석 with 파이썬] - 검증하고 예측하기

주니빙 2023. 9. 30. 02:13

07 검증하고 예측하기

통계적으로 추론하기

가설검정이란?

가설검정은 통계적인 방법을 사용하여 주장하고 있는 가설을 검증하는 과정이다. 가설검정을 통해 우리는 주장하고 있는 가설이 통계적으로 유의미한지 여부를 판단할 수 있다. 이를 통해 데이터를 분석하고 예측하는 데 도움이 된다.

순열검정이란?

순열검정은 통계적인 방법 중 하나로, 두 개 이상의 집단 간에 차이가 있는지를 검정하는 과정이다. 순열검정은 관측된 데이터를 무작위로 재배치하여 가설을 검정하며, 이를 통해 집단 간의 차이가 우연에 의한 것인지를 판단할 수 있다.

모수검정이란?

모수검정은 통계적인 방법 중 하나로, 모집단의 모수에 대한 가설을 검정하는 과정이다. 모집단의 평균, 분산, 비율 등과 관련된 가설을 검정하여 통계적으로 유의미한 차이가 있는지를 판단할 수 있다. 모수검정은 표본 데이터를 통해 모집단에 대한 추론을 수행하는 중요한 방법이다.

z 점수 구하기

표준편차를 사용해 변환한 점수를 표준점수 또는 z 점수라고 한다.

import numpy as np

x = [0, 3, 5, 7, 10]

s = np.std(x)
m = np.mean(x)
z = (7 - m) / s
print(z)

np.std() : 표준편차를 구한다.

np.mean() : 평균을 구한다.

 

사이파이란?

사이파이(SciPy)는 파이썬의 과학 및 기술 컴퓨팅을 위한 라이브러리다. 사이파이는 다양한 수치 계산, 최적화, 선형 대수, 통계 등의 기능을 제공하여 데이터 분석 및 과학적인 연구에 유용하게 사용된다.

stats 모듈이란?

stats 모듈은 파이썬의 통계 관련 기능을 제공하는 모듈이다. 이 모듈은 데이터 분석, 가설 검정, 확률 분포 등 다양한 통계적 계산을 수행할 수 있다. stats 모듈을 사용하여 데이터를 분석하고 통계적으로 유의미한 결과를 도출할 수 있다.

zscore() 함수란?

zscore() 함수는 주어진 배열의 각 요소에 대해 표준 점수 또는 z 점수를 계산하는 함수이다. 표준 점수는 해당 요소의 값이 평균으로부터 표준 편차의 몇 배만큼 떨어져 있는지를 나타내는 값으로, 데이터의 상대적인 위치를 파악하는 데에 유용하다.

 

사용 예시:

import scipy.stats as stats

x = [10, 15, 20, 25, 30]
z = stats.zscore(x)
print(z)

이를 통해 주어진 배열 x의 각 요소에 대한 표준 점수를 계산할 수 있다. 계산된 표준 점수는 배열로 반환된다.

 

배열 x에 대한 모든 z 점수를 구할 수 있다.

 

표준정규분포란?

표준정규분포는 평균이 0이고 표준편차가 1인 정규분포를 말한다.

정규분포를 따르는 데이터를 표준정규분포로 변환하려면 데이터에서 평균을 빼고 표준편차로 나누어주면 된다. 이를 통해 표준정규분포에서의 z 점수를 얻을 수 있다.

norm.cdf() 메서드란?

norm.cdf() 메서드는 정규분포 누적분포 함수(Cumulative Distribution Function)를 계산하는 메서드다. 이 함수는 정규분포에서 특정 값보다 작거나 같은 값의 확률을 계산하는 데 사용된다.

 

중심극한정리 알아보기

중심극한정리란?

중심극한정리는 통계학에서 중요한 개념으로, 독립적인 확률 변수들의 합 또는 평균이 정규분포에 근사하는 현상을 말한다. 즉, 모집단이 어떤 분포를 따르더라도, 표본의 크기가 충분히 크다면, 표본 평균은 정규분포를 따르게 된다. 이 개념은 통계적 추론에서 매우 중요하며, 신뢰구간 및 가설 검정 등에 활용된다.

sample() 메서드란?

sample() 메서드는 주어진 배열에서 무작위로 샘플을 선택하는 함수이다. 이 메서드를 사용하여 주어진 배열에서 임의의 샘플을 추출할 수 있다. 추출된 샘플은 배열로 반환된다.

 

모집단의 평균 범위 추정하기 : 신뢰구간

신뢰구간이란?

표본의 파라미터(여기에서는 평균)가 속할 것이라 믿는 모집단의 파라미터 범위이다.

norm.ppf() 메서드란?

norm.ppf() 메서드는 정규분포의 백분위수(Percent Point Function)를 계산하는 메서드이다. 이 함수는 주어진 확률에 해당하는 값의 백분위수를 계산하는 데 사용된다. 예를 들어, 0.95의 백분위수를 계산하면 해당 확률보다 작거나 같은 값 중에서 가장 큰 값을 반환한다.

 

통계적 의미 확인하기 : 가설검정

영가설/귀무가설이란?

영가설은 가설검정에서 기본적으로 세우는 가설로, 아무런 변화나 차이가 없다는 가정을 나타낸다. 가설검정에서는 영가설을 기준으로 대립가설을 검증하게 된다.

대립가설이란?

대립가설은 가설검정에서 영가설에 대립하는 가설을 말한다. 영가설이 기본적으로 아무런 변화나 차이가 없다는 가정을 나타낸다면, 대립가설은 해당 가정에 대립하는 어떤 변화나 차이가 있다는 주장을 나타낸다. 대립가설은 영가설의 반대 개념으로 사용되며, 가설검정을 통해 대립가설이 영가설을 기각할 수 있는지를 확인한다.

 

t-검정으로 가설 검증하기

ttest_ind() 함수란?

ttest_ind() 함수는 독립된 두 개의 표본 집단 간의 평균 차이를 검정하는 메서드이다. 이 함수는 t-검정을 수행하여 두 집단의 평균이 유의미하게 다른지를 확인하는 데 사용된다.

t-검정이란?

t-검정은 두 개의 독립된 표본 집단 간의 평균 차이를 검정하는 통계적인 방법이다. 특히, 두 집단의 평균이 유의미하게 다른지를 확인하는 데 사용된다. t-검정은 표본 데이터를 기반으로 가설을 검증하며, 영가설과 대립가설을 설정하여 유의수준에 따라 검정 결과를 해석한다.

t-분포란?

t-분포는 통계학에서 사용되는 확률 분포 중 하나로, 작은 표본 크기에서의 통계적 추론에 사용된다. 정규분포와 비슷하지만, 표본 크기가 작을 때 더 넓게 퍼진다는 특징이 있다. t-분포는 t-검정에서 사용되며, 데이터의 평균이 표본의 크기와 표준 편차에 따라 다른 분포를 따르는 것을 고려한다.

t-점수란?

t-점수는 t-분포에서의 특정 값을 나타내는 것으로, t-분포에서의 확률을 계산할 때 사용된다. t-분포는 정규분포와 비슷하지만, 작은 표본 크기에서의 통계적 추론에 적합하도록 설계되었다. t-점수는 표본의 평균이 표준 오차와 얼마나 다른지를 나타내는 지표로 사용된다.

p-값이란?

p-값은 가설검정에서 사용되는 통계적인 지표로, 주어진 데이터에서 관찰된 결과와 같거나 더 극단적인 결과가 나타날 확률을 나타낸다. p-값은 영가설이 참일 때 관찰된 데이터를 얻을 확률을 나타내며, 작은 p-값은 영가설을 기각하여 대립가설이 유의미하다고 결론을 내릴 수 있게 한다. 대개 0과 1 사이의 값을 가지며, 작을수록 영가설을 기각할 수 있는 근거가 더 강력하다는 의미이다.

 

정규분포가 아닐 때 가설 검증하기 : 순열검정

permutation() 함수란?

permutation() 함수는 데이터의 순열을 생성하는 메서드이다. 이 함수를 사용하여 주어진 데이터에서 가능한 모든 순열을 생성할 수 있다. 생성된 순열은 배열로 반환된다.

 

머신러닝으로 예측하기

머신러닝

인공지능의 하위 분야로, 데이터를 기반으로 컴퓨터가 학습하고 예측을 수행하는 기술이다. 머신러닝은 주어진 데이터를 분석하여 패턴을 학습하고, 이를 기반으로 새로운 데이터에 대한 예측을 수행한다. 또한 지도 학습과 비지도 학습으로 나뉜다.

사이킷런이란?

사이킷런은 파이썬에서 사용할 수 있는 머신러닝 라이브러리로, 다양한 머신러닝 알고리즘과 도구를 제공한다. 사이킷런을 사용하면 데이터 전처리, 특성 추출, 모델 선택 및 평가 등을 간편하게 수행할 수 있다.

 

지도 학습과 비지도 학습

지도 학습이란?
지도 학습은 머신러닝의 한 분야로, 입력 데이터와 그에 해당하는 정답 데이터를 이용하여 모델을 학습시키는 방법이다. 이렇게 학습된 모델은 새로운 입력 데이터에 대해 정확한 출력을 예측할 수 있다. 예를 들어, 이미지 분류 문제에서 지도 학습은 주어진 이미지와 해당 이미지의 레이블(정답)을 학습하여 새로운 이미지를 분류하는 모델을 만드는 것을 의미한다.

비지도 학습이란?

비지도 학습은 머신러닝의 한 분야로, 정답 데이터 없이 입력 데이터의 패턴이나 구조를 학습하는 방법이다. 이러한 학습은 데이터의 특성이나 군집을 발견하거나 데이터를 압축하거나 변환하는 데 사용될 수 있다. 비지도 학습은 지도 학습과 달리 사전에 정해진 정답이 없기 때문에 모델이 데이터를 스스로 학습하고 이해하는 능력을 갖추게 된다.

타깃이란?

타깃은 머신러닝에서 예측하려는 대상 변수를 나타낸다. 예를 들어, 주어진 데이터에서 어떤 특성을 기반으로 타깃 변수를 예측하고자 할 때, 해당 특성은 입력 변수로 사용되고 예측하려는 변수는 타깃 변수로 사용된다.

입력이란?

머신러닝에서 입력은 모델에 제공되는 데이터를 의미한다. 입력은 모델이 학습하는 데 사용되는 정보이며, 모델은 입력을 기반으로 패턴을 학습하고 예측을 수행한다.

 

모델 훈련하기

훈련 세트란?

훈련 세트는 머신러닝에서 모델을 학습하는 데 사용되는 데이터 세트를 의미한다. 훈련 세트는 입력 데이터와 해당하는 타깃(정답) 데이터로 구성되어 있으며, 모델은 훈련 세트를 사용하여 패턴을 학습하고 예측을 수행한다.

테스트 세트란?

테스트 세트는 머신러닝에서 모델의 성능을 평가하기 위해 사용되는 독립적인 데이터 세트를 의미한다. 테스트 세트는 모델이 학습되지 않은 데이터로 구성되어 있으며, 모델이 훈련된 후에 사용되어 예측 결과를 평가하고 모델의 일반화 능력을 판단하는 데 사용된다.

train_test_split() 함수란?

train_test_split() 함수는 머신러닝에서 데이터를 훈련 세트와 테스트 세트로 나누는 데 사용되는 메서드이다. 이 함수는 입력 데이터와 해당하는 타깃(정답) 데이터를 주어진 비율에 따라 무작위로 나누어준다. 일반적으로 데이터의 일부를 훈련 세트로 사용하여 모델을 학습시키고, 나머지 데이터를 테스트 세트로 사용하여 모델의 성능을 평가한다.

훈련 세트 75%, 테스트 세트 25%로 나눈다.

from sklearn.model_selection import train_test_split

train_set, test_set = train_test_split(ns_book7, random_state=42)

 

선형 회귀 모델 훈련하기

선형 회귀란?

선형 회귀는 머신러닝에서 사용되는 예측 모델 중 하나로, 입력 변수와 타깃 변수 간의 선형 관계를 모델링하는 방법이다. 선형 회귀는 주어진 입력 변수에 대해 연속적인 값을 예측하는 데 사용되며, 가장 간단하고 기초적인 회귀 알고리즘 중 하나이다. 선형 회귀는 입력 변수와 타깃 변수 간의 선형 관계를 학습하여 새로운 입력 변수에 대한 타깃 변수 값을 예측하는 모델을 만든다.

linear_model 모듈이란?

linear_model 모듈은 사이킷런에서 제공하는 선형 모델을 구현하는 데 사용되는 모듈이다. 선형 모델은 입력 변수와 타깃 변수 간의 선형 관계를 모델링하는 데 사용되며, 예측을 수행하기 위해 최적의 회귀 계수를 찾는 알고리즘을 제공한다.

LinearRegression 클래스란?

LinearRegression 클래스는 사이킷런에서 제공하는 선형 회귀 모델을 구현하는 클래스이다. 선형 회귀는 입력 변수와 타깃 변수 간의 선형 관계를 모델링하는 방법으로, 주어진 입력 변수에 대해 연속적인 값을 예측하는 데 사용된다.

fit() 메서드란?

fit() 메서드는 머신러닝에서 모델을 학습시키는 메서드이다. 이 메서드는 입력 데이터와 해당하는 타깃(정답) 데이터를 이용하여 모델을 훈련시킨다. fit() 메서드를 호출하면 모델은 주어진 데이터에 대해 훈련을 시작하고, 훈련이 완료되면 학습된 모델이 반환된다.

from sklearn.linear_model import LinearRegression

lr = LinearRegression()
lr.fit(X_train, y_train)

lr 객체는 전달받은 두 가지 데이터를 사용해 모델에 선형 회귀 알고리즘을 훈련시킨다.

 

훈련된 모델을 평가하기 : 결정계수

score() 메서드란?

score() 메서드는 머신러닝에서 모델의 성능을 평가하는 메서드이다. 일반적으로 회귀 모델에서는 결정 계수(R-squared)를 계산하여 모델의 예측 정확도를 측정한다. 결정 계수는 0과 1 사이의 값을 가지며, 1에 가까울수록 모델의 예측이 더 정확하다는 의미이다.

출력된 점수는 0.1으로 그다지 좋지 않으며, 이를 결정계수라고 부른다.

 

to_frame() 메서드란?

to_frame() 메서드는 Pandas에서 제공하는 메서드로, 시리즈(Series) 객체를 데이터프레임(DataFrame)으로 변환하는 메서드다. 시리즈는 1차원 데이터 구조이고, 데이터프레임은 2차원 데이터 구조이다. to_frame() 메서드를 사용하면 시리즈 객체를 데이터프레임으로 변환하여 다양한 데이터 조작 및 분석 작업을 수행할 수 있다.

 

연속적인 값 예측하기 : 선형 회귀

선형 회귀 : 선형 함수를 사용해 모델을 만드는 알고리즘

 

선형 함수란?

선형 함수는 입력 변수와 출력 변수 간의 관계를 나타내는 수학적 모델이다. 선형 함수는 입력 변수에 대해 계수와 상수항을 사용하여 출력 변수를 예측하는 방법을 제공한다. 이 함수는 입력 변수와 출력 변수 간의 직선 형태의 관계를 모델링하며, 입력 변수에 따라 출력 변수가 선형적으로 변화한다는 가정을 기반으로 한다. 예를 들어, y = ax + b 형태의 선형 함수에서 x는 입력, y는 타깃이다.

선형 회귀 알고리즘 : 입력에 기울기 a를 곱하고 y축과 만나는 절편 b를 더하여 예측을 만드는 것

coef_ 속성이란?

coef_ 속성은 선형 회귀 모델에서 사용되는 계수(가중치)를 나타내는 속성이다. 이 속성은 모델이 학습한 후에 접근할 수 있으며, 각 입력 변수에 대한 계수 값을 제공한다.

intercept_ 속성이란?

intercept_ 속성은 선형 회귀 모델에서 사용되는 절편을 나타내는 속성이다. 이 속성은 모델이 학습한 후에 접근할 수 있으며, 예측 변수가 0일 때의 출력 변수 값을 제공한다.

기울기는 1이고 절편은 0에 가까운 매우 작은 음수이다. 따라서 이 선형 회귀 모델이 학습한 함수는 y=1x+0이다. y는 x와 동일한 값이 된다.

 

카테코리 예측하기 : 로지스틱 회귀

회귀와 분류는 머신러닝에서 사용되는 두 가지 주요한 예측 모델링 방법이다.

회귀와 분류의 차이란?

  • 회귀 (Regression): 회귀는 입력 변수와 연속적인 출력 변수 간의 관계를 모델링하는 방법이다. 회귀 모델은 입력 변수에 따라 출력 변수의 값을 예측하는데 사용된다. 예를 들어, 집의 크기, 위치, 방의 개수 등의 입력 변수를 기반으로 집의 가격을 예측하는 회귀 모델을 만들 수 있다.
  • 분류 (Classification): 분류는 입력 변수와 이산적인 출력 변수 간의 관계를 모델링하는 방법이다. 분류 모델은 입력 변수를 기반으로 데이터를 여러 개의 클래스 또는 범주로 분류하는데 사용된다. 예를 들어, 스팸 메일과 정상 메일을 구분하는 분류 모델을 만들 수 있다.

따라서, 회귀는 연속적인 값을 예측하는데 사용되는 반면, 분류는 이산적인 클래스 또는 범주를 예측하는데 사용된다.

  • 회귀 : 타깃이 실수
  • 분류 : 타깃이 실수가 아니라 어떤 종류의 카테고리, 이진 분류 & 다중 분류

 

분류 알고리즘에서 타깃 카테고리를 클래스라고 부른다.

이진 분류의 타깃 : 0(음성 클래스) 또는 1(양성 클래스)

로지스틱 회귀란?

로지스틱 회귀는 분류 알고리즘 중에 대표적으로 사용되는 알고리즘으로, 입력 변수와 이산적인 출력 변수 간의 관계를 모델링하는 방법이다. 이 알고리즘은 주어진 입력 변수에 대해 해당하는 클래스 또는 범주를 예측하는 데 사용된다.

로지스틱 함수란?

로지스틱 함수는 로지스틱 회귀 모델에서 사용되는 수학 함수이다. 이 함수는 입력 변수와 출력 변수 간의 관계를 모델링하는데 사용된다. 로지스틱 함수는 S자 모양의 곡선을 가지며, 입력 변수에 따라 출력 변수의 값을 0과 1 사이로 변환한다. 로지스틱 함수는 다양한 형태가 있지만, 가장 일반적인 형태는 시그모이드 함수입니다.

y가 0.5보다 크면 양성 클래스, 0.5보다 작으면 음성 클래스

 

로지스틱 회귀 모델 훈련하기

도서권수로 대출건수가 평균보다 높은지 아닌지를 예측하는 이진 분류 문제

대출건수가 평균보다 높으면 양성 클래스, 그렇지 않으면 음성 클래스

LogisticRegression 클래스 임포트

훈련 세트로 fit() 메서드 호출

테스트 세트로 score() 메서드 호출

여기서 score() 메서드가 출력하는 점수는 정확도이다.

정확도란 입력 데이터 중 정답을 맞힌 비율이다 >> 실험결과 : 약 71%를 맞춤

 

양성 클래스와 음성 클래스 분포 확인하기

value_counts() 메서드란?

value_counts() 메서드는 시리즈(Series) 또는 데이터프레임(DataFrame) 객체의 값들을 세는 역할을 한다. 이 메서드를 사용하면 각 고유한 값이 데이터에서 얼마나 많이 나타나는지를 확인할 수 있다.

음성 클래스 69%, 양성 클래스 31% 정도

 

사이킷런은 가장 많은 클래스로 무조건 예측을 수행하는 더미 모델을 제공

회귀일 경우 DummyRegressor 모델이 있으며 무조건 타깃의 평균을 예측

분류일 경우 DummyClassifier 모델이 기본적으로 가장 많은 클래스를 예측으로 출력

 

DummyClassifier 모델이란?

DummyClassifier 모델은 무작위로 예측을 수행하는 가장 간단한 분류 모델 중 하나이다. 이 모델은 입력 변수와 관계없이 항상 동일한 클래스를 예측한다.