機械学習タスクの機能を設計する方法についてアドバイスや読み物はありますか?ニューラルネットワークの場合でも、優れた入力機能は重要です。選択した機能は、必要な数の隠れニューロンと必要な数のトレーニング例に影響します。
以下は問題の例ですが、私は一般的な機能エンジニアリングに興味があります。
動機付けの例:パズルを見るときの良い入力は何ですか(例: 15-パズル または 倉庫番 )? 2つの状態のどちらが目標に近いかを認識することは可能でしょうか?
優れた機能エンジニアリングには、2つのコンポーネントが含まれます。 1つ目は、解決しようとしているタスクのプロパティと、それらが使用している分類子の長所と制限とどのように相互作用するかを理解することです。 2つ目は、期待をテストし、実際に機能するものと機能しないものを見つける実験的な作業です。
これは繰り返し行うことができます:問題のトップダウンの理解が実験の動機付けになり、次にボトムアップこれらの実験で学習した情報は、問題をよりよく理解するのに役立ちます。問題をより深く理解することで、より多くの実験を推進できます。
分類器への機能の適合
logistic-regression または [〜#〜] svm [〜#〜] のような単純な線形分類器を線形カーネルで使用しているとします。測定して分類子への入力として提供できるさまざまな属性間に興味深い相互作用があると思われる場合は、それらの相互作用をキャプチャする機能を手動で構築して提供する必要があります。ただし、多項式またはガウスカーネルでSVMを使用している場合、入力変数間の相互作用は、モデルの構造によってすでにキャプチャされています。
同様に、一部の入力変数が他の変数よりもはるかに広い範囲の値をとる場合、SVMのパフォーマンスが低下する可能性があります(たとえば、ほとんどの機能は0または1の値を取りますが、1つの機能は-1000から1000の間の値を取ります)。したがって、SVMの機能エンジニアリングを行う場合は、機能を分類器に提供する前に、機能の値を正規化してみることをお勧めします。ただし、 決定木 または ランダムフォレスト を使用している場合、これらの分類子はさまざまな機能が取る値の大きさの違いに対してロバストであるため、このような正規化は必要ありません。オン。
特にパズル解決に関する注意事項
複雑な状態空間で問題を解決することを検討している場合は、 Q-learning のような 強化学習 アプローチを使用することをお勧めします。これは、システムによる一連の中間ステップによっていくつかの目標を達成することを含む学習タスクを構造化するのに役立ちます。