본문 바로가기
파이썬 라이브러리를 활용한 머신러닝

Univariate Nonlinear Transformations

by 지식광부키우기 2019. 12. 6.

 

일변량 비선형 변환 (Univariate Nonlinear Transformations)

 

대부분의 모델은 각 특성이 (회귀에서는 타깃도) 정규분포와 비슷할 때 최고의 성능을 냅니다.

 

특성의 히스토그램이 종 모양과 비슷합니다.

 

log나 exp 같은 함수를 사용하는 것은 편법이지만 이런 모양을 만드는 쉽고 효과적인 방법입니다.

 

 

일변량 비선형 변환은 특셩 변환에 유용합니다.

 

log와 exp 함수는 데이터의 스케일을 변경해 선형 모델과 신경망의 성능을 올리는 데 도움을 줍니다. 

 

 

 

로그 변환 예시

 

원본 특성 X의 히스토그램

 

작은 수치가 많고 큰 수치는 몇 안됩니다.

 

이런 종류의 분포는 실제로 자주 나타납니다.

 

그림1

 

 

log(X+1)로 변환된 특성의 히스토그램

 

변환 후를 보면 데이터의 분포가 덜 치우쳐 있으며 매우 큰 값을 가진 이상치가 보이지 않습니다.

 

그림2

 

 

로그, exp 변환 - Numpy

 

import numpy as np

X_train_log = np.log(X_train + 1)
X_test_log = np.log(X_test + 1)

X_train_rec = np.exp(X_train_log) - 1
X_test_rec = np.exp(X_test_log) - 1

 

 

결론

 

데이터셋과 모델의 조합에 최적인 변환 방법을 찾기란 예술에 가까운 일입니다.

 

일부 특성만 변환하거나 특성마다 모두 다르게 변환하기도 합니다.

 

특성이 오른쪽으로 치우친 분포를 가질 때 (카운트 데이터) log(y + 1)을 사용해 변환하면 도움이 됩니다. 

 

 

가끔 회귀에서 타깃 변수 y를 변환하는 것이 좋을 때도 있습니다.

 

e.g. 선형 회귀, 서포트 벡터 회귀, 인공 신경망

 

 

일변량 비선형 변환은 트리 기반 모델에서는 불필요합니다. 

 

 

파이썬 라이브러리를 활용한 머신러닝 책과 성균관대학교 강석호 교수님 수업 내용을 바탕으로 요약 작성되었습니다.

'파이썬 라이브러리를 활용한 머신러닝' 카테고리의 다른 글

Utilizing Expert Knowledge  (0) 2019.12.11
Automatic Feature Selection  (0) 2019.12.09
Polynomials and Interactions  (0) 2019.12.06
Binning (Discretization)  (0) 2019.12.06
Categorical Variables  (0) 2019.12.04

댓글