機械学習のための特徴選択の5つの方法!

機械学習のための特徴選択の5つの方法!

使用される特徴の数が増えるにつれて、モデルのパフォーマンスが向上することが分かっています。ただし、ピークを超えると、モデルのパフォーマンスが低下します。そのため、予測に効果的な特徴のみを選択する必要があります。

[[390994]]

特徴選択は、特徴の数を減らすことを目的とする点で次元削減技術に似ていますが、根本的に異なります。違いは、特徴選択ではデータセットから保持または削除する特徴を選択するのに対し、次元削減ではデータの投影が作成され、完全に新しい入力特徴が生成される点です。

特徴選択にはさまざまな方法があります。この記事では、最もシンプルでありながら非常に便利な Scikit-Learn の 5 つの方法を紹介します。それでは始めましょう。

1. 分散閾値特徴選択

分散が大きい特徴は、その特徴内の値が大きく変化することを意味し、分散が小さい特徴は、その特徴内の値が類似していることを意味し、分散がゼロの場合は、同じ値の特徴があることを意味します。

分散選択法では、まず各特徴の分散を計算し、次にしきい値に基づいて分散がしきい値より大きい特徴を選択します。使用方法を示す例を次に示します。

  1. pandasをpdとしてインポートする
  2. Seaborn をSNSとしてインポートする
  3. mpg = sns.load_dataset( 'mpg' ).select_dtypes( '数値' )
  4. mpg.head()

この例では、簡潔にするために数値機能のみを使用しています。分散しきい値特徴選択を使用する前に、分散は数値スケールの影響を受けるため、これらすべての数値特徴を変換する必要があります。

  1. sklearn.preprocessingからStandardScaler をインポートします
  2. スケーラー = StandardScaler()
  3. mpg = pd.DataFrame(scaler.fit_transform(mpg), 列 = mpg.columns)
  4. mpg.head()

すべての特徴は同じスケールなので、分散しきい値法を使用して必要な特徴のみを選択してみます。分散が 1 に制限されていると仮定します。

  1. sklearn.feature_selectionからVarianceThresholdをインポート
  2. セレクター = VarianceThreshold(1)
  3. セレクタ.fit(mpg)
  4. mpg.columns[セレクター.get_support()]

分散しきい値設定は、教師なし学習のための特徴選択方法です。教師あり学習の目的で特徴を選択したい場合はどうすればよいでしょうか? 次にこれについて説明します。

2.SelectKBestの機能

単変量特徴選択は、カイ2乗検定やピアソン検定などの単変量統計検定に基づく手法です。

SelectKBest の前提は、検証されていない統計テストと、X と y の間の統計結果に基づいて K 個の数値を選択する機能を組み合わせることです。

  1. mpg = sns.load_dataset( 'mpg' )
  2. mpg = mpg.select_dtypes( 'number' ).dropna()
  3. #特徴を独立変数従属変数分割する
  4. X = mpg.drop ( 'mpg' 、軸=1)
  5. y = mpg[ 'mpg' ]

単変量特徴選択法は教師あり学習用に設計されているため、特徴を独立変数と従属変数に分離します。次に、最も重要な 2 つの機能のみが必要であると仮定して、SelectKBest を使用します。

  1. sklearn.feature_selectionからSelectKBest、mutual_info_regression をインポートします
  2. #選択 相互情報回帰基づく上位2 つの特徴
  3. セレクター = SelectKBest(相互情報回帰、k = 2)
  4. セレクター.fit(X, y)
  5. X.列[セレクター.get_support()]

3. 再帰的特徴除去(RFE)

再帰的特徴除去 (RFE) は、機械学習モデルを利用して、再帰トレーニング後に最も重要でない特徴を除去することで特徴を選択する特徴選択方法です。

Scikit-Learn によれば、RFE は、より小さな特徴セットを再帰的に考慮することで特徴を選択する方法です。

  • まず、推定器が初期特徴セットでトレーニングされ、次に各特徴の重要度が coef_attribute または feature_importances_attribute を通じて取得されます。
  • 次に、現在の機能から最も重要度の低い機能を削除します。このプロセスは、選択される特徴の数が最終的に必要な数に達するまで、プルーニングされたデータセット上で再帰的に繰り返されます。

この例では、誰が生き残るかを予測する分類問題にタイタニック号のデータセットを使用します。

  1. #データセットをロードし  として数値特徴のみを選択する
  2. タイタニック = sns.load_dataset( 'タイタニック' )[[ 'survived' , 'pclass' , 'age' , 'parch' , 'sibsp' , 'fare' ]].dropna()
  3. X = titanic.drop ( '生き残った' 、軸 = 1)
  4. y = タイタニック[ '生き残った' ]

私は、タイタニック号の生存者を予測するのに最も役立つ特徴を知りたかったのです。最良の特徴を得るために、LogisticRegression モデルを使用しましょう。

  1. sklearn.feature_selectionからRFEをインポート
  2. sklearn.linear_modelからLogisticRegression をインポートします
  3. #ロジスティック回帰による最も重要な特徴の選択
  4. rfe_selector = RFE(推定値=LogisticRegression(),選択するn特徴=2,ステップ=1)
  5. rfe_selector.fit(X, y)
  6. X.列[rfe_selector.get_support()]

デフォルトでは、RFE に選択される特徴の数はすべての特徴の中央値であり、ステップ サイズは 1 です。もちろん、経験に基づいて変更することもできます。

4. SelectFromModel 特徴選択

Scikit-Learn の SelectFromModel は、重要度属性しきい値に基づいて機械学習モデルの推定のための機能を選択するために使用されます。デフォルトでは、しきい値は平均値です。

この概念をよりよく理解するために、サンプルデータセットを使用しましょう。前回のデータを使用します。

  1. sklearn.feature_selectionからSelectFromModel をインポートします
  2. sfm_selector = SelectFromModel(推定器=LogisticRegression())
  3. sfm_selector.fit(X, y)
  4. X.列[sfm_selector.get_support()]

RFE と同様に、特徴の重要性を推定するために使用できる限り、任意の機械学習モデルを特徴選択に使用できます。 Random Forest または XGBoost で試すことができます。

5. シーケンシャル特徴選択(SFS)

順次特徴選択は、クロス検証スコアと推定値に基づいて前方または後方に最良の特徴を見つける貪欲アルゴリズムであり、Scikit-Learn バージョン 0.24 の新機能です。方法は次のとおりです。

  • SFS-Forward は、ゼロの特徴から開始して特徴選択を実行し、単一の特徴で機械学習モデルをトレーニングするときにクロス検証スコアを最大化する特徴を見つけます。
  • 最初のフィーチャが選択されると、選択されたフィーチャに新しいフィーチャを追加することによってプロセスが繰り返されます。必要な機能の数に達したことが確認されると、プロセスは停止します。

説明のために例を挙げてみましょう。

  1. sklearn.feature_selectionからSequentialFeatureSelector をインポートします
  2.  
  3. sfs_selector = SequentialFeatureSelector(estimator=LogisticRegression(), n_features_to_select = 3, cv =10, direction = 'backward' )は、
  4. sfs_selector.fit(X, y)
  5. X.列[sfs_selector.get_support()]

結論は

特徴選択は機械学習モデルの重要な側面です。モデルにとって役に立たない特徴は、モデルのトレーニング速度だけでなく、モデルの効果にも影響します。

<<:  オンラインクレジットは消費者保護において「難しい問題」でしょうか? AIアプリケーションは消費者の権利を保護する

>>:  AIトレーニングの最大の障害は計算能力ではなく「メモリの壁」である

ブログ    
ブログ    

推薦する

AIは製造業にどのように役立つのでしょうか?

AI を活用して製造効率を向上させ、インテリジェントな自動化で業界を変革します。製造業は人工知能技...

ファーウェイの天才少年Zhihuiは、かわいいロボットを自作し、5時間でオープンソース化し、GitHubで317個のスターを獲得した。

前回ブドウに縫い目をつけた「完全自社開発」のアイアンマンロボットアーム「ダミー」を覚えていますか? ...

...

多国籍食品流通会社Sysco CIDO:当社の成長の秘訣はIT中心

トム・ペック氏がCOVID-19パンデミックの真っ只中にシスコに入社したとき、彼の主な目標は世界最大...

機械学習はデータセキュリティに対する新たな脅威や裏口となるのでしょうか?

機械学習アルゴリズムは重要なサイバーセキュリティ技術となり、現在は主にマルウェアの特定、セキュリティ...

...

Windows Update で使用される指数アルゴリズムにより、XP マシンの速度が大幅に低下する

[[92385]] Windows XP ユーザーは、現在の XP が 2001 年にリリースされた...

...

JVM チューニングの概要: 基本的なガベージ コレクション アルゴリズム

ガベージ コレクション アルゴリズムは、さまざまな観点から分類できます。基本的なリサイクル戦略によれ...

AIの未来はエッジにある

モノのインターネット (IoT) は、絶えず複製されるエンティティのネットワークのようなもので、これ...

...

AI人材の世界的な需要が急増、一部の職種では年間40万ドル近くを稼ぐ

6月19日のニュース:AI産業の急速な発展に伴い、テクノロジー業界のAI人材に対する需要も高まってい...

ガートナー:金融業界はAIがもたらす変化を追求

私たちがよく話題にする金融テクノロジーとは、人工知能とデータを活用して新しいビジネス手法を見つけるも...

...

2018年ロシアワールドカップではどのような「スマートハードウェア」が使用されましたか?

4年待ちに待ったワールドカップがついにやって来ました。業界に数十億ドルの資金が投入され、世界人口の...