機械学習における特徴選択: 動機
この短い記事は、機能選択のテクニックを説明するシリーズの最初の記事です。フレンドリーな紹介から始めて、機能選択プロセスの背後にある強力な理由を示しました。今後の記事では、各機能の選択方法について詳しく説明します。
特徴選択は、機械学習アルゴリズムを構築するために、データ セット内のレベルの合計特徴から関連する特徴 (変数、予測子) のサブセットを選択するプロセスです。通常、多数の変数を含む初期データセットが与えられた場合、予測を行う際に重要な特徴のプールを選択するにはどうすればよいでしょうか? 機能選択のプロセスの一部として適用できるさまざまな手順や手法があります。
機能選択のテクニックに飛び込む前に、そもそもなぜ機能を選択するのでしょうか? ここにいくつかの理由があります。
- 単純なモデルは解釈が容易です。モデルのユーザーは、100 個の変数を使用するモデルの出力よりも、10 個の変数を使用するモデルの出力を理解する方が簡単です。
- トレーニング時間の短縮。機械学習モデルの構築に使用される変数の数を減らすと、計算コストが削減されるため、モデルの構築が高速化されます。しかし、より重要なことに、より単純なモデルは、アプリケーションよりも高速にスコアを付けます。これは、モデルが 1 秒未満で意思決定を行う必要があるライブ環境にある場合に特に重要です。
- オーバーフィッティングを減らすことで拡張された一般化。多くの場合、変数の多くは予測値がほとんどないノイズです。ただし、機械学習モデルは、このノイズから学習してオーバーフィッティングを引き起こし、一般化を減らします。無関係なノイズの多い機能を排除することで、機械学習モデルの一般化を大幅に改善できます。
- ソフトウェア開発者による実装が容易になります。機械学習モデルがデプロイされると、多くの場合、ソフトウェア開発者は、出力を生成するためにモデルに入力する必要がある変数を呼び出すコードを作成する必要があります。400 個の変数よりも 10 個から 50 個の変数のコードを作成する方がはるかに高速です。さらに、コードが少ないほどバグが発生しにくくなるため、より安全な環境が提供されます。
- モデル使用中のデータ エラーのリスクを軽減します。多くの場合、企業はサードパーティ データの呼び出しに依存しており、そこから変数を選択して機械学習モデルを渡します。機械学習モデルで使用される変数の数を減らすことで、データ収集とサード パーティの保存のエラーにビジネスがさらされる可能性が減り、同じビジネス内で発生する可能性のあるデータ収集の潜在的なエラーも減ります。
- 可変冗長性。多くの場合、データ セット内の特徴は高度に相関しています。相関性の高い特徴は、同じ情報の本質を提供します。したがって、それらは一種の冗長です。情報を失うことなく、1 つを保持して残りをすべて削除できます。
- 高次元空間での悪い学習行動。特定のツリーベースのアルゴリズムにおける機械学習モデルのパフォーマンスは、縮小された特徴空間によって有利になります。つまり、次元が高いとツリーベースの方法でパフォーマンスが低下するため、特徴空間を減らすと、より堅牢で予測的なモデルを構築するのに役立ちます。
特徴選択アルゴリズムは、新しい特徴サブセットを提案するための検索手法と、さまざまな特徴サブセットをスコアリングする進化尺度の組み合わせと見なすことができます。理想的には、特徴選択方法は、特定のデータ セットから取得できる特徴の組み合わせのすべての可能なサブセットを検索し、最高の機械学習モデル パフォーマンスを生み出す特徴の組み合わせを見つけます。実際には、これは通常、計算コストのためにオプションではありません。さらに、機能のサブセットが異なると、異なる機械学習アルゴリズムに対して最適なパフォーマンスが得られる場合があります。これは、機能のサブセットが 1 つだけではなく、使用する機械学習アルゴリズムに応じて、最適な機能のサブセットが多数存在する可能性があることを意味します。そのため、何年にもわたって、機能を選択するための非常に多くの異なる方法が開発され、できるだけ多くの警告と制限に対応しようとしています。この一連の記事では、機能を選択するさまざまな方法、利点と欠点、およびビジネス データ セットの例を使用してそれらを実際に実装する方法について説明します。