Doby's Lab

Standardization(표준화)와 Normalization(정규화)의 차이 본문

AI/Concepts

Standardization(표준화)와 Normalization(정규화)의 차이

도비(Doby) 2022. 9. 3. 14:22

공부를 하다 보면 Data Preprocessing을 할 일이 많은데 책에서는 정규화를 한다 하지만 StandardScaler를 통해 Data Scaling을 하는 경우가 종종 있습니다. 언어가 혼용되는 것인지 잘못 알고 있는 건지 정리를 하고 넘어가려 합니다.


Data Preprocessing

정규화와 표준화 둘 다 데이터 전처리를 하는 데에 사용됩니다.

 

  • 데이터 전처리를 하는 이유는?

고양이와 강아지를 분류하기 위해 꼬리의 길이, 미간의 길이, 무게 등 각 클래스에 대한 feature를 가지는 데이터들이 주어지고, Logistic Regression Model을 만든다고 합시다. Logistic Regression은 선형 방정식이라는 Model Parameter를 만들어내는데 Sample의 각 feature가 Scale(범위)가 모두 다르다 보니 선형 방정식의 계수에 큰 영향을 끼칩니다.

 

꼬리의 길이가 [10, 20], 미간의 길이가 [0, 5], 무게가 [1000 ~ 2000]이라고 한다면 무게가 Model Parameter를 만들 때 계수에 대해 큰 영향을 미칠 것입니다. 즉, Overfitting을 일으킬 수도 있다는 얘기입니다.

 

이러한 일이 없기 위해 Data의 모든 feature가 비슷한 범위를 가지도록 Scaling이라는 작업을 수행하여 Overfitting이 일어나지 않도록 해줍니다.

 

Scaling 작업 중 대표적인 2가지가 Standardization(표준화), Normalization(정규화)가 있는 것입니다.


Standardization

Standardization의 목적은 데이터의 평균이 0, 분산이 1이 되도록 만드는 것입니다.

해당 작업을 거치면 데이터는 0을 중심으로 양옆으로 분포가 됩니다. (정규분포로 바꾼다라는 뜻이 되기도 합니다.)

그리고, Standardization을 거친 데이터들은 표준점수(or Z-Score)라고 부르기도 합니다.

 

Standardization을 하기 위해서는 Mean(평균), Standard Deviation(표준 편차)와 같은 값들이 필요합니다.

Strandardization

[Code]

사이킷런을 통해 Transformer로 사용할 수 있습니다.

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
ss.fit(data)
data_standardScaled = ss.transform(data)
data_standardScaled

Standardization을 통해 값들이 모두 0을 주변으로 모인 것을 확인할 수 있습니다.


Normalization

Normalization의 목적은 데이터의 Scale을 [0, 1]이 되도록 만드는 것입니다.

다음 아래 식을 통해 구할 수 있습니다.

Normalization

[Code]

사이킷런을 통해 Transformer로 사용할 수 있습니다.

from sklearn.preprocessing import MinMaxScaler

mms = MinMaxScaler()
mms.fit(data)
data_minMaxScaled = mms.transform(data)
data_minMaxScaled

Normalization을 통해 데이터의 값 범위가 모두 [0, 1]로 바뀐 것을 알 수 있습니다.


Standardization vs Normalization

둘 중 어느 스케일링이 더 좋은지 판단하라면 판단할 수 없습니다. 주어진 데이터에 따라 Case-by-case이기 때문에 상황에 따라 유연하게 적합한 스케일링을 골라야 합니다.

 

그리고, 정규화를 해야 하는데 StandardScaler를 쓰는 경우 때문에 이 글을 쓰게 됐는데 여러 자료를 찾아보다가 혼용되어 사용하는 것을 알게 되고, 되도록이면 영문 용어를 쓰는 것이 낫겠다고 판단했습니다. (Regularization도 종종 정규화라 불릴 때가 많은 거 같습니다.)

728x90

'AI > Concepts' 카테고리의 다른 글

Dropout에 대하여  (1) 2022.12.31
L1, L2 Regularization에 대하여  (0) 2022.12.31
Image Augmentation이란?  (2) 2022.12.29
Normalization이 필요한 이유  (0) 2022.12.28
Gradient Descent와 Loss Function의 관계  (0) 2022.09.03