[데이터 사이언스/개념] 표준화의 장점 및 데이터 scale 차이에 따른 영향

2024. 8. 15. 19:33데이터 사이언스


표준화를 통해 데이터의 스케일 차이를 줄임으로써
모델이 각 특성에 균등하게 학습할 수 있도록 도와줍니다.
이는 특히 경사 하강법을 사용하는 모델에서
학습 속도를 높이고 성능을 향상시키는 데 중요한 역할을 합니다.

표준화의 장점

학습 속도 향상
  • 많은 머신 러닝 알고리즘은 데이터의 크기와 분포에 민감합니다. 표준화된 데이터는 모델이 더 빠르게 수렴할 수 있도록 도와줍니다. 특히 경사 하강법을 사용하는 알고리즘에서 학습 속도를 크게 향상시킬 수 있습니다.
스케일 차이 문제 해결
  • 원본 데이터의 특성들이 매우 다른 스케일을 가질 경우, 스케일이 큰 특성들이 모델 학습에 더 큰 영향을 미치게 됩니다. 표준화는 모든 특성들을 동일한 스케일로 변환하여, 각각의 특성이 동일한 중요도로 고려되게 합니다.
모델 성능 향상
  • 표준화는 특히 거리 기반 알고리즘(KNN, SVM, K-Mean clustering 등)에서 중요합니다. 이 알고리즘들은 특성 간의 거리 계산에 의존하기 때문에, 특성들이 동일한 스케일을 가질 때 더 좋은 성능을 발휘합니다.
회귀 모델의 안정성 증가
  • 회귀 모델에서는 특성들이 서로 다른 스케일을 가지면, 계수 추정값이 왜곡될 수 있습니다. 표준화를 통해 이러한 문제를 줄일 수 있습니다.
숫자 표현의 안정성
  • 표준화를 통해 값의 범위가 줄어들면, 숫자 표현의 안정성이 증가합니다. 이는 특히 신경망과 같은 깊은 학습 모델에서 중요합니다. 신경망에서는 큰 값이 곧 큰 기울기를 의미하기 때문에, 값이 너무 크거나 작으면 학습이 불안정해질 수 있습니다.

데이터의 스케일 차이

  • 각 특성(변수)들의 값의 범위가 서로 다른 정도를 의미합니다.
  • 예를 들어, 어떤 특성의 값이 1에서 10 사이에 분포하고, 다른 특성의 값이 1000에서 10000 사이에 분포한다면, 이 두 특성 간의 스케일 차이가 매우 큰 것입니다.

스케일 차이의 영향

큰 스케일 차이
  • 데이터의 특정 특성들이 다른 특성들에 비해 매우 큰 값이나 매우 작은 값을 가질 때.
  • 예를 들어, 주택 가격 데이터에서 면적이 50에서 500 평방미터 사이에 분포하고, 가격이 100,000에서 1,000,000 달러 사이에 분포하는 경우, 면적과 가격 간의 스케일 차이가 큽니다.
  • 머신 러닝 모델에서 큰 스케일 차이를 가지는 특성들은 더 큰 가중치를 가질 가능성이 높아집니다. 이는 모델이 특정 특성에 치우쳐 학습되는 결과를 초래할 수 있습니다.
작은 스케일 차이
  • 데이터의 모든 특성들이 비슷한 범위 내의 값을 가질 때.
  • 예를 들어, 학생들의 시험 점수를 0에서 100 사이로 측정한 경우, 모든 특성들이 동일한 스케일을 가집니다.
  • 스케일 차이가 작은 데이터는 각 특성이 모델에 균등하게 기여할 수 있도록 합니다.

예시) 원본 데이터

import pandas as pd

# 원본 데이터 예시
df = pd.DataFrame({
    'feature1': [1, 2, 3, 4, 5],   # 작은 스케일 (1에서 5)
    'feature2': [10, 20, 30, 40, 50] # 큰 스케일 (10에서 50)
})

print("Original DataFrame:")
print(df)

원본 데이터 출력 결과

Original DataFrame:
   feature1  feature2
0         1        10
1         2        20
2         3        30
3         4        40
4         5        50

  • feature1은 1에서 5 사이의 값을 가집니다.
  • feature2는 10에서 50 사이의 값을 가집니다.
  • 두 특성 간의 값의 범위(스케일) 차이가 큽니다.

표준화 후 데이터

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
df_standardized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

print("\\\\nStandardized DataFrame:")
print(df_standardized)

표준화된 데이터 출력 결과

Standardized DataFrame:
   feature1  feature2
0 -1.414214 -1.414214
1 -0.707107 -0.707107
2  0.000000  0.000000
3  0.707107  0.707107
4  1.414214  1.414214

  • feature1과 feature2 모두 표준화되어 평균이 0, 표준편차가 1인 값을 가집니다.
  • 두 특성 간의 값의 범위(스케일)가 동일해졌습니다.

결론

  • 큰 스케일 차이
    • 원본 데이터에서 feature1과 feature2의 값의 범위가 크게 다릅니다. feature1은 1에서 5 사이, feature2는 10에서 50 사이에 분포합니다.
  • 작은 스케일 차이
    • 표준화된 데이터에서 두 특성 모두 평균이 0이고 표준편차가 1인 값을 가집니다. 즉, 값의 범위가 동일해졌습니다.