機械学習を独学で学んでいる者です。以下ような症状に嵌っています。大雑把な質問なので、この症状が機械学習において典型的な症状なのかどうかだけでもお教えいただけると幸いです。
さて、tensorflowのLSTMを用いて、特定銘柄の株価の翌日の値を分類する、といようなことを試みています。
回帰予測ではなく、たとえば翌日の株価は1.1-1.15倍の範囲になる、とか、0.95-1倍の範囲になる、というような多クラス分類です。
そのために、たとえば250日分(約一年分)の株価を一連の時系列データとしてモデルにつっこみ、その最終データと、翌日の値との比率を学習をさせています。(一つの銘柄の株価を1000日分集めて、それを250日一セットに小分けしてぐるぐる回しているというような具合です)
さて、様々なパラメータで試行してみたのですが(optimizerの変更やlossの計算方法も含めて)、どれも最終的にはlossが一定のところで下げ止まり学習が進まなくなります。しかも、どの時系列セットについても同じ分類結果だけを予測するようになります。たとえば、どのセットについても「1.0-1.05倍」のみを予測結果として出力する、というような具合です。そしてこの1.0-1.05倍というのは、最多の正解ラベルです。
つまり、最多の正解ラベルを一様に予測するという仕方で学習が止まってしまうということです。もちろん正答率は4割とかそのあたりで止まりますし(分類数に依存しますが)、lossもいくらだって下がる余地はあります(学習率を上げると収束せずいくらかブレますが、結局そのあたりに収束していきます)。
プログラミングのミスも疑って、sin波を学習させてみましたが、こちらは典型的な過学習となったので、モデルが根本的におかしいということはないと思っています。つまりsin波のような周期的なデータでは過学習が起こり、株価のようなランダムウォークでは最多の分類を抽出するようなモデル、というわけです。
さて、こういう症状は典型的なものなのでしょうか。典型的である場合、その典型的な原因は何でしょうか。多くのモデルを見てきたがそんな症状は聞いたことがない、という報告だけでも結構です。その場合はさらに試行錯誤してみるしかありませんが・・・。
以上、よろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー