정규분포
정규분포란 중심 극한 정리*에 의해 확률 분포* 함수를 정리한 것을 말한다. 통계량*에 대한 일종의 답안지인 셈이다.
중심 극한 정리 Central Limit Theorem(CLT)
표본의 크기가 커질수록 표본 평균의 분포는 모집단의 분포 모양과는 관계없이 정규분포에 가까워진다는 정리. 이때 표본 평균의 평균은 모집단의 모 평균과 같고, 표본 평균의 표준 편차는 모집단의 모 표준 편차를 표본 크기의 제곱근으로 나눈 것과 같다(나무위키). 모집단의 모양과 분포에 상관없이 표본의 크기가 충분히 크다면, 표본 평균들의 분포가 모집단의 모수를 기반으로한 정규분포를 이룬다는 점을 이용해서 반대로 수집한 표본의 통계량을 이용해 모집단의 모수를 추정할 수 있는 수학적 근거를 마련해준다.
확률 분포(probability distribution)
확률은 사건(event)이라는 표본의 집합에 대해 숫자를 할당하는 함수다. 어떤 사건에 어느 정도의 확률이 할당되었는지 묘사한 정보를 확률분포(probability distribution)라고 한다. 확률분포를 묘사하려면 모든 사건들을 일일히 제시하고 거기에 할당된 숫자를 보여주어야 한다. 표본의 개수가 유한하다면 가능할 수 있지만 만약 표본의 개수가 무한하다면 현실적으로 모든 사건을 하나 하나 기술하는 것은 불가능하다. 이를 해결하기 위해서 확률분포함수(probability distribution function)라는 것을 이용한다. 확률분포함수는 확률질량함수, 누적분포함수, 확률밀도함수 3가지가 있다.
정규 분포의 모양과 위치는 분포의 평균(μ)과 표준편차(σ)로 결정된다. 정규분포의 확률밀도함수를 그려보면 평균을 중심으로 대칭인 종 모양(bell-curve)를 가지게 된다. 정규분포를 나타내는 정규 곡선은 X축에 맞닿지 않으므로 확률변수 X가 취할 수 있는 값의 범위는 -∞ < X < +∞이며, 정규 분포의 평균과 표준편차가 어떤 값을 갖더라도 정규 곡선과 X축 사이의 전체 면적은 1이다.
정규분포는 수학적인 방법을 통해 마련된 데이터 분포의 표준(안)으로써 우리가 어떤 값이 크고 작은지를 판단하는 기준으로 기능한다. 표준정규분포(z-분포), t-분포, 카이제곱분포, F-분포 등 수학적으로 증명된 분포(표)가 이미 존재하고 있으며 우리가 얻어낸 통계량을 적절한 분포(표)에 대조하여 관측치의 크고 작음을 판별할 수 있다.
본 게시글에서는 t분포와 표준정규분포에 대해서만 다룰 예정이다.
t-분포(t-distribution)
확률밀도함수 중 하나인 t-분포(t-distribution)는 두 집단의 평균이 동일한지 알고자 할 때 활용하는 검정 통계량*이다.서로 다른 두 집단의 평균에 대한 통계 검정에 주로 사용된다. 주로 모집단이 정규분포라는 정도만 알고 모표준편차는 모를 때, 모평균 추정을 위해 표준정규분포를 대신해 소표본(n < 30)의 분포인 t-분포를 사용한다. 정규분포로부터 표본을 구할 때 표본의 크기가 크지 않고, 표준편차(σ)를 모른다면 는자유도가 n-1인 t-분포를 따른다.
검정 통계량
가설 검정에서 사용된 샘플 데이터로부터 계산된 랜덤 변수
여기서 t-분포의 특징은 모양이 정규분포보다 퍼져있으며 자유도가 커질수록 정규분포에 근접한다는 것이다. 표본의 크기가 작아 표본의 표준편차가 모집단의 표준편차보다 불확실성이 크기 때문인데, 표본의 크기 n이 커질수록 표본의 표준편차가 모집단의 표준편차에 접근한다. 그래서 t-분포의 모양은 자유도(≒ 좌푯값의 수)에 따라 달라진다.
보통 표본의 크기가 30이상이면 중심극한정리에 따라 표본집단은 정규성을 따른다고 본다. 표본의 크기가 10 이상 30 미만일 때는 정규성 검정을, 10 미만일 때는 비모수 검정을 시행한다.
표준정규분포 (Standard Normal Distribution)와 z-score
표준정규분포(Standard normal distribution)라고도 한다. 대표적인 연속형 확률분포인 정규분포에는 몇 가지 특징이 있는데, 우선 정규분포의 모양과 위치는 분포의 평균(μ)과 표준편차(σ)로 결정된다. 정규 분포의 확률 밀도 함수는 평균을 중심으로 대칭인 종 모양을 가지며, 정규분포를 나타내는 정규 곡선은 X축에 맞닿지 않으므로 확률변수 X가 취할 수 있는 값의 범위는 -∞ < X < +∞이다.(관측값의 99.7%가 ±3 σ 안에 속해 있다.) 정규분포의 평균과 표준편차가 어떤 값을 갖더라도 정규 곡선과 X축 사이의 전체 면적은 1이다.
이러한 정규분포를 평균 μ=0, 표준편차 σ=1이 되도록 표준화한 것을 표준정규분포라고 부르는데, 어떤 관측값의 확률분포 X를 원래 크기가 아닌 평균을 중심으로 값의 크기를 조정하고, 그 값이 평균으로부터 표준편차의 몇 배 정도나 떨어져 있는지를 나타낸 확률분포이다. 이때 표준정규분포는 확률변수 Z로 나타내며, N(0, 1)으로 표시한다.
t-검정에 대한 개념과 함께 표준정규분포와 z-test를 이해하면 보다 쉽다. z-검정 역시 통계적인 검정 방법 중 하나인데 여기서 중요한 개념이 z-score이다. 앞서 다뤘던 정규분포의 개념을 명확하게 이해하고 있다면 우리는 z-score를 보다 쉽게 배울 수 있다. 정규분포는 평균값을 기준으로 좌우 대칭이 이뤄지는 분포 그래프였다. 이때 대칭인 종 모양(bell-curve) 그래프는 무수히 많은 수로 존재할 것이다. 그러므로 어떤 데이터의 정규분포마다 그 영역의 면적을 계산(적분)하긴 비효율적이다. 우리는 이럴 때 ‘표준’정규분포를 활용한다. 대상이 되는 정규분포를 바로 표준정규분포(모양)로 변환하는 것이다. 더불어 변화에 사용되는 공식이 바로 z-score이다.
데이터 분석의 Feature Scaling
정규화는 데이터의 서로 다른 feature의 크기를 통일하여 정규분포에 가깝게 변환해주는 개념이다. 머신러닝에서 데이터 정규화의 목표는 feature 값 범위의 차이를 왜곡하지 않고, 데이터셋과 테스트셋의 숫자를 공통된 척도로 변경하는 것이다.
그렇다면 왜 정규화를 해야할까? 이유는 명료하다. 정규화를 통한 Feature Scaling이 모델 성능 향상에 도움을 주기 때문이다. 피처의 범위가 다르면 피처끼리 비교가 어려우며 일부 머신러닝모델에서 제대로 작동하지 않는다. 여러 주식 데이터의 등락폭을 한 그래프 안에서 비교하는 걸 생각해보자. 또한 피처 스케일링이 잘 되어 있으면, 경사하강법(Gradient Descent)과 KNN, Clustering 등의 거리 기반 알고리즘에 속도와 성능을 올려준다. 이것은 반대로 말해 트리 기반의 알고리즘에는 Feature Scaling이 큰 의미가 없다는 말을 뜻하기도 한다.
Feature Scaling
Featue Scaling은 표준화(Standardization), 정규화(Normalization)가 대표적이며 이외에도 MinMaxScaler, RobustScaler, MaxAbsScaler 등이 있다. 간단히 살펴보자.
1. 표준화(Z-score scaling, Normalization-Standardization)
- 정의: 평균을 제거하고 데이터를 단위 분산으로 조정한다
- 공식: z = (X - X.mean) / std
- 특징: 평균을 0, 표준편차를 1로 만들어준다. 그러나 이상치가 있다면 평균과 표준편차에 영향을 미쳐 변환된 데이터의 확산은 매우 달라지게 되므로 이상치가 있는 경우 균형 잡힌 척도를 보장할 수 없다.
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
print(ss.fit(train_data))
train_data_ss= ss.transform(train_data)
2. Min-Max Scaling
- 정의: 모든 feature 값이 0~1사이에 있도록 데이터를 재조정한다
- 공식: X_scaled = (X - X.min) / (X.max - X.min)
- 특징: 다만 이상치가 있는 경우 변환된 값이 매우 좁은 범위로 압축될 수 있어 이상치의 존재에 매우 민감하다
from sklearn.preprocessing import MinMaxScaler
mm = MinMaxScaler()
print(mm.fit(train_data))
train_data_mm= mm.transform(train_data)
3. Robust Scaling
- 정의: 아웃라이어의 영향을 최소화한 기법이다. 중앙값(median)과 IQR(interquartile range)을 사용한다.
- 공식: X_scaled = (X - X.median) / IQR*
* IQR: 상위 75%의 값-하위25%의 값 - 특징: 중앙값이 0, 이상치 영향이 덜 받는다(Robust, 강건하다). StandardScaler와 비교하면 표준화 후 동일한 값을 더 넓게 분포시키고 있다.
from sklearn.preprocessing import RobustScaler
rs = RobustScaler()
print(rs.fit(train_data))
train_data_rs= rs.transform(train_data)
=> 스케일링을 하면 분포가 변하지 않는다
4. Normalization
- 정의: 선형대수에서의 정규화 개념을 이용하여, 개별 벡터를 모든 피처 벡터의 크기로 나눠준다.
- 공식:
- 특징: 다른 스케일링 방법은 StandardScaler, RobustScaler, MinMaxScaler 기법은 특성들의 열 (특성)의 통계치를 사용하지만, Normalizer는 행(데이터 포인트)마다 각기 정규화된다. 다른 말로 하면 지름이 1인 원( 3차원 일 땐 구 )에 데이터 포인트를 투영하게 된다는 말이다. 이 말은 각 데이터 포인트가 다른 비율로 (길이에 반비례하여) 스케일이 조정된다는 뜻이 되며, 이러한 정규화(normalizationnormalization)는 특성 벡터의 길이는 상관없고 데이터의 방향(또는 각도) 만이 중요할 때 많이 사용한다.
```python
from sklearn.preprocessing import Normalizer
normal_scaler = Normalizer()
print(mm.fit(train_data))
train_data_mm= mm.transform(train_data)
```
Scaler 사용 시 주의할 점
스케일링을 하면서 fit 함수를 사용하는데 이는 train셋에만 사용해야 한다. fit을 사용하여 데이터 변환을 위한 기준을 정하 것이기 때문이다. 만약 test셋에서도 fit을 이용한다면 새로운 스케일링 기준을 만들어 올바른 예측 결과를 도출하지 못한다. 만일 fit과 transform을 합친 fit_transform 함수를 사용한다면, 이에 유의하여 train셋에만 사용하자.
Reference
- 파이썬을 활용한 데이터·AI 분석 사례(건강보험심사평가원)
- [sklearn] 데이터 전처리 - 피처 스케일링 & 정규화
- [데이터 전처리]정규화(Normalisation)와 스케일 조정
'AI > ML' 카테고리의 다른 글
PyCaret을 이용한 AutoML Tutorial (0) | 2022.11.17 |
---|---|
최적화와 경사하강법(Gradient Descent) (1) | 2022.11.17 |
[유튜브 강의록] 04-1: Ensemble Learning - Overview (0) | 2022.11.06 |
[HML2] Decision Tree와 화이트박스 (0) | 2022.11.03 |
지도 학습, 비지도 학습, 강화 학습 [작성중] (0) | 2022.10.27 |
댓글