2025. 12. 26. 21:21ㆍComputer Science/AI(ML, DL, RL, etc)

Decision Tree나 Random Forest가 아닌 이상, 스케일링은 아주 중요한 작업입니다. 대부분의 ML과 최적화 알고리즘은 특성의 스케일이 비스므리 할때 훨씬 성능이 좋기 때문입니다. 뭔소리냐면, 한 속성은 char타입이고 다른 얘가 int타입이라 치면 range 범위 차이가 장난 아니게 납니다. 그걸 그대로 MSE에 가져다 박는다 치면 알고리즘은 두번째 특성의 영향을 정말로 무지막지하게 받게 될 것입니다.

해서 스케일이 다른 특성을 맞추는 방법으로는 대표적으로 Normalization과 Standardization이 있습니다. 먼저 대부분 정규화의 경우는 특성의 스케일을 [0, 1] 범위에 맞추는 것을 말하는데 - 그냥 min-max Scaling을 생각하면 편합니다.
이 친구는 정해진 범위의 값에서 놀때 유용하게 사용합니다만, Gradient Descent와 같은 최적화 알고리즘/대부분의 알고리즘에서는 표준화를 사용합니다. 표준화는 평균을 0으로 맞추고 표준편차를 1에 맞춰 정규분포에서 본 특징을 가지게 합니다. 그렇다고 표준화를 한다고 해서 데이터가 정규분포에 맞춰지는건 아닙니다.
여기서 u_x는 어떤 특성의 샘플 평균이고, 시그마는 그에 해당하는 표준 편차입니다. 참고로 직접 수식을 때려 넣어서 계산할 수도 있겠습니다만, MinMaxScaler처럼 사이킷런은 표준화를 위한 클래스(StandardScaler)도 제공합니다. 그리고 사이킷런 얘기가 나온 김에, RobustScaler라는 친구도 있습니다. 이 친구는 이상치가 많이 포함된 작은 데이터셋을 다룰때 아주 유용합니다.
쨋든 이렇게 다양한 방법이 있는데, 이걸 뭐 언제 써야할지 곤란하다면 대충 아래와 같이 정리해 볼 수 있습니다.
- 거리기반 알고리즘(KNN, K-mean, SVM, PCA) -> Standardization
- 경사하강법 기반(Linear/Logistic Regression, Neural Network) -> Standardization
- 이미지, 음성, 신호 등 물리적 범위에서 의미가 있는 데이터 (예: 가속도계, 음성) -> Normalization
참고로 Scaling은 전체 데이터에 대헤서 진행하는 것이 일반적이며, 각 샘플 묶음마다 Scaling을 하는 끔찍한 참사가 일어나지 않도록 항시 유의하도록 합시다.
'Computer Science > AI(ML, DL, RL, etc)' 카테고리의 다른 글
| ML에서 누락된 데이터를 다루기 (0) | 2025.12.25 |
|---|---|
| 맥컬록-피츠 뉴런/퍼셉트론 (0) | 2025.12.18 |
| 원숭이도 알아 먹을 수 있는 VAE 설명 (0) | 2025.07.01 |