ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Feature Importance를 활용한 피쳐 엔지니어링
    머신러닝/FAQ 2022. 9. 1. 11:26

    Feature를 선정하기 위해서는 여러가지 기준이 필요하다.

    머신러닝 모델의 하이퍼파라미터를 통해 예측률을 높이는것 보다 적절한 

    feature engineering을 통해 전처리를 하는것이 훨씬 더 큰 영향을 준다.(일반적으로)

     

    따라서 이번에는 feature importance에 대해 알아보도록 한다.

    feature importance는 통상 머신러닝 학습 모델에서 제공해주는 parameter로 

    모델을 선언하고 충분한 학습 후에 확인 가능하며 , 모델에 따라 조금 상이한 점이 있기 때문에

    그런 부분을 감안해서 분석 및 활용하는것을 추천한다.

     

    Feature Importance 활용 방법 
    1) 모델 선언 및 학습 
    2) 모델 내의 feature_importance_ 를 통해 주요한 feature 추출 
    3) 주요한 feature 중심으로 전처리 이후 재학습 및 예측결과 도출
    사실 3)의 경우는 개인의 판단에 따라 달라질 수 있다.
    from sklearn.ensemble import RandomForestRegressor ### RandomForest를 예로 들어보자
    import seaborn as sns
    
    rf_clf = RandomForestRegressor()
    rf_clf.fit(X_train , y_train) ## 데이터프레임은 일반적으로 있다고 가정하고 학습한 후 , 
    feature_importance = rf_clf.feature_importances_ ## feature importance 결과를 변수로 받아서
    
    import seaborn as sns
    plt.figure(figsize=(8,6))
    plt.title('Feature Importance Top')
    sns.barplot(x=feature_importance, y=X_train.columns)
    plt.show()
    
    ### 위와 같이 실행하면 컬럼별로 feature importance 확인이 가능하다.

    값이 1에 가까울수록 주요한 feature

    catboost로 한번 더 확인 
    (random forest와 동일한지 체크)
    from catboost import CatBoostRegressor
    
    cat_clf = CatBoostRegressor()
    cat_clf.fit(X_train , y_train)
    feature_importance = cat_clf.feature_importances_
    
    import seaborn as sns
    plt.figure(figsize=(8,6))
    plt.title('Feature Importance Top')
    sns.barplot(x=feature_importance, y=X_train.columns)
    plt.show()

    catboost의 feature importance

     

    조금씩 차이가 있지만 대세적으론 비슷함을 알 수 있다.

     

    잘 활용해서 feature가 너무 많은 데이터(40개 이상)를 활용할때는 feature select 관점에서,

    적당할땐 drop관점에서 활용하길 권장한다.

    '머신러닝 > FAQ' 카테고리의 다른 글

    평가 산식 (metrics) , 데이터 타입에 대한 대응  (0) 2023.04.13
    PCA를 활용한 차원 축소 방법  (1) 2023.04.13
    데이콘 관련 Tip(High scoring)  (0) 2022.09.01
    Scaling - MinMaxScaler  (0) 2022.09.01
    데이콘 관련 FAQ & Tip  (0) 2022.08.25
Designed by Tistory.