私の大学では、金融/機械学習の研究プロジェクトに次の設定を行っています。Keras/ Theanoで次の構造の(ディープ)ニューラルネットワーク(MLP)を適用して、パフォーマンスの高い株(ラベル1)とパフォーマンスの低い株(ラベル0)。そもそも私は、実際および歴史的な評価の倍数を使用します。これはストックデータであるため、非常にノイズの多いデータが予想されます。さらに、52%を超える安定したサンプル外精度は、すでにこのドメインで良好であると見なすことができます。
ネットワークの構造:
- 入力として30のフィーチャを備えた高密度レイヤー
- Relu-Activation
- バッチ正規化レイヤー(それがなければ、ネットワークは部分的に収束していません)
- オプションのドロップアウトレイヤー
- 密
- レル
- バッチ
- 脱落
- ・・・同じ構造の更なる層
- シグモイドアクティベーションの高密度レイヤー
オプティマイザ:RMSprop
損失関数:バイナリクロスエントロピー
前処理のために私が行う唯一のことは、機能を[0,1]範囲に再スケーリングすることです。
今、私は通常、ドロップアウトまたはL1およびL2カーネル正則化に取り組む、典型的な過剰適合/過適合問題に直面しています。ただし、この場合、次のグラフに示すように、ドロップアウトとL1およびL2の正規化の両方がパフォーマンスに悪影響を及ぼします。
私の基本的なセットアップは次のとおりです。5レイヤーNN(入力レイヤーと出力レイヤーを含む)、レイヤーあたり60ニューロン、0.02の学習率、L1 / L2なし、ドロップアウトなし、100エポック、バッチ正規化、バッチサイズ1000。 76000の入力サンプル(ほぼバランスの取れたクラス45%/ 55%)で、ほぼ同じ量のテストサンプルに適用されました。チャートでは、一度に1つのパラメーターのみを変更しました。「Perf-Diff」とは、1に分類された株式と0に分類された株式の平均株価パフォーマンス差を意味します。これは、基本的に、最終的なコアメトリックです。(高いほど良い)
l1の場合、ネットワークは基本的にすべてのサンプルを1つのクラスに分類しています。ネットワークが再びこれを実行しているためスパイクが発生していますが、25個のサンプルをランダムに正しく分類しています。したがって、このスパイクは良い結果ではなく、異常値として解釈されるべきです。
私の結果をどのように改善できるかについてのアイデアはありますか?私がしている明らかなエラーはありますか、それとも正則化の結果に対する簡単な答えはありますか?トレーニング(PCAなど)の前に、何らかの機能選択を行うことをお勧めしますか?