반응형

오늘은 정규화, 표준화란 무엇이고 인공지능 모델을 학습시킬 때 왜 필요한지 포스팅을 남기고자 한다.

먼저, 정규화랑 표준화를 해주는 과정을 흔히 데이터를 스케일링(scaling)한다고 하며 이를 'data scaling' 혹은 'feature scaling'이라고 부른다.

 

이러한 정규화와 표준화는 왜 필요한 것일까?

모델은 target과 관련된 데이터의 특징(feature)을 뽑아서 학습한다.

예를 들어, 신규 고객의 보험료를 예측하는 모델을 만든다고 가정해 보자. 이때 사용되는 수치형 feature로  나이, bmi 지수가 있다고 해보자. 이때, 나이는 58이고 bmi지수는 19라는 값을 갖고 있다면, 모델은 나이의 58에만 큰 영향을 받아 모델의 성능이 낮아질 위험이 있다.

따라서 모든 데이터를 균등한 중요도(scale)로 반영하여 모델의 일반화 성능을 올리는 것이 바로 정규화와 표준화의 목적이다.

 

그렇다면, 정규화와 표준화는 무슨 차이일까?

정규화(normalization)

정규화는 위와 같이 데이터의 값의 범위를 0~1 사이의 값으로 바꿔주는 것이다.

정규화를 진행하게 되면 모델이 학습할 때 scale이 큰 특징에 영향을 많이 받는 것을 방지해주며 학습 속도가 향상된다.

머신러닝 패키지인 scikit-learn에서 preprocessing 모듈의 MinMaxScaler(최소-최대 스케일링) 함수를 사용해서 쉽게 사용할 수 있다.

그러나 정규화는 이상치(outlier)에 대해 취약하다는 큰 단점이 있다. 이러한 문제를 해결할 수 있는 것이 아래에 설명하는 표준화이다.

 

표준화(standardization)

https://cafecotech.hashnode.dev/standardization-or-normalization-ck97uo4eg01m7f3s1tip0btlc

표준화는 위와 같이 값의 평균을 0으로 만들고 분산이 1이 되도록 만들어 주는 것이다.

표준화를 진행하게 되면 모델이 학습할 때 scale이 큰 특징에 영향을 많이 받는 것을 방지해주며 학습 속도가 향상된다.

머신러닝 패키지인 scikit-learn에서 preprocessing 모듈의 StandardScaler(표준 스케일링) 함수를 사용해서 쉽게 사용할 수 있다.

 

정규화 vs 표준화

https://bskyvision.com/849

 

이외에도 지난 포스팅에 작성한 가중치 규제에 관한 내용(https://psleon.tistory.com/140)도 정규화의 범위에 포함하여 L1 정규화, L2 정규화라고도 한다.