-
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