본문 바로가기
Machine Learning

Python 예제를 사용한 기계 학습의 정규화 및 표준화

by 찐남 2022. 6. 13.

모든 기계 학습의 시작은

데이터 전처리로 시작됩니다.

 

Feature Scaling은 전처리에서

중요한 단계 중 하나일 수 있습니다.

 

이번 포스팅에서는

2개의 Feature Scaling에 대해서

알아보겠습니다.

 

  1. Normalization (정규화)
  2. Standardization (표준화)
  3. Feature Scaling 사용 시기
  4. 상황에 따른 정규화 및 표준화 선택 
  5. 요약

 

 

Normalization (Min-Max Normalization)

이러한 접근 방식은 feature를

[0,1] 사이의 값으로 변환시킵니다.


공식은 다음과 같이 사용됩니다.

 

 

x = min(x)일 때 0을 반환하고,

최솟값은 값 0으로 바뀝니다.
x =max(x) 일 때 1을 반환하고,

최댓값은 값 1로 바뀝니다.
다른 값은 0과 1 사이의 값으로 변환됩니다.

 

Standardization( Z-Score Normalization)

여기에서 모든 값은 평균(μ) = 0, 

표준 편차(σ) = 1인 표준 정규 분포의

특성을 갖는 방식으로 축소됩니다.

 

이 변환에는 최소 또는 최대

경계가 없습니다(-Inf, Inf).


공식은 다음과 같이 사용됩니다. 

 

Python 코드 예제

import pandas as pd
import seaborn as sns

irisData = pd.read_csv("D:/iris.csv")
irisData.drop(["ID","Species"], axis = 1).describe()
sns.pairplot(irisData.drop(["ID","Species"], axis = 1))

<iris data>

 

Normalization 코드:

from sklearn.preprocessing import MinMaxScaler

normalizationFeatureScaling = MinMaxScaler()
normalizationScaling = normalizationFeatureScaling.fit_transform(irisData.drop(["ID","Species"], axis = 1))

normalizationScaling = pd.DataFrame(normalizationScaling, columns = irisData.drop(["ID","Species"], axis = 1).columns)

normalizationScaling.describe()

 

Standardization 코드:

from sklearn.preprocessing import StandardScaler

standardFeatureScaling = StandardScaler()
standardScaling = standardFeatureScaling.fit_transform(irisData.drop(["ID","Species"], axis = 1))

standardScaling = pd.DataFrame(standardScaling, columns = irisData.drop(["ID","Species"], axis = 1).columns)
standardScaling.describe()

 

 

 

Feature Scaling 사용 시기

feature scaling은 알고리즘이

기울기 계산을 사용할 때 사용됩니다.

feature의 크기가

알고리즘에 영향을 미치기 때문에

Linear Regression, Logistic Regression, 

Artificial Neural Networks와 같은 알고리즘은 

전처리로서 feature scaling이 필요할 수 있습니다.


그러나 Decision Trees, Random Forests, 

SVM 및 K-means Clustering은 

기능의 크기가 알고리즘에 

영향을 미치지 않기 때문에 

필요하지 않습니다. 

상황에 따른 정규화 및 표준화 선택 

사실 표준화나 정규화 선택에 대한

절대적인 규칙은 없습니다.

 

그러나 몇 가지 팁이 있습니다.
데이터가 가우스 분포(정규 분포)를 따른다면 

표준화가 더 의미가 있을 것입니다.

또한 표준화는 이상치의 영향을 받지 않습니다. 

따라서 이상치가 많은 경우에도 

표준화를 계속 진행할 수 있습니다.

신경망을 사용하는 경우 

데이터 분포가 가정되지 않으므로 

정규화를 사용할 수 있습니다.

 

요약

알고리즘이 기울기 계산을 사용할 때

feature scaling이 사용됩니다.

표준화나 정규화를 선택하는 데에는 

옳고 그른 답이 없습니다.

 

정규화는 
데이터셋의 최솟값이 0이 되고, 

데이터셋의 최댓값이 1이 되어 

분포에 영향을 미치지 않습니다.

표준화 프로세스 후에 

평균 및 표준 편차가 변경되고

(mean = 0, std =1) 분포도 

변경됩니다. 

 

또한 상한 및 하한이 있을 수 있습니다.

 

 

반응형

댓글