캐글

[Kaggle Study] 13. Normalization 정규화

dongsunseng 2024. 11. 15. 14:27
반응형

This post heavily relies on Andrew Ng's lecture:

 

심층 신경망 개선하기: 하이퍼파라미터 튜닝, 정규화 및 최적화

DeepLearning.AI에서 제공합니다. 딥러닝 스페셜라이제이션의 두 번째 과정에서는 딥러닝 블랙박스를 열어 성능을 향상시키고 좋은 결과를 도출하는 프로세스를 체계적으로 이해합니다. 딥러닝 애

www.coursera.org

Normalization

  • Normalization(정규화) 은 training process의 속도를 높여주는 기법들 중 하나입니다.

  •  주의 해야할 점 중 하나는 test set에도 같은 mean, variance 값을 사용하여 정규화해줘야 올바른 test 결과값이 나온다는 것입니다.

  • Unnormalized cost function과 Normalized 된 것과 비교했을 때, 2D로 압축해서 보면 그 차이가 잘 드러남
    • Unnormalized cost function을 보면 훈련 과정이 매끄럽지 않고 Gradient descent가 굉장히 많은 step을 통해서 최적값에 도달하는 것을 발견할 수 있음
      • 따라서 learning rate도 작은 값을 사용해야 함
    • Normalized cost function을 보면 특별한 조치가 필요 없이 매끄럽게 훈련이 진행되는 것을 알 수 있음
  • x 값들(인풋값)의 범위가 0~1, -1~1, 1~2 이렇게 비슷한 경우에는 그대로 사용해도 되지만, 범위의 차이가 크다면 정규화를 고려해보는 것이 좋음
반응형

Normalization의 종류

  • Min-Max Normalization
    • 데이터의 최솟값을 0, 최댓값을 1로 조정하는 방법임
    • 데이터가 0과 1 사이의 범위 내에 분포하도록 하여 데이터의 분포의 형태가 유지되는 동시에 scale을 조정함

  • Z-score Normalization(= Standadization)
    • Standardization(표준화) 과정
    • 데이터가 평균을 기준으로 얼마나 떨어져 있는지를 표준편차의 단위로 표시하는 방법임
    • 이 방법은 데이터가 정규분포를 따른다는 가정이 있을 때 가장 효과적

  • Decimal Scaling Normalization
    • Min-Max Normalization과 유사한 방법
    • 하지만 Min-Max Normalization처럼 최소값과 최대값을 사용하지 않고, 가장 큰 자릿수를 10의 거듭제곱으로 나누어 scale을 맞추는 방법임
    • 이 방법은 scale이 어떤 범위에 있는지에 상관없이 적용할 수 있음
    • x_norm = x / 10^j, where j = ceil(log10(max(abs(x))))
  • Log Transformation
    • 데이터의 값에 로그 함수를 취하여 scale을 조정하는 방법임
    • 이 방법은 데이터가 positive skewed한 경우 적용할 수 있음
    • x_norm = log(x)
  • Power Transformation
    • 데이터에 제곱근, 세제곱근 등의 함수를 취하여 scale을 조정하는 방법임
    • 이 방법은 Log Transformation과 유사하게 skewed 데이터를 normalize하는 데 효과적
    • x_norm = x^p, where p is a constant

Standardization(표준화) vs. Normalization(정규화)

  • 첫 번째 사진에서 진행한 과정은 사실 Standardization임
  • 정규화
    • 일반적으로 정규화는 모든 feature의 값을 0 ~ 1의 범위의 값으로 조정하는 것을 의미함
      • 즉, 데이터에서 최솟값을 빼고 전체 범위로 나누는 것임
    • 스케일링 시, 최대 최솟값이 사용됨
    • 피처의 크기가 다를 때 사용
    • 0~1 / -1~1 사이의 값으로 스케일링
    • 분포에 대해 모를 때 유용함
    • 상대적 크기에 대한 영향력을 줄일 때 용이함 + 물론 이상치 제거에도 용이함
  • 표준화
    • 스케일링 시 평균과 표준편차가 사용됨
    • 평균이 0, 표준편차가 1인 것을 확인하고 싶거나 그렇게 만들고 싶을 때 사용
    • 특정 범위로 제한되지 않음
    • 피터가 정규분포(가우시안 분포)인 경우 유용함
    • 이상치 제거에 용이함

Normalization의 장단점

  • 장점
    • 안정적인 결과
    • 서로 다른 scale을 가진 feature들을 비교할 수 있음
    • Outlier의 영향을 줄일 수 있음
    • 학습 시 더 빠르게 수렴할 수 있음
    • Local minima에 빠질 가능성이 적어짐
    • 고차원 데이터는 변수의 개수가 많기 때문에 모델 학습이 어려운데 이를 해결할 수 있음
      • 불필요한 차원을 줄일 수 있기 때문
  • 단점
    • 일부 feature 값들이 극단적으로 작거나 큰 경우, normalization을 거치게 되면 데이터의 분포가 크게 바뀌어 원래 데이터의 의미를 잃을 수 있음
      • 원래 데이터 값을 normalization 과정 이전으로 복원하여 데이터를 재해석해야하는 작업을 진행해야되는 상황이 발생할 수 있음
    • 데이터가 이미 normalization 되어있는 상태에서 재처리하게 되면 오히려 정보가 손실될 수 있음
      • 다시 말해, 정규화를 진행해야할지 말지 데이터의 분포를 통해 세밀하게 판단하는 과정이 필요함
    • 정규화는 여러 가지 방법이 있고 각 방법에 따라 결과가 달라질 수 있음

모델 종류에 따른 방법 선택

  • 신경망 모델:
    • 정규화를 선호함
    • 신경망은 보통 입력 데이터의 크기와 분포에 민감하게 반응하기 때문에 정규화를 통해 데이터의 범위를 조정하는 것이 도움됨
  • 트리 기반 모델:
    • 일반적으로 정규화 또는 표준화를 적용하지 않음
    • 이 모델들은 데이터의 상대적인 순서를 고려하기 때문에 데이터의 스케일링에 크게 영향받지 않음

 

Reference

 

정규화 (Normalization)

Normalization은 데이터셋의 값을 표준화하여 더 효율적인 분석을 가능하게 하는 데이터 전처리 기법입니다. 일반적으로 정규화는 모든 feature의 값을 0과 1 사이로 조정하는 것을 말합니다. 데이터

d-craftshop.tistory.com

 

 

[Machine Learning] 정규화(Normalization) vs 표준화(Standardization)

정규화와 표준화 둘 중 어떤 상황에 어떤 방법을 선택해야 하는지 궁금해 알아보았다.참고 정규화 (Normalization)정규화의 목적은 데이터셋의 numerical value 범위의 차이를 왜곡하지 않고 공통 척도

sungwookoo.tistory.com

 

 

데이터의 정규화(normalization) 또는 표준화(standardization)이 필요한 이유

[목차] 1. 서론 2. 데이터의 정규화(normalization)와 표준화(standardization) 개념 소개 3. 정규화와 표준화의 목적과 필요성 3.1. 이상치(outliers) 처리 3.2. 변수 간 스케일 차이 해결 3.3. 모델의 수렴 속도

mozenworld.tistory.com


It’s a tough pill to swallow, but we all get knocked down.
It’s about getting back up and taking it on the chin.
- Conor Mcgregor -
반응형