AI 데이터 전처리 필수 용어: 정규화, 표준화, 이상치 처리
안녕하세요, 데이터 분석과 머신러닝을 공부하는 여러분! 😊 데이터 전처리는 모델의 성능을 극대화하는 핵심 과정입니다. 특히 정규화, 표준화, 이상치 처리는 필수적인 개념이죠. 이번 글에서는 이 개념들을 쉽게 이해하고, 실무에서 활용할 수 있도록 자세히 설명해 드리겠습니다!
📋 목차
정규화(Normalization)란? 🤔
정규화(Normalization)는 데이터를 일정한 범위(예: 0~1)로 조정하는 과정입니다. 주로 최소-최대 정규화(Min-Max Normalization)를 사용하며, 이상치에 민감하다는 특징이 있습니다.
정규화 공식: $$ X' = \frac{X - X_{min}}{X_{max} - X_{min}} $$
장점 | 단점 |
---|---|
모든 데이터가 동일한 범위로 변환됨 | 이상치(Outlier)에 매우 민감함 |
유사한 분포를 가진 데이터에 효과적 | 데이터의 원래 분포 정보가 손실될 수 있음 |
from sklearn.preprocessing import MinMaxScaler
import numpy as np
data = np.array([[50], [200], [300]])
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)
print(normalized_data)
위 코드에서 MinMaxScaler()를 사용하여 데이터를 0과 1 사이로 변환했습니다. 정규화는 특히 신경망 모델에서 많이 사용됩니다.
표준화(Standardization)의 개념 🛠
표준화(Standardization)는 데이터를 평균 0, 표준편차 1로 변환하는 과정입니다. 주로 Z-score 정규화를 사용하며, 이상치에 덜 민감한 특징이 있습니다.
표준화 공식: $$ X' = \frac{X - \mu}{\sigma} $$ (여기서, $\mu$ = 평균, $\sigma$ = 표준편차)
장점 | 단점 |
---|---|
이상치(Outlier)에 덜 민감함 | 데이터가 특정 범위로 제한되지 않음 |
정규 분포를 따르는 데이터에 적합 | 데이터 분포에 따라 성능 차이가 있을 수 있음 |
from sklearn.preprocessing import StandardScaler
import numpy as np
data = np.array([[50], [200], [300]])
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
print(standardized_data)
위 코드에서 StandardScaler()를 사용하여 데이터를 평균 0, 표준편차 1로 변환했습니다. 표준화는 선형 회귀, PCA, KNN 같은 알고리즘에서 자주 사용됩니다.
이상치(Outlier)란? ⭐
이상치(Outlier)는 데이터 분포에서 크게 벗어나는 값을 의미합니다. 이는 센서 오류, 입력 실수, 데이터의 특성 등 여러 원인으로 발생할 수 있습니다. 이상치를 탐지하고 처리하는 것은 모델의 정확도를 높이는 중요한 과정입니다.
이상치 탐지 방법
- 사분위수(IQR) 방법: 1분위수(Q1)와 3분위수(Q3)를 이용해 탐지
- Z-score 방법: 평균에서 표준편차 3배 이상 벗어난 값 탐지
- 시각화 방법: 박스플롯(Box plot) 및 히스토그램을 활용
import numpy as np
import matplotlib.pyplot as plt
data = np.array([10, 12, 14, 15, 16, 100]) # 100은 이상치
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
outliers = data[(data < lower_bound) | (data > upper_bound)]
print("이상치:", outliers)
plt.boxplot(data)
plt.show()
위 코드를 실행하면 박스플롯(Box plot)을 통해 이상치를 시각적으로 확인할 수 있습니다. 이상치는 제거하거나 대체해야 모델이 왜곡되지 않고 최적의 성능을 낼 수 있습니다!
정규화 vs 표준화 비교 🔍
데이터 전처리에서 정규화(Normalization)와 표준화(Standardization)는 매우 중요한 역할을 합니다. 하지만 언제 어떤 방법을 사용해야 할까요? 🤔 아래 표를 통해 비교해보겠습니다!
비교 항목 | 정규화(Normalization) | 표준화(Standardization) |
---|---|---|
목적 | 데이터를 특정 범위(0~1)로 변환 | 데이터를 평균 0, 표준편차 1로 변환 |
공식 | (X - X_min) / (X_max - X_min) | (X - μ) / σ |
이상치 민감도 | 높음 (이상치의 영향을 많이 받음) | 낮음 (이상치에 강함) |
적용 분야 | 신경망 모델 (Neural Networks) | 선형 회귀, PCA, KNN 등 |
정규화 vs 표준화 선택 기준
- 정규화는 데이터 범위가 다르고, 이상치가 적을 때 유용합니다.
- 표준화는 정규 분포를 따르는 데이터에 효과적이며, 이상치에 강합니다.
💡 데이터의 특성과 사용하려는 알고리즘에 따라 적절한 방법을 선택하세요!
이상치 탐지 및 처리 방법 💰
이상치는 머신러닝 모델의 성능을 저하시킬 수 있기 때문에 적절한 탐지 및 처리가 필요합니다. 일반적으로 통계적 방법, 머신러닝 기반 기법, 시각적 방법을 활용할 수 있습니다.
이상치 탐지 방법
- IQR (Interquartile Range) 방법: 사분위수를 활용한 이상치 탐지
- Z-score (표준 점수): 평균에서 표준편차 3배 이상 벗어난 값 탐지
- 머신러닝 기법: Isolation Forest, DBSCAN 등의 알고리즘 활용
- 시각적 방법: 박스플롯(Box Plot), 히스토그램을 이용한 탐지
import numpy as np
from scipy import stats
data = np.array([10, 12, 14, 15, 16, 100]) # 이상치 포함 데이터
z_scores = np.abs(stats.zscore(data))
outliers = data[z_scores > 3]
print("탐지된 이상치:", outliers)
이상치 처리 방법
- 제거(Removal): 이상치를 데이터셋에서 제거
- 대체(Imputation): 평균, 중앙값 또는 예측값으로 대체
- 변환(Transformation): 로그 변환, Box-Cox 변환 등을 사용
적절한 이상치 처리 방법을 선택하여 데이터의 품질을 향상시키세요!
실제 사례 및 코드 예제 💻
이제까지 배운 개념들을 실무에서 어떻게 활용할 수 있을까요? 실제 데이터셋을 활용하여 정규화, 표준화, 이상치 처리를 적용해 보겠습니다.
📌 머신러닝 데이터 전처리 예제
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from scipy import stats
# 예제 데이터 생성
data = {'Feature1': [10, 200, 30, 400, 50, 600, 700],
'Feature2': [1, 2, 3, 4, 5, 6, 100]}
df = pd.DataFrame(data)
# 이상치 탐지 및 제거 (Z-score 활용)
df_no_outliers = df[(np.abs(stats.zscore(df)) < 3).all(axis=1)]
# 정규화 적용
min_max_scaler = MinMaxScaler()
df_normalized = pd.DataFrame(min_max_scaler.fit_transform(df_no_outliers), columns=df.columns)
# 표준화 적용
standard_scaler = StandardScaler()
df_standardized = pd.DataFrame(standard_scaler.fit_transform(df_no_outliers), columns=df.columns)
print("정규화 데이터:\n", df_normalized)
print("표준화 데이터:\n", df_standardized)
위 코드는 이상치를 제거한 후, 정규화와 표준화를 적용하는 예제입니다. 머신러닝 모델을 학습하기 전에 이런 전처리 과정을 거치면 모델의 성능이 크게 향상될 수 있습니다!
마무리 및 정리 📝
이번 글에서는 데이터 전처리의 핵심 개념인 정규화, 표준화, 이상치 처리에 대해 알아보았습니다. 적절한 데이터 전처리는 머신러닝 모델의 성능을 향상시키는 중요한 과정입니다.
마지막으로 요약해볼까요? ✅ 정규화: 데이터를 0~1 범위로 변환 (Min-Max Scaling) ✅ 표준화: 평균 0, 표준편차 1로 변환 (Z-score Normalization) ✅ 이상치 처리: IQR, Z-score, 머신러닝 기법을 활용
여러분도 실제 데이터에서 위 개념들을 활용해보세요! 혹시 궁금한 점이 있거나 추가로 다루었으면 하는 주제가 있다면, 댓글로 의견을 남겨주세요! 😊
🔗 관련된 사이트 링크
- Scikit-learn 데이터 전처리 공식 문서 - 정규화 및 표준화 구현 가이드
- Feature Scaling in Machine Learning - 전처리 개념 및 적용 사례
- 이상치 탐지 및 처리 방법 - IQR, Z-score, 머신러닝 활용
위 사이트에서 더 많은 예제 코드와 실전 적용 방법을 확인해보세요!
🏷 태그 정리
머신러닝, 데이터 전처리, 정규화, 표준화, 이상치 처리, 데이터 분석, 스케일링, 머신러닝 모델, 피처 엔지니어링, AI 데이터
🏷 태그 정리
머신러닝, 데이터 전처리, 정규화, 표준화, 이상치 처리, 데이터 분석, 스케일링, 머신러닝 모델, 피처 엔지니어링, AI 데이터
