[Day 25] Ridge Regression

2022. 2. 24. 17:11AI/Codestates

728x90
반응형

https://www.codestates.com/

 

코딩부트캠프 | 코드스테이츠 - 비전공생도 개발자가 될 수 있습니다

코딩부트캠프를 찾는다면? 개발자로 커리어 전환을 위한 책임있는 코딩 교육 기관! 서비스 기획자, 그로스 마케터, 데이터 사이언티스트 등 다양한 전문 커리어에 도전하세요. 취업 성공의 후기

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
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