10일차 [ Scaling ] - votus777/AI_study GitHub Wiki
새로운 배게가 생겼다! 선생님은 배게가 아니라 냄비받침이라 하신다
아무튼 모든 데이터는 반드시 스케일링 과정을 거쳐야 한다.
Condition number(조건수) 때문에 각 데이터의 결과값에 오차가 발생할 수 있기 때문이다.
조건수가 크면 작은 오차에도 전혀 다른 값을 가질 수 있다.
- 변수들의 단위가 달라서 숫자들 간의 스케일이 달라지거나,
- 변수들 간의 상관관계가 너무 크거나
전자는 Scaling, 후자는 변수 선택이나 PCA를 사용한 차원 축소 등으로 해결한다.
특수한 경우에는 로그를 취해서 스케일링을 하기도 한다.
Standard scaler ( = Standardization, 표준화)
-
Standard scaler를 통해 데이터를 정규분포 형태로 변환
-
평균 = 0, 표준편차 = 1이 되도록 하는 방법
-
많은 데이터가 있는 경우 이는 각각 적용이 된다 ( each column of data, column, feature, variable) 서로 다른 단위를 가지고 있는 데이터들을 같은 기준으로 볼 때 사용
-
특성의 최소값과 최대값 크기를 제한하지 않는다.
-
그러나 이상치가 있는 경우 평균과 표준편차에 영향을 미쳐 값이 틀어질 수 있다.
-
수식
MinMax Scaler ( = Normallization, 정규화 )
-
MinMax scaler를 통해 데이터 변환
-
최대값 = 1, 최소값 = 0 ( -1 ~ 1도 가능)으로 하여 그 사이에 값들이 위치할 수 있도록 하는 방법
-
특정 데이터의 위치를 파악할 수 있다.
-
feature간 데이터 차이가 달라지면 각 데이터에 영향을 미치는 비중도 달라지게 되어 결과값이 부정확하게 나올 수 있기 때문
-
2차원일 경우 y축도 0 ~ 1 사이에 위치하게 된다.
-
역시 이상치가 있는 경우 스케일이 매우 압축이 될 수 있다.
-
수식
MaxAbsScaler
-
절대값이 0 ~ 1 사이에 위치하도록 한다. 즉 (-1 ~ +1) 사이로 재조정
-
0을 기준으로 절대값이 가장 큰 수가 1 혹은 -1에 위치
-
데이터가 모두 양수이면 MinMaxScaler와 비슷하게 동작하고 역시 큰 이상치에 민감할 수 있다.
Robust Scaler
-
이상치 (Outlier)의 영향을 최소화 하는 스케일링 기법
-
중앙값 (Median)이 0, IQR (Interquartile range, 사분범위)가 1이 되도록 변환
-
참고로 모든 스케일은 훈련 셋과 테스트 셋에 같은 변환을 적용해야 한다.
-
비슷하게 Quantile Transformer가 있다. 이건 1000등분을 해서 데이터를 각각 0 ~ 1 사이에 균등하게 위치시키는 방법이다.
이 외에 Normalizer 라고 특이한 놈도 있는데
지름이 1인 원에 데이터 포인트를 투영하는 방법이라고 한다.
치킨이 먹고 싶다.