모든 기계 학습의 시작은
데이터 전처리로 시작됩니다.
Feature Scaling은 전처리에서
중요한 단계 중 하나일 수 있습니다.
이번 포스팅에서는
2개의 Feature Scaling에 대해서
알아보겠습니다.
- Normalization (정규화)
- Standardization (표준화)
- Feature Scaling 사용 시기
- 상황에 따른 정규화 및 표준화 선택
- 요약
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))
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) 분포도
변경됩니다.
또한 상한 및 하한이 있을 수 있습니다.
'Machine Learning' 카테고리의 다른 글
Confusion Matrix, Precision-Recall, F1-Score 이해하기 (0) | 2022.08.07 |
---|---|
앙상블 학습에 대한 설명과 기법에 대한 소개 (2) | 2022.07.23 |
DecisionTreeClassifier (0) | 2022.06.12 |
Cross Validation(교차 검증) (0) | 2022.06.05 |
하이퍼파라미터 Serching (with 파이썬) - GridSearchCV() 함수 (0) | 2022.02.14 |
댓글