私の問題はかなり複雑なので、類似した単純化した例を次に示します。
次の情報に基づいて、車のマイルあたりのガロン(燃料消費量)を予測するとします。車の重量はポンド、エンジンのシリンダー数、およびタイプに対応する数です。車両(0 =キューブカー、1 =スタンダードカー、2 =バンなど)と過去1時間の雨量(ガロン単位)。
この情報をすべて取り、それを4次元ベクトル[Weight, Cylinders, Vehicle Class, Rain]
にコンパイルするとします。 4時間前からの雨が依然として重要であるため、過去5時間のこれらのベクトルの複数を取得してネットワークにフィードすると、次のようになります。
[Weight 5 hours ago, Cylinders 5 hours ago, Vehicle Class 5 hours ago, Rain 5 hours ago]
[Weight 4 hours ago, Cylinders 4 hours ago, Vehicle Class 4 hours ago, Rain 4 hours ago]
...
[Weight in past hour, Cylinders in past hour, Vehicle Class in past hour, Rain in past hour]
フィードされているため、「現在の雨量」になります
質問:この問題を人工ニューラルネットワークで使用するためにどのようにフォーマットしますか?ネットワークはベクトルを入力として使用できますか?各ノードを単一の値に割り当てる方がよいでしょうか(各ベクトルは、各次元に1つずつ、4つのノードを使用し、その結果、セットには20ノードになります)?
時間の変化のため、HMM/MMの使用を検討しましたが、カテゴリデータのみを扱っているわけではありません。これはクラス用ではなく、純粋な興味から学んでいるだけです。ありがとう!
スライディングウィンドウアプローチ(NNは、系列の最後のk
値を使用するようにトレーニングされています)は、 フィードフォワードニューラルネットワーク 。
ニューラルネットワークの学習能力に悪影響を与える可能性があるため、冗長な入力値は削除する必要があります(冗長変数を削除するもう1つの利点は、トレーニング時間が短縮されることです)。
[Weight Cylinders VehicleClass Rain5 Rain4 Rain3 Rain2 Rain1]
最初の変更です(「ウィンドウサイズ」がニューラルネットワークベースの予報士の品質に重要な影響を与えるため、異なる数のRain[n]
入力)。
また、車両のタイプに1つの数値を使用する代わりに(0 =キューブカー、1 =標準車、2 =バン...) 1-hot encoding を使用する必要があります:
<-- Vehicle Class -->
[Weight Cylinders (0.0 ... 1.0 ... 0.0) Rain5 Rain4 Rain3 Rain2 Rain1]
これははるかにうまく機能しますが、特徴ベクトルははるかに大きくなります(また、データの量によっては、過剰適合の可能性があります)。
Recurrent Neural Networks (-- Long-Short Term Memory バリアントを確認)は、以前のタイムスタンプ(雨の値)の多くのインスタンスを考慮に入れることができ、定義する必要はありません。スライディングウィンドウ。