懲りずにコンペに参加しているザコデータサイエンティストです。
今回参加しているコンペは特徴量が多く専門的なため特徴量を何とか削減できないかと思案していました。
borutaのような自動で重要な特徴量を選択してくれるものも使ってみたんですが、あんまりスコアが上がらず。。
そこで試したのがラッパーメソッド。ラッパーメソッドは特徴選択基準を予測子のパフォーマンスで削減する方法です。コードは以下。
# ダミーデータを生成 X, y = make_classification(n_samples=56, n_features=56, random_state=42) # 特徴量削減のためのモデルとしてロジスティック回帰を使用 model = LogisticRegression() # RFEを設定 rfe = RFE(model, n_features_to_select=10) # RFEを適用 X_rfe = rfe.fit_transform(X, y) # 選択された特徴量のインデックスを取得 selected_feature_indices = rfe.support_ print("選択された特徴量のインデックス:", selected_feature_indices) # 選択された特徴量を抽出 selected_features = X[:, selected_feature_indices] print("選択された特徴量:\n", selected_features) # XGBoostモデルを初期化 xgb_model = XGBClassifier() # XGBoostモデルに選択された特徴量を適用してトレーニング xgb_model.fit(selected_features, y)
これでウキウキしながらスコアを測ったら、なんとダダ下がり。
そりゃそうだよな、だって分析してないもん。
方法論としてこういうのがあるのを知るのはいいけれど、最後は自分で考えていかないといけないなという教訓を得ました。
参考
https://www.sciencedirect.com/science/article/abs/pii/S0045790613003066