일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 신경망
- 강화학습
- 머신러닝
- 최적화
- 지도 학습
- reinforcement learning
- 딥러닝
- 머신 러닝
- 분류
- python
- 과적합
- 강화 학습
- q-러닝
- Deep learning
- LSTM
- GRU
- 활성화 함수
- Machine Learning
- AI
- 손실 함수
- 데이터 전처리
- 정규화
- 자연어 처리
- 회귀
- CNN
- 교차 검증
- 인공 신경망
- rnn
- Q-Learning
- 인공지능
- Today
- Total
move84
머신러닝에서의 데이터 정규 분포의 의미 본문
머신러닝에서 데이터의 분포는 모델의 성능에 큰 영향을 미친다. 그중에서도 정규 분포는 통계적 추론과 모델링에서 매우 중요한 역할을 한다. 이 글에서는 정규 분포의 기본적인 개념과 머신러닝에서 정규 분포가 가지는 의미, 그리고 실제 데이터에 적용하는 방법에 대해 자세히 알아본다.
📊 정규 분포(Normal Distribution)란?
정규 분포는 가우시안 분포(Gaussian Distribution)라고도 불리며, 평균값을 중심으로 좌우 대칭인 종 모양의 분포를 가진다. 정규 분포는 평균(mean)과 표준편차(standard deviation)라는 두 가지 파라미터에 의해 결정된다. 평균은 분포의 중심을 나타내고, 표준편차는 데이터가 평균으로부터 얼마나 흩어져 있는지를 나타낸다. 표준편차가 작을수록 데이터는 평균 주위에 모여 있고, 클수록 넓게 퍼져 있다.
🤔 왜 정규 분포가 중요할까?
정규 분포는 다음과 같은 이유로 머신러닝에서 중요한 역할을 한다.
중심 극한 정리(Central Limit Theorem): 독립적인 확률 변수들의 합은 표본의 크기가 충분히 커질수록 정규 분포에 가까워진다. 이는 많은 자연 현상과 통계적 추론에서 정규 분포를 가정할 수 있는 근거가 된다.
통계적 추론의 용이성: 정규 분포를 따르는 데이터는 평균과 표준편차만으로 분포를 완벽하게 설명할 수 있기 때문에, 가설 검정, 신뢰 구간 추정 등 다양한 통계적 추론을 쉽게 수행할 수 있다.
많은 머신러닝 모델의 가정: 선형 회귀(Linear Regression), 로지스틱 회귀(Logistic Regression) 등의 많은 머신러닝 모델은 데이터가 정규 분포를 따른다는 가정을 한다. 데이터가 정규 분포를 따르지 않을 경우, 모델의 성능이 저하될 수 있다.
💻 정규 분포와 머신러닝
머신러닝에서 정규 분포는 데이터 전처리, 모델링, 성능 평가 등 다양한 단계에서 활용된다.
데이터 전처리: 데이터가 정규 분포를 따르지 않을 경우, 정규화를 통해 정규 분포에 가깝게 만들 수 있다. 예를 들어, StandardScaler는 데이터를 평균이 0이고 표준편차가 1인 정규 분포로 변환한다.
이상치 탐지(Outlier Detection): 정규 분포를 이용하여 이상치를 탐지할 수 있다. 데이터가 정규 분포를 따른다는 가정하에, 평균에서 일정 표준편차 이상 떨어진 값들을 이상치로 간주할 수 있다.
생성 모델(Generative Model): 정규 분포는 Variational Autoencoder(VAE), Generative Adversarial Network(GAN) 등의 생성 모델에서 잠재 공간(latent space)의 분포로 자주 사용된다.
🛠️ Python을 이용한 정규 분포 시뮬레이션
Python의 NumPy와 Matplotlib 라이브러리를 이용하여 정규 분포를 시뮬레이션하고 시각화할 수 있다.
import numpy as np
import matplotlib.pyplot as plt
# 평균과 표준편차 설정
mu = 0 # 평균
sigma = 1 # 표준편차
# 정규 분포에서 1000개의 샘플 생성
samples = np.random.normal(mu, sigma, 1000)
# 히스토그램 그리기
plt.hist(samples, bins=50, density=True, alpha=0.7, color='blue')
# 정규 분포 곡선 그리기
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (x - mu)**2 / (2 * sigma**2) ), color='red')
plt.title('Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.show()
위 코드는 평균이 0이고 표준편차가 1인 정규 분포에서 1000개의 샘플을 생성하고, 히스토그램과 정규 분포 곡선을 함께 그리는 예제이다.
🧪 정규성 검정(Normality Test)
데이터가 실제로 정규 분포를 따르는지 확인하기 위해 정규성 검정을 수행할 수 있다. 대표적인 정규성 검정 방법으로는 Shapiro-Wilk 검정, Kolmogorov-Smirnov 검정 등이 있다.
from scipy.stats import shapiro
# Shapiro-Wilk 검정
stat, p = shapiro(samples)
print('Statistics=%.3f, p=%.3f' % (stat, p))
# p-value가 유의 수준(예: 0.05)보다 작으면 귀무 가설(정규 분포를 따른다는 가설)을 기각한다.
alpha = 0.05
if p > alpha:
print('Sample looks Gaussian (fail to reject H0)')
else:
print('Sample does not look Gaussian (reject H0)')
위 코드는 Shapiro-Wilk 검정을 수행하여 데이터가 정규 분포를 따르는지 검정하는 예제이다.
📚 데이터 변환(Data Transformation)
데이터가 정규 분포를 따르지 않을 경우, 로그 변환(log transformation), Box-Cox 변환 등의 방법을 사용하여 정규 분포에 가깝게 만들 수 있다.
로그 변환: 데이터가 양수이고 오른쪽으로 치우쳐진(skewed) 경우, 로그 변환을 통해 분포를 정규 분포에 가깝게 만들 수 있다. 로그 변환은 큰 값을 작게 만들고, 작은 값을 크게 만들어 데이터의 분포를 균등하게 만든다.
Box-Cox 변환: Box-Cox 변환은 데이터의 분포를 정규 분포에 가깝게 만드는 일반적인 방법이다. Box-Cox 변환은 다음과 같은 수식을 사용한다.
y = (x^lambda - 1) / lambda (lambda != 0)
y = log(x) (lambda = 0)여기서 x는 원래 데이터, y는 변환된 데이터, lambda는 변환 파라미터이다. 최적의 lambda 값을 찾아 데이터를 변환한다.
🎯 결론
정규 분포는 머신러닝에서 매우 중요한 개념이다. 데이터의 분포를 이해하고, 필요에 따라 정규화 또는 변환을 수행함으로써 모델의 성능을 향상시킬 수 있다. 또한, 정규 분포는 다양한 통계적 추론과 모델링에서 기본적인 가정이 되므로, 정규 분포에 대한 이해는 머신러닝 전문가에게 필수적이다.
핵심 용어 정리
- 정규 분포 (Normal Distribution): 평균과 표준편차로 정의되는 종 모양의 분포
- 중심 극한 정리 (Central Limit Theorem): 독립적인 확률 변수들의 합은 표본 크기가 커질수록 정규 분포에 가까워짐
- 정규성 검정 (Normality Test): 데이터가 정규 분포를 따르는지 확인하는 통계적 검정
- 로그 변환 (Log Transformation): 데이터를 로그 스케일로 변환하여 분포를 조정하는 방법
- Box-Cox 변환 (Box-Cox Transformation): 데이터의 분포를 정규 분포에 가깝게 만드는 일반적인 변환 방법
'머신러닝' 카테고리의 다른 글
머신러닝에서의 상관계수 이해 (0) | 2025.04.16 |
---|---|
머신러닝에서의 분산(Variance)과 표준편차(Standard Deviation) 이해 (0) | 2025.04.16 |
머신러닝 분류 문제에서 클래스(Class)의 의미 (0) | 2025.04.16 |
머신러닝: 특징 공간(Feature Space)의 개념 (0) | 2025.04.16 |
머신러닝에서의 데이터 유형 이해: 정형, 비정형, 반정형 (0) | 2025.04.16 |