• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

정규화, 표준화 질문드립니다.

20.09.17 19:15 작성 조회수 701

2

데이터 전처리를 할 시에 정규화와 표준화가 중요하다고 하셨는데 언제 정규화를 하고 표준화를 하는지 잘 모르겠습니다.

강의에서 가우시안 분포로 바꿔야할때 정규화를 하신다고 하셨는데 원래 가우시안 분포를 따르지 않는 데이터를 표준화 해도 되는 것인가요? 원래 가우시안 분포를 따르지 않는다면 정규화를 적용해야 하는 거 같은데... 

정확히 언제 표준화를 쓰고 언제 정규화를 쓰는지 잘 감이 안오네요!

답변 1

답변을 작성해보세요.

4

안녕하십니까,

정규화/표준화를 통칭해서 스케일링으로 설명하겠습니다. 마침 비슷한 질문을 오늘 올려 주신 분이 있으셔서 같은 답변으로 글 올리겠습니다.  질문 내용은 어떤 컬럼 분포에 어떤 스케일링을 적용하는 게 좋은가 입니다. (https://www.inflearn.com/questions/65273)

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

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

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

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

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

좋은 질문 감사합니다.