표준화, 정규화

까만호랭·2023년 11월 14일

머신러닝에서는 데이터에 대한 결과가 잘 나오길 기대하기 때문에 표준화 혹은 정규화 작업을 거친다.
예를 들어, 범죄발생 건수를 예측하는데 있어 가로등 개수, 스트레스 인지율, 소비자 물가지수 등 많은 변수들이 존재하지만 나타내는 크기가 다르다.
이떄, 각각 다른 크기의 데이터들에 대해 기준을 설정하고 데이터들을 평가하기 위해 사용하는 것이다.

표준화

표준화는 데이터의 평균을 0으로, 표준편차를 1로 만들어주는 과정이다.
표준화를 진행하면 평균이 0, 표준편차가 1이기 때문에 표준 정규분포가 된다.

             인구수
연도              
2008  10456034.0
2009  10464051.0
2010  10575447.0
2011  10528774.0
2012  10442426.0
2013  10388055.0
2014  10369593.0
2015  10297138.0
2016  10204057.0
2017  10124579.0
2018  10049607.0
2019  10010983.0
2020   9911088.0
2021   9736027.0
2022   9667669.0
# 이 인구수라는 값에 대해 표준화를 실행하면
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()

popul_tot[['인구수']] = scaler.fit_transform(popul_tot[['인구수']])
#위의 표준화 코드를 실행하면
           인구수
연도            
2008  0.866835
2009  0.895671
2010  1.296345
2011  1.128470
2012  0.817890
2013  0.622325
2014  0.555920
2015  0.295311
2016 -0.039487
2017 -0.325357
2018 -0.595020
2019 -0.733944
2020 -1.093251
2021 -1.722918
2022 -1.968792
# 이렇게 값이 바뀐다.

정규화

정규화는 데이터의 범위를 [0, 1] 또는 [-1, 1] 등으로 조절한다.

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
x_scaled = scaler.fit_transform(x.reshape(-1,1))
print(x_scaled[:10].flatten())
[0.87492405 0.37658554 0.39521325 0.27379961 0.70578689 0.
 0.90177124 0.34327895 0.58402299 0.45734703] #정규화를 통해 [0,1]로 출력된다.

표준화와 정규화의 선택 방법

표준화와 정규화에 대한 특별한 선택 방법이 있는건 아니라고 한다.
표준화를 통해 이상치를 제거하고 이상치가 제거된 데이터들을 정규화를 실행하여 상대적 크기에 대한 영향력을 줄인 후 다음 분석과정을 실행한다.

profile
남들과 함께 발자국을 남기는 까만호랭

0개의 댓글