데이콘 대회를 진행하던 중 전처리 과정에서 피처 스케일링에 대한 의문점이 들었다.
주어진 데이터셋의 각 칼럼의 값들이 굉장히 넓은 범위를 가지고 있고, 회귀 분석을 할 것이기에 단순히 스케일링을 해줘야겠다고 생각했다.
하지만 스케일링을 진행한 모델의 성능과 진행하지 않은 모델의 성능이 동일했다. (모델링의 문제일 수도 있다)
이렇게 된 이유를 곰곰히 생각해보니 내가 사용한 모델은 Tree 기반의 XGBoostRegressor, CatBoostRegressor이었기 때문에 스케일링의 영향을 받지 않은 것 같다는 생각을 했다.
따라서 피처 스케일링에 대한 개념을 다시 제대로 정리하고자 이 포스팅을 쓴다.
피처 스케일링이란?
서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업
피처 스케일링의 대표적인 방법
- 표준화 (Standardization)
서로 다른 범위의 변수들을 평균이 0이고 분산이 1인 가우시안 정규 분포를 가진 값으로 변환하는 작업
- 정규화 (Normalization)
서로 다른 범위의 변수들의 크기를 통일하기 위해 이를 변환하는 작업. 일반적으로 [0,1] 범위의 분포로 조정
- 로그 변환(log transformation)
데이터 분석을 하기 위해 log를 취하는 이유는 정규성을 높이고 회귀분석과 같은 분석에서 정확한 값을 얻기 위함이다.
데이터 간 편차를 줄여 왜도(skewness)와 첨도(Kurtosis)를 줄일 수 있기 때문에 정규성이 높아진다.
스케일링은 언제, 왜 하는가?
회귀분석을 하다보면 변수에 스케일링을 하는 경우가 종종 있다. 스케일링은 데이터 전처리 과정에서 매우 중요한 과정임이 알려져 있다. 하지만 그 중요성에 비해서 스케일링에 대해 자세히 설명하는 것은 힘든 것 같다. 예를 들어 '스케일링을 해야 하는 경우가 따로 있는가?', '변수에 스케일링을 해야 하는 규칙이 있는가?', '어떤 경우에, 어떤 스케일러를 써야 하는가?'라는 질문에 명확한 답을 찾을 수 없다.
찾아본 결과 명확한 답은 없는 것 같다. 다만 스케일링을 하는게 더 나은 경우들이 있기에 의무적으로 '회귀분석에서 스케일링을 해야 해!' 는 아니더라도 시도해볼 수 있는 방법 중 하나인 것 같다.
결론적으로 모두 시도해보고, 최선의 결과를 얻을 수 있는 방법을 택하는게 맞는 것 같다.
사이킷런에서 제공하는 대표적인 피처 스케일링 클래스
- StandardScaler
앞에서 설명한 표준화를 쉽게 지원하기 위한 클래스이다. 즉, 개별 피처를 평균이 0이고, 분산이 1인 값으로 변환해준다. 잃게 가우시안 정규 분포를 가질 수 있도록 데이터를 변환하는 것은 몇몇 알고리즘에서 매우 중요하다. 특히 사이킷런에서 구현한 RBF 커널을 이용하는 서포트 벡터 머신(Support Vector Machine)이나 선형 회귀(Linear Regression), 로지스틱 회귀(Logistic Regression)는 데이터가 가우시안 분포를 가지고 있다고 가정하고 구현됐기 때문에 사전에 표준화를 적용하는 것은 예측 성능 향상에 중요한 요소가 될 수 있다.
평균을 제거하고 데이터를 단위 분산으로 조정한다. 그러나 이상치가 있다면 평균과 표준편차에 영향을 미쳐 변환된 데이터의 확산은 매우 달라지게 된다.
따라서 이상치가 있는 경우 균형 잡힌 척도를 보장할 수 없다.
- MinMaxScaler
MinMaxScaler는 데이터값을 0과 1 사이의 범위 값으로 변환한다.(음수 값이 있으면 -1에서 1 값으로 변환한다.)
데이터의 분포가 가우시안 분포가 아닐 경우에 적용해 볼 수 있다.
모든 feature 값이 0~1사이에 있도록 데이터를 재조정한다. 다만 이상치가 있는 경우 변환된 값이 매우 좁은 범위로 압축될 수 있다.
즉, MinMaxScaler 역시 아웃라이어의 존재에 매우 민감하다.
- RobustScaler
아웃라이어의 영향을 최소화한 기법이다. 중앙값(median)과 IQR(interquartile range)을 사용하기 때문에 StandardScaler와 비교해보면 표준화 후 동일한 값을 더 넓게 분포 시키고 있음을 확인할 수 있다.
유의해야 할 점은, 스케일링시 Feature별로 크기를 유사하게 만드는 것은 중요하지만, 그렇다고 모든 Feature의 분포를 동일하게 만들 필요는 없다.
특성에 따라 어떤 항목은 원본 데이터의 분포를 유지하는 것이 유의할 수 있다. 예로 데이터가 거의 한곳에 집중되어 있는 Feature를 표준화시켜 분포를 같게 만들었을 때 작은 단위의 변화가 큰 차이를 나타내는 것으로 반영될 수 있기 때문이다.
수치형 피처들을 스케일링에 엔지니어링 하는 방법을 알아보았다. 스케일링을 적용한다고 해서 항상 극적인 모델의 향상을 얻는 것은 아니다. 사용하고자 하는 모델이 회귀와 같이 거리를 기반으로 하는 모델의 경우 유의미한 효과를 얻을 수 있고, 의사결정 트리(decision tree) 기반의 모델에서는 큰 의미가 없을 것이다.
그럼에도 최적의 모델을 얻기 위해서는 데이터를 이해하고 적절하게 피처 엔지니어링을 적용해야 우수한 성능을 얻을 수 있을 것이다.