Condition Number
- Condition number가 클수록 변수들간의 scaling이 필요하거나 다중공선성이 나타남을 의미함
- Condition number를 감소시켜야 함
1. Scaling
2. 다중공선성 제거 - VIF, PCA를 통해 변수 선택
3. 의존성이 높은 변수들에 패널티를 주는 정규화
Scaling
- 스케일링을 통해 변수간의 범위 설정
1. StandardScaler()
- 각 feature가 정규분포를 따른다는 가정
sklearn.preprocessing.StandardScaler().fit()
sklearn.preprocessing.StandardScaler().transform()
sklearn.preprocessing.StandardScaler().fit_transform()
2. minmaxScaler()
- 가장 많이 활용되는 알고리즘
- 0~1 / -1~1 사이의 값으로 변환
- 각 feature이 정규분포가 아니거나 표준편차가 매우 작을 때 사용
sklearn.preprocessing.MinMaxScaler().fit()
sklearn.preprocessing.MinMaxScaler().transform()
sklearn.preprocessing.MinMaxScaler().fit_transform()
3. RobustScaler()
- minmax와 유사하지만 IQR을 사용해 25%, 75%값을 사용해 변환
- outlier 영향을 최소화하며 적은 데이터에도 효과적임
sklearn.preprocessing.RobustScaler().fit()
sklearn.preprocessing.RobustScaler().transform()
sklearn.preprocessing.RobustScaler().fit_transform()
4. Normalizer()
- 각 feature를 전체 변수들의 크기로 나눠 변환
- 각 feature값은 원점으로부터 반지름 1만큼 떨어진 범위내로 변환
sklearn.preprocessing.Normalizer().fit()
sklearn.preprocessing.Normalizer().transform()
sklearn.preprocessing.Normalizer().fit_transform()
다중공선성 제거
- 독립변수들간의 상관관계 존재
1. X와 Y 상관관계 확인
2. X 변수들간의 상관관계 확인
3. Variance Inflation Factor (VIF)
- 독립변수를 다른 독립변수들의 선형회귀로 나타내, 가장 상호의존적인 변수 제거
- 특정 변수를 눈으로 보고 삭제 가능
+ Principal Component Analysis (PCA)
- 다차원인 독립변수행렬을 소차원으로 바꿔 상호의존적인 변수를 제거
- 특정한 변수를 제거하는 것이 아니라 눈으로 확인 힘듦
vif = pd.DataFrame()
vif['VIF_Factor'] = [variance_inflation_factor(X_train_feRS.values, i)
for i in range(X_train_feRS.shape[1])]
vif['Feature'] = X_train_feRS.columns
vif.sort_values(by='VIF_Factor', ascending=True)
+ 참고 자료 및 출처
- 김경원 < 파이썬을 활용한 시계열 데이터 분석 A-Z 강의 > ( 패스트캠퍼스 강의 )
'Analysis > Time series' 카테고리의 다른 글
Lecture 10. 타겟 데이터 정상성 변환 (0) | 2021.03.27 |
---|---|
Lecture 9. 시계열 머신러닝 알고리즘 (1) | 2021.03.27 |
Lecture 7. 잔차진단 (0) | 2021.03.16 |
Lecture 6. 분석성능 확인 (0) | 2021.03.16 |
Lecture 5. 시계열 데이터 시각화 (0) | 2021.03.15 |
댓글