機械学習のための特徴選択の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トレーニングの最大の障害は計算能力ではなく「メモリの壁」である

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

異常分析のための技術的ソリューション - 異常帰属の指標分析

著者 | イー・リアン1. はじめに唯一不変なのは変化です。変化を受け入れる前に、調査し、属性を特定...

DeepSpeechを使用してアプリ内で音声をテキストに変換する

アプリでの音声認識は単なる楽しい機能ではなく、重要なアクセシビリティ機能です。コンピュータの主な機能...

人工知能が「怠け者」社員147人を解雇、「労働者」は追い詰められている

人工知能やロボットがSF小説に登場して以来、人類は人工知能と共存する未来社会に不安を抱いてきた。映画...

人工知能をより賢くするにはどうすればいいでしょうか?オープンソースプラットフォームが必要です

[[332916]]ニーダーザクセン州オスナブリュック、2020年6月19日:メラニー・プロッパ先生...

過剰に防御的?モスクワのバス運転手は中国人乗客の身元を手動で確認し、顔認識システムの使用も許可されている。

最近、モスクワのバス運転手たちは少々パニックになっている。チャットグループでは、「バスの中でアジア人...

AI CPUとMicrosoft Windows 12のリリースにより、2024年には世界のAI PC出荷台数が1,300万台を超えると予想

10月13日、Qunzhi Consultingが昨日発表した最新の調査によると、アルゴリズムとハー...

分類アルゴリズムの概要

[[154315]]決定木分類アルゴリズム決定木誘導は古典的な分類アルゴリズムです。これは、トップダ...

...

EUのドローン関連法は国内メーカーにとって恩恵か、それとも災いか?

ユーザーがドローンを操作する方法を規制する法律が来週の木曜日(1月7日)に施行される。この法律はノル...

LinkedIn: データサイエンスと機械学習は米国で最も急速に成長している職業です。

元記事: データサイエンスと機械学習が米国で最も急速に成長している職業である理由[[223686]]...

GPT-4 より 10 倍高速!この売れ筋の AI エージェント製品がビッグモデルを揺るがします!

執筆者 | Yan Zheng制作:51CTO テクノロジースタック(WeChat ID:blog)...

DeepSpeed ZeRO++: ネットワーク通信を4倍削減し、大規模モデルやChatGPTのようなモデルのトレーニング効率を大幅に向上

大規模な AI モデルがデジタルの世界を変えています。大規模言語モデル (LLM) に基づく Tur...

フロントエンドアルゴリズムシステム演習:リンクリストの章が完了

[[357916]]実践する前に、データ構造やアルゴリズム、あるいはこのシリーズについての誤解を避け...

Appleのスマートホームアプリに新機能「クリーンエネルギークエリ」が追加

AppleのiPhone 15の発表イベントでは、同社のカーボンニュートラル化に向けた取り組みに焦点...

...