반응형
This post heavily relies on Andrew Ng's lecture:
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을 보면 특별한 조치가 필요 없이 매끄럽게 훈련이 진행되는 것을 알 수 있음
- Unnormalized cost function을 보면 훈련 과정이 매끄럽지 않고 Gradient descent가 굉장히 많은 step을 통해서 최적값에 도달하는 것을 발견할 수 있음
- 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 사이의 값으로 스케일링
- 분포에 대해 모를 때 유용함
- 상대적 크기에 대한 영향력을 줄일 때 용이함 + 물론 이상치 제거에도 용이함
- 일반적으로 정규화는 모든 feature의 값을 0 ~ 1의 범위의 값으로 조정하는 것을 의미함
- 표준화
- 스케일링 시 평균과 표준편차가 사용됨
- 평균이 0, 표준편차가 1인 것을 확인하고 싶거나 그렇게 만들고 싶을 때 사용
- 특정 범위로 제한되지 않음
- 피터가 정규분포(가우시안 분포)인 경우 유용함
- 이상치 제거에 용이함
Normalization의 장단점
- 장점
- 안정적인 결과
- 서로 다른 scale을 가진 feature들을 비교할 수 있음
- Outlier의 영향을 줄일 수 있음
- 학습 시 더 빠르게 수렴할 수 있음
- Local minima에 빠질 가능성이 적어짐
- 고차원 데이터는 변수의 개수가 많기 때문에 모델 학습이 어려운데 이를 해결할 수 있음
- 불필요한 차원을 줄일 수 있기 때문
- 단점
- 일부 feature 값들이 극단적으로 작거나 큰 경우, normalization을 거치게 되면 데이터의 분포가 크게 바뀌어 원래 데이터의 의미를 잃을 수 있음
- 원래 데이터 값을 normalization 과정 이전으로 복원하여 데이터를 재해석해야하는 작업을 진행해야되는 상황이 발생할 수 있음
- 데이터가 이미 normalization 되어있는 상태에서 재처리하게 되면 오히려 정보가 손실될 수 있음
- 다시 말해, 정규화를 진행해야할지 말지 데이터의 분포를 통해 세밀하게 판단하는 과정이 필요함
- 정규화는 여러 가지 방법이 있고 각 방법에 따라 결과가 달라질 수 있음
- 일부 feature 값들이 극단적으로 작거나 큰 경우, normalization을 거치게 되면 데이터의 분포가 크게 바뀌어 원래 데이터의 의미를 잃을 수 있음
모델 종류에 따른 방법 선택
- 신경망 모델:
- 정규화를 선호함
- 신경망은 보통 입력 데이터의 크기와 분포에 민감하게 반응하기 때문에 정규화를 통해 데이터의 범위를 조정하는 것이 도움됨
- 트리 기반 모델:
- 일반적으로 정규화 또는 표준화를 적용하지 않음
- 이 모델들은 데이터의 상대적인 순서를 고려하기 때문에 데이터의 스케일링에 크게 영향받지 않음
Reference
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 -
반응형
'캐글' 카테고리의 다른 글
[Kaggle Study] #2 Porto Seguro's Safe Driver Prediction (1) | 2024.11.19 |
---|---|
[Kaggle Study] 14. Hyperparameter Tuning (1) | 2024.11.16 |
[Kaggle Study] 12. Early Stopping (0) | 2024.11.15 |
[Kaggle Study] 11. Data Augmentation (0) | 2024.11.15 |
[Kaggle Study] 10. About Structuring ML Projects (4) - End-to-end learning (0) | 2024.11.14 |