機械学習パイプラインで機能選択とハイパーパラメーター最適化をどのように順序付けすればよいですか?


14

私の目的は、センサー信号を分類することです。これまでの私のソリューションのコンセプトは次のとおりです。i)生の信号からのエンジニアリング機能ii)ReliefFおよびクラスタリングアプローチを使用して関連する機能を選択するiii)NN、ランダムフォレスト、SVMを適用する

しかし、私はジレンマに陥っています。ii)とiii)には、ReliefFのk-Nearest Neigboursのようなハイパーパラメーター、またはセンサー信号が評価されるウィンドウの長さ、またはNNの各レイヤーの隠れたユニットの数があります。

ここに3つの問題があります。1)特徴選択パラメーターの調整は分類子のパフォーマンスに影響します。2)分類子のハイパーパラメーターを最適化すると、特徴の選択に影響します。3)構成の可能な組み合わせをそれぞれ評価することは困難です。

だから私の質問は次のとおりです:a)単純化の仮定を行うことができますか?stチューニング機能選択パラメーターをチューニング分類子パラメーターから分離できますか?b)他に可能な解決策はありますか?


リリーフFのヒューリスティックはクラス間の分散を最大化し、クラス内の分散を最小化することを目的としているため、分離機能の選択のチューニングと分類器のチューニングは有効だと思います。そのため、reliefFの最適なパラメーターを調整すると、良い分類子がより「可能性」になります。ただし、このアイデアを裏付ける数学的な定式化があれば非常に便利です。
グルンヴァルスキー2017年

この質問の特定のバリアント:特徴選択を交差検証ルーチンの一部にする必要があります(例:#各分類子ハイパーパラメーターセット:#各k分割CV実行:1)特徴選択、2)特徴スケーリング、3)分類器の適合4)テストセットを予測しますか?
Nikolas Rieble

1
@NikolasRieble私は元の質問への回答を書いただけでなく、回答にあなたの質問も含めました
Dennis Soemers

回答:


14

すでにお気づきのように、機能の選択(機能の選択)は、アルゴリズムに最適なハイパーパラメーターに影響を与える可能性があり、アルゴリズムに選択したハイパーパラメーターは、最適な機能の選択に影響を与える可能性があります。

したがって、はい、本当にモデルからパフォーマンスの1パーセントをすべて絞り出すことに本当に関心があり、必要な量の計算を行うことができる場合は、機能の選択とハイパーパラメーターの調整を「同時に」行うことが最善の解決策です。(機能の選択方法によっては)これはおそらく簡単ではありません。私がそれが機能することを想像する方法は、候補として異なる特徴のセットを持ち、それらすべての候補セットからの特徴の1つのセットの選択を追加のハイパーパラメーターとして扱うようなものです。

実際にはそれは実際には実現可能ではないかもしれません。一般に、考えられるすべての組み合わせを評価する余裕がない場合は、以下をお勧めします。

  1. 一部のハイパーパラメーターに極端に悪い値を割り当てないようにするために、ハイパーパラメーターを大まかに最適化します。これは多くの場合、ハイパーパラメーターを直感的に理解している場合は手動で行うことができます。または、他の点ではまともな機能であることがわかっている機能の束を使用して、非常に短いハイパーパラメーター最適化手順で行うこともできます。

  2. 機能の選択。ハイパーパラメータは100%最適化されていない可能性がありますが、少なくともそれほどひどいものではありません。少なくともある程度適切に構成された機械学習アルゴリズムを既に持っている場合、優れた機能を持つことは、ハイパーパラメーターをマイクロ最適化するよりもパフォーマンスにとって非常に重要になります。極端な例:機能がない場合、何も予測できません。クラスラベルを含む不正行為機能がある場合は、すべてを完全に分類できます。

  3. 上記の手順で選択した機能を使用してハイパーパラメーターを最適化します。これは良い機能セットになるはずで、実際にはハイパーパラメータを少し最適化する価値があるかもしれません。


Nikolasがコメントで投稿した追加の質問に対処するために、これらすべて(機能選択、ハイパーパラメーター最適化)がk分割交差検証とどのように相互作用するかを考えます。

フォールドの1つでデータをまったく使用せずに、同じフォールドでパフォーマンスを評価すると、パフォーマンスの偏った見積もりが得られます(パフォーマンスを過大評価します)。したがって、特徴選択ステップのすべてのフォールドのデータを使用し、それらのフォールドのそれぞれでパフォーマンスを評価すると、それぞれのフォールドのパフォーマンスに偏った見積もりが得られます(これは良くありません)。同様に、データ駆動型のハイパーパラメーター最適化があり、特定のフォールド(またはすべてのフォールド)からのデータを使用し、それらの同じフォールドで評価すると、パフォーマンスのバイアス推定が再び得られます。可能な解決策は次のとおりです。

  1. すべてのフォールド内でパイプライン全体を個別に繰り返します(たとえば、各フォールド内で、機能選択+ハイパーパラメーター最適化およびトレーニングモデルを実行します)。これを行うと、k分割交差検証により、この完全なパイプラインのパフォーマンスの公平な見積もりが得られます。

  2. 初期データセットを「前処理データセット」と「トレーニング/テストデータセット」に分割します。「前処理データセット」で機能選択+ハイパーパラメーター最適化を行うことができます。次に、選択した機能とハイパーパラメーターを修正し、 '' train / test dataset ''でk分割交差検証を実行します。これを行うと、固定された特徴セットとハイパーパラメーターの値が与えられた場合に、k分割交差検証により、MLアルゴリズムのパフォーマンスの公平な見積もりがられます

2つのソリューションのパフォーマンスの見積もりがわずかに異なることに注意してください。どちらがより興味深いかは、ユースケースによって異なり、実際に機械学習ソリューションをデプロイする方法によって異なります。たとえば、機能選択の完全なパイプライン+ハイパーパラメーターの最適化+毎日/週/月/年/その他すべてを自動的に実行するトレーニングを予定している会社の場合、その完全なパフォーマンスにも関心があります。パイプライン、あなたは最初のソリューションが必要になります。

一方、機能の選択+ハイパーパラメーターの最適化を1度だけ行う余裕があり、その後、アルゴリズムをある程度定期的に再トレーニングする(機能セットとハイパーパラメーターの値を固定)場合、パフォーマンスそのステップだけがあなたが興味を持っているものになるでしょう、そしてあなたは2番目の解決策に行くべきです


リファレンスも提供できますか?
Nikolas Rieble

1
この投稿には、有名な本の写真がいくつかあります:nodalpoint.com/not-perform-feature-selection。それらは私の「可能な解決策1」に同意するようです。私自身以外の場合の参照は必ずしも必要ありません... D:私は、私の意見チェックアウトで、その参照だとされ、そこに私の推理/動機を提供した
デニスSoemers

1
ESLのその章は、あらゆる予測モデラーにとって100%必要なリーディングであるべきです。
マシュードゥルーリー

soln 1に関して、cvのいくつかの反復で機能選択(fs)とハイパーパラメーター最適化(ho)を実行した後、最終的な機能セットとモデルハイパーパラメーターをどのように取得しますか?同様に、cvのiterでこれらを実行する場合、最初にfsを実行してから、それらの機能を使用してhoを実行しますか?
sma 2018年

1
K1

4

ハイパーパラメータの調整と機能の選択を同じにするアプローチについては誰も言及していないので、それについて説明します。この場合、最初に必要なすべての機能を設計し、それらをすべて含める必要があります。

現在統計コミュニティで行われている研究では、特徴選択をチューニング基準にしようとしています。基本的に、モデルをペナルティ化して、最良の予測を行うために役立ついくつかの機能のみを選択するように奨励します。ただし、チューニングパラメータを追加して、発生するペナルティの大きさを決定します。

言い換えると、モデルが機能を選択することを許可し、多かれ少なかれ機能の数を制御できます。これにより、実際に計算を減らすことができます。これは、フィーチャを決定する必要がなく、残りのフィーチャとモデルの数だけを決定する必要があるためです。

したがって、パラメーターの交差検証を実行すると、機能選択の交差検証も効果的に実行されます。

すでに、この機能選択を何らかの形で組み込んだ多くのMLモデルがあります。

簡単に言うと、複雑さを軽減し、相互検証を実行できるようにするために、人々は同時にパラメータ調整と機能選択を組み込むことを試みました


0

私はあなたがそこにかなり考えすぎていると思います。通常、機能エンジニアリングの一部である機能選択は役立ちますが、機械学習システムの初期段階では、一部の冗長機能はそれほど害を及ぼしません。したがって、ベストプラクティスは、最初にすべての意味のある機能を生成し、次にそれらを使用してアルゴリズムを選択してモデルを調整し、モデルを調整した後、機能セットをトリミングするか、新しい機能を使用することを決定することです。

機械学習の手順は、実際には反復プロセスであり、特徴エンジニアリングを行ってから、いくつかのアルゴリズムを試し、モデルを調整して、満足のいく結果が得られるまで戻ります。


あなたはそれがうまくいくまで試みていることを意味します:D
Grunwalski '20

ランダムにではなく、ML手続きを試す。実際、MLは実際にはそれ自体が少しハッキングです。
THN
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.