본문 바로가기
머신러닝, 딥러닝/머신러닝

[머신러닝] 데이터 전처리

by 장찐 2022. 3. 21.

📚 Feature Scaling

 

 모델 학습 과정에서는 각 변수들에 대한 전처리가 필수적으로 요구된다(사실상 분석 프로세스의 대부분을 차지한다). 대표적인 전처리 과정 중 하나다 피쳐 스케일링이다. 학습에 사용되는 독립변수들이 여러개일 때, 이 변수들의 스케일이 다르다면 과적합이나 과소적합이 발생할 수 있다. 즉, 단위가 큰 독립변수는 분산이 크기 때문에 종속변수에 대한 설명력이 커지는 상황이 발생할 수 있다. 

 

ex) 독립변수 : 경력(year), 몸무게(kg) 

       종속변수 : 연봉 

 

 위와 같은 예시 변수의 경우에 실제 연봉에 미치는 영향은 '경력' 변수가 크지만, '몸무게' 변수의 스케일 자체가 크기 때문에 모델에서 설명력이 크게 나타날 수 있다. 이는 새로운 데이터에 대한 예측력을 저하시킨다. 대표적인 스케일링 방식에는 표준화와 min-max normalization이 있다. 

 

 

📌 1. 표준화 (Standardization) 

     평균=0, 분산=1 인 분포로 변경 

 

📌2. Min-Max normalization 

    최대값=1, 최소값=0 인 상태로 변경 

 위의 두 스케일링 방법 중에서 어떤 것이 주어진 데이터에 적합한 지는 시도해 봐야 알 수 있다. 두 가지 방법을 모두 시도해보고 성능이 좋은 방식을 선택하면 된다. 또한, 스케일링이 반드시 모델 성능을 향상시키는 것이 아니기 때문에 스케일링을 실시하지 않은 기본 변수로도 모델을 테스트 해봐야 봐야한다. 

 

 

📌스케일링 시 주의해야 할 점 !

  train set과 test set을 별도로 스케일링 해서는 안된다. 즉, 학습 데이터에서 얻어진 평균과 표준편차로 평가 데이터에 대해서도 스케일링을 실시해야 한다. 학습 데이터로 fit_transform을 실시하고 평가 데이터에 대해서는 transform만 진행한다. 별도로 스케일링을 하게되면 동일한 값을 가지는 관측치가 스케일링 이후에 값이 달라진다. 이렇게 되면 학습 데이터로 학습한 모델의 성능을 평가 데이터로 올바르게 파악할 수 없다.

 

추가) train/test 분리 전에 전체 변수를 스케일링 하면 안 됨 → train 데이터에 test 데이터의 정보가 반영 됨 

 


📚 범주형 변수 처리 

 

✅ 더미변수화 

 

 범주형 변수의 경우에는 더미변수화(1.0)를 통해서 수치형 변수로 입력해야 한다. 

 

 최종 학습할 변수를 선택할 때에는 기준으로 삼을 변수는 제외하고 입력해야 한다. 기준으로 할 변수를 제외해야 나중에 해석이 보다 편리하다. 위 예제에서 Korea가 중요한 변수라면 korea를 제외하고 japan, china에 대한 더미변수를 사용한다. 

 

 특정 범주형 변수의 카테고리가 2개만 존재한다면 별도로 더미변수화를 실시하지 않아도 범주형 변수의 의미가 그대로 유지된다. 

 ex) '성별' 변수(남:1, 여:0)인 X1에 대해서 선형회귀 모델을 학습했을 때, X1의 계수가 2로 결정되었다면 남성이 여성

 

 

 


📚  Reference

 

 

댓글