스케일링(Scaling)
차원축소 (비지도 학습) 중 스케일링을 하는 이유
차원 축소를 하는 이유
- 고차원 데이터(columns)의 의미적 특성 -> 최대한 유지 -> 저차원 축소 표현
shape이 M x N 행렬에서(데이터프레임) PCA를 이용하여 N차원 -> (N보다 작은)차원 - 차원의 저주를 피하기 위해 : outfitting을 피하기 위해
- 변수간 척도가 다름 -> 비교가 불가능, 모수의 왜곡 -> 변수의 표준화 작업이 필요(표준 정규분포로 표준화 등)
- 데이터 스케일링으로는 StandardScale, MinmaxScale, RobustScale, log1p 등이 있다.
스케일링 예시
1.표준화(StandardScaling)
1 | # 표준화 방법은 아래와 같습니다. |
2.RobustScaler
- 표준화(이상치가 적다는 가정에서 수행), but 만약 이상치가 많다면?
- 이상치를 제거후에 표준화
- 평균 대신 덜 민감한 중위수, 표준편차 대신 IQR
(data - mean)/std => (data - median)/IQR == RobustScaler
1 | # (data - median)/IQR == RobustScaler 이상치를 제거하고 mean대신 median값을 빼줌 |
3.MinMaxScaler
1 | from sklearn.preprocessing import MinMaxScaler, minmax_scale |
4.log1p
- 그냥 log가 아닌 1p를 사용하는 이유는 0에 가까운 아주 작은 양수의 경우 (ex. 0.00001) 음의 무한대에 가까워지게 된다. 즉 -inf가 나오게되기에 1을 더한 log1p를 사용한다
1 | import numpy as np |