본문 바로가기
카테고리 없음

AI 데이터 전처리 필수 용어: 정규화, 표준화, 이상치 처리

by paper-knowledge 2025. 3. 16.
반응형

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, 머신러닝 기법을 활용

여러분도 실제 데이터에서 위 개념들을 활용해보세요! 혹시 궁금한 점이 있거나 추가로 다루었으면 하는 주제가 있다면, 댓글로 의견을 남겨주세요! 😊

🔗 관련된 사이트 링크

위 사이트에서 더 많은 예제 코드실전 적용 방법을 확인해보세요!

🏷 태그 정리

머신러닝, 데이터 전처리, 정규화, 표준화, 이상치 처리, 데이터 분석, 스케일링, 머신러닝 모델, 피처 엔지니어링, AI 데이터

🏷 태그 정리

머신러닝, 데이터 전처리, 정규화, 표준화, 이상치 처리, 데이터 분석, 스케일링, 머신러닝 모델, 피처 엔지니어링, AI 데이터

반응형