• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

안녕하세요

20.09.17 12:54 작성 조회수 138

0

안녕하세요 선생님.

강의를 듣다가 궁금한 점이 생겨서 질문을 남기게 되었습니다.

사이킷런에서 제공하는 스케일링 방법에는 standard, robust, minmax, maxabs가 있는 걸로 알고있습니다.

제가 지금 하고싶은게 데이터 칼럼별로 분포를 뽑아서 분포에 맞는 스케일링을 적용하고 싶은데

어떤 분포는 이 스케일링 방법을 사용하는 것이 효과적이다 이런 정보를 얻을 수 있을까 하여 질문을 드립니다.

칼럼별로 각각 스케일링 방법을 적용하여 가장 효과가 좋은 스케일링 방법을 찾는거 밖에는 방법이 없을까요?

답변해주시면 감사하겠습니다!

답변 1

답변을 작성해보세요.

1

안녕하십니까,

좋은 시도군요.  일반적으로 스케일링은 개별 feature내에서 데이터들이 skew되었거나, 서로 다른 feature들간 크기 단위들이 극명하게 차이가 날경우에 적용을 합니다. 하지만 머신러닝 알고리즘이 개선 되면서 스케일링의 효과가 생각보다 크지 않는 경우가 많습니다. 

사실 트리 계열(회귀 트리 포함)에서는 스케일링의 효과는 거의 미미합니다. 보통은 선형계열(선형회귀, 로지스틱 회귀, SVM, k-nearest)이나 딥러닝등을 적용할 때 스케일링을 고려합니다. 하지만 선형계열 조차 스케일링을 적용했을 때 성능이 조금 향상될때가 있고, 그렇지 못할 때가 있습니다. 때문에 스케일링을 직접 적용해 보는것 외에는 어떤 데이터 분포가 효과적이다라고 말씀드리기가 어렵습니다.

경험적으로는 적은 데이터 셋에서는 일반적으로 선형계열이 트리 계열보다 약간 성능이 좋을 수 있습니다. 특히 회귀의 경우에 피처가 많지 않고 데이터 셋이 적으면 선형 계열 적용이 더 나을 수 있는데 이때 선형 계열 성능이 잘 나오지 않을 때(예를 들어 트리 계열보다 성능이 안나온다면) 스케일링등의 preprocessing 작업을 고려해 볼수 있습니다. 하지만 각 feature들이 어떤 분포를 가질때 어떤 스케일링을 적용하면 좋다라는 공식은 찾지 못했습니다. 또한 스케일링을 적용했을 때 반드시 성능이 좋아진다는 보장도 없습니다. 

또 하나, 딥러닝을 하신다면 특히 데이터 스케일링이 필요합니다(예를 들어 0 ~ 1사이 값으로). 이는 딥러닝이  비교적 큰 값을 가지면 상대적으로 최적화 하기 어려운 특성을 가지고 있기 때문입니다. 

결론적으로는 어떤 분포에 어떤 스케일링을 적용하면 좋다는 마법 공식은 없다고 생각합니다. 다만 알고리즘의 특성상 스케일링 적용이 필요할 수도 그렇지 않을 수도 있습니다. 일반적으로는 적용 전후 결과로 판단을 합니다.

좋은 질문 감사합니다.