- フィルタ法: フィルタ法は、特徴の重要度を統計的な尺度で評価し、最も有用な特徴を選択する手法です。代表的な方法には、相関係数や情報利得などがあります。例えば、相関係数を用いた特徴選択のコード例を示します。
import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest, f_regression
# データセットの読み込み
data = pd.read_csv("data.csv")
# 特徴量とターゲット変数の分割
X = data.drop("target", axis=1)
y = data["target"]
# 特徴選択器の作成
selector = SelectKBest(score_func=f_regression, k=5)
# 特徴選択の実行
X_selected = selector.fit_transform(X, y)
# 選択された特徴量のインデックスを取得
selected_features = X.columns[selector.get_support(indices=True)]
print("Selected features:", selected_features)
- ラッパー法: ラッパー法は、特徴の組み合わせを評価するために、機械学習モデル自体を利用する手法です。例えば、再帰的特徴除去(Recursive Feature Elimination, RFE)は、モデルの性能を最大化するために、最も重要な特徴を選択します。以下に、RFEのコード例を示します。
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
# データセットの読み込み
data = pd.read_csv("data.csv")
# 特徴量とターゲット変数の分割
X = data.drop("target", axis=1)
y = data["target"]
# ロジスティック回帰モデルの作成
model = LogisticRegression()
# RFEの実行
rfe = RFE(estimator=model, n_features_to_select=5)
X_selected = rfe.fit_transform(X, y)
# 選択された特徴量のインデックスを取得
selected_features = X.columns[rfe.support_]
print("Selected features:", selected_features)
- 埋め込み法: 埋め込み法は、機械学習モデル自体が特徴選択を行う手法です。モデルは特徴の重要度を学習するため、予測性能を向上させる特徴を選択します。例えば、L1正則化を利用した線形モデル(Lasso)は、重要な特徴を選択するためにスパースな解を推定します。以下に、Lassoを用いた特徴選択のコード例を示します。
from sklearn.linear_model import Lasso
# データセットの読み込み
data = pd.read_csv("data.csv")
# 特徴量とターゲット変数の分割
X = data.drop("target", axis=1)
y = data["target"]
# Lassoモデルの作成
lasso = Lasso(alpha=0.1)
# 特徴選択の実行
lasso.fit(X, y)
selected_features = X.columns[lasso.coef_ != 0]
print("Selected features:", selected_features)
これらは特徴削減の一部の手法とコード例ですが、他にもさまざまな手法があります。具体的なデータセットや問題に応じて、最適な特徴削減手法を選択することが重要です。さらに、特徴削減はデータプレプロセスの一環として適用することが推奨されます。