[Day 25] Ridge Regression
2022. 2. 24. 17:11ㆍAI/Codestates
728x90
반응형
코딩부트캠프 | 코드스테이츠 - 비전공생도 개발자가 될 수 있습니다
코딩부트캠프를 찾는다면? 개발자로 커리어 전환을 위한 책임있는 코딩 교육 기관! 서비스 기획자, 그로스 마케터, 데이터 사이언티스트 등 다양한 전문 커리어에 도전하세요. 취업 성공의 후기
www.codestates.com
Warm-up
- Ridge Regression
Note
- 원핫인코딩 ( One Hot Encoding ) : 범주형 변수를 변환
- Category_ecoders
from category_encoders import OneHotEncoder
encoder = OneHotEncoder(use_cat_names = True)
df_ohe = encoder.fit_transform(df)
- 특성 선택 ( Feature Selection ) :
- Filter Method : Feature 간 관련성을 측정하는 방법
- Filter Method는 통계적 측정 방법을 사용하여 피처간의 상관관계를 알아낸 뒤,
- 높은 상관계수(영향력)를 가지는지 피처를 사용하는 방법입니다.
- 하지만, 상관계수가 높은 피처가 반드시 모델에 적합한 피처라고 할 수는 없습니다.
- Filter Method는 아래와 같은 방법이 존재합니다.
- information gain
- chi-square test
- fisher score
- correlation coefficient
- variance threshold
- Wrapper Method : Feature Subset의 유용성을 측정하는 방법
- Wrapper method는 예측 정확도 측면에서 가장 좋은 성능을 보이는 Feature subset(피처 집합)을 뽑아내는 방법입니다.
- 이 경우, 기존 데이터에서 테스트를 진행할 hold-out set을 따로 두어야하며,
- 여러번 Machine Learning을 진행하기 때문에 시간과 비용이 매우 높게 발생하지만
- 최종적으로 Best Feature Subset을 찾기 때문에, 모델의 성능을 위해서는 매우 바람직한 방법입니다.
- 물론, 해당 모델의 파라미터와 알고리즘 자체의 완성도가 높아야 제대로 된 Best Feature Subset을 찾을 수 있습니다.
- Wrapper Method는 아래와 같은 방법이 존재합니다.
- Forward Selection(전진 선택)
- Backward Elimination(후방 제거)
- Stepwise Selection(단계별 선택)
- Embedded Method : Feature Subset의 유용성을 측정하지만, 내장 metric을 사용하는 방법
- Embedded method는 Filtering과 Wrapper의 장점을 결함한 방법으로,
- 각각의 Feature를 직접 학습하며, 모델의 정확도에 기여하는 Feature를 선택합니다.
- 계수가 0이 아닌 Feature가 선택되어, 더 낮은 복잡성으로 모델을 훈련하며, 학습 절차를 최적화합니다.
- Embedded Method는 아래와 같은 방법이 존재합니다.
- LASSO : L1-norm을 통해 제약을 주는 방법, 연구자가 직접 판단 - 특성을 확인하고 없애 버린다.
- Ridge : L2-norm을 통해 제약을 주는 방법, 자동으로 특성 선별 후 불필요한 특성 제거
- Elastic Net : 위 둘을 선형결합한 방법
- SelectFromModel
- Filter Method : Feature 간 관련성을 측정하는 방법
from sklearn.feature_selection import f_regression, SelectKBest
from sklearn.linear_model import RidgeCV
selector = SelectKBest(score_func=f_regression, k=20)
X_train_selected2 = selector.fit_transform(X_train2, y_train2)
X_test_selected2 = selector.transform(X_test2)
alphas = [0, 0.001, 0.01, 0.1, 1, 10, 100, 1000]
ridge = RidgeCV(alphas=alphas,normalize=True, cv=5)
ridge.fit(X_train_selected2,y_train2)
Review
참고
728x90
반응형
'AI > Codestates' 카테고리의 다른 글
[Day 27] Sprint Review (0) | 2022.02.28 |
---|---|
[Day 26] Logistic Regression (0) | 2022.02.28 |
[Day 24] Multiple Regression (0) | 2022.02.23 |
[Day 23] Simple Regression (0) | 2022.02.22 |
[Day 22] Section 1 Review (0) | 2022.02.22 |