왜 Normalize 해야만 할까??

2020. 7. 19. 16:42Data Science

유명한 Air Bnb의 dataset을 보면 위와 같은 정보들이 있다..

 

필자와 같이 가정을 해보자 해당 Dataset중 위의 Data를 사용해서 K-mean Cluster 기법을 사용한

분석을 하고 싶다고 말이다.

 

일단 눈에 띄는 것은 변수들의 크기와 변화량이다.

수가 아닌 Data도 수로 변환하여 분석하는 것이 Machine Learning의 보편적인 방법인데..

Maximum_nights가 다른 변수에 비해서 많이 숫자가 크고 변화가 심한 것을 볼수 있다. 

 

Feature의 가중치등을 부여하는 작업을 하더라도 당연히 숫자 자체적으로 Maximum_nights의 정보가

분석결과에 너무나 많은 impact를 줄것은 사실 알고리즘을 이해하지 못해도 어느정도

예측이 가능하다.

 

이것 정말 우리가 원하는 상황은 아니기에

 

전처리에 정규화 과정을 필수적으로 넣어줘야 하는 것이다.

 

-1 - 1 사이의 값이 되도록 값에서 평균을 빼주고 표준편차로 나눠주는 행위를 말한다.

 

이렇게 하면 모든 Feature들의 절대적인 크기가 정규화되었고, 분석에도 개별 Column들이 동등한 영향을

주게 될 것이다.

 

Python으로는..

 

아래와 같이 Pandas DataFrame인 dc_listings를 쉽게 Normalize 할수 있다. 

normalized_listings = (dc_listings - dc_listings.mean())/(dc_listings.std())