인프런 커뮤니티 질문&답변

freedom07님의 프로필 이미지

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

PCA를 이용한 신용카드 데이터 세트의 차원 축소 실습

스케일링과 로그변환의 차이

작성

·

3.5K

0

선생님~ 

선형회귀에서 학습/예측하기 전에

타겟값이 정규분포형태를 띄지 않을 경우, 정규분포로 만들어 주기 위해 '로그변환'을 해주었잖아요~

PCA에서는 정규분포로 만들어주기 위해 
PCA를 적용할 피처들을 모두 StandardScaler를 해주는데..

공부하면서 궁금한 점이..

로그변환과 스케일링이 방식이 조금은 차이가 나지만 둘다 사용의도가 데이터 값들 간의 간극을 좁히고 정규분포 형태로 만들어주는 의미인 것 같아서..사용법에 대해서 확연한 차이가 느껴지지 않는데..

어떨 때 로그변환을 쓰고 어떨 때 스케일링을 쓰는 것이 좋은 것인지 ...궁금해지네요..

정해진 게 아닌 것 같긴한데.. 그냥 아무 상관이 없는 건지..

궁금해서 질문드립니다..!

추가적으로,

통계분석에서는 정규성검정(kolmogo-rov)같은 기능이 머신러닝에서는 있는지 궁금합니다. (선형회귀에서 타겟값의 정규 분포를 확인할 때 distplot 으로 정규분포형태인지 아닌지 확인하는 정도 인 것 같아서요..)

답변 2

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

딱 정해서 말씀드리면, 개별 feature, 또는 target의 분포도가 skew가 심하면 log 변환을 합니다. Standard Scaler는 일반적으로 선형기반의 머신러닝의 입력 (전체) 데이터들에 대해서 다 적용합니다.  보통 scaling은 전체 feature들에(카테고리성 피처 제외) 다 적용합니다. 

Skew가 심하면 로그 변환, 전체 데이터의 스케일링을 표준 정규 분포 형태로 맞추고 싶다면 Standard Scaler를 적용합니다(선형 기반의 머신러닝의 입력에서 MinMax나 Standard scaler를 선호는 합니다)

그리고 아래 질문

통계분석에서는 정규성검정(kolmogo-rov)같은 기능이 머신러닝에서는 있는지 궁금합니다.

=> 머신러닝에 있다/없다 라는 표현 보다는 정규성 검정과 데이터 세트의 분포를 검정하는 것이기 때문에 필요하면 분포 검정 패키지등을 이용해서 하면 됩니다.

R의 Q-Q Plot , sharpiro 검정과 같은 기능을 하는 것이 scipy 패키지에 있으니, 좀 더 명확하게 정규성 검정을 하고 싶으시면 scipy stat 패키지를 이용하시면 됩니다. 

음, 그리고 생각해보니, Q-Q Plot을 시각화 해주면 좀더 나은 설명이 될 수도 있겠군요. 나중에 강의/책 개편할 때 함 고민해 보겠습니다.

감사합니다.

0

freedom07님의 프로필 이미지
freedom07
질문자

아 그렇군요..! 답변 정말 도움이 많이 되었습니다..ㅠ 너무 감사합니다 선생님!