機械学習ライブラリを使わずニューラルネットワークで為替レートを予測する

機械学習ライブラリを使わずニューラルネットワークで為替レートを予測する

ニューラルネットワークといえば、pylearn2やTensrflowなどのライブラリがありますが、
使い方が独特だったりして習得に時間がかかるため、今回はこれらのようなライブラリを使わずに、
pythonの標準機能とnumpyで、為替レートの予測をやってみました。

ニューラルネットワークのプログラムは、一から作るのが面倒だったため、Wikipediaのソースを改変。

ニューラルネットワーク – Wikipedia

 

ニューラルネットワークの入力は過去10日分の終値、出力は翌日の終値としています。これを約6年分。
なお、どう正規化するのが良いのかわからなかったため、適当に150で割っています。
このデータ自体はMT4というFX用のソフトを使って取得しています。

3.ヒストリカル・データのCSVエクスポート – とあるMetaTraderの備忘秘録

 

実際に上記のプログラムで学習させた結果が以下です。上が誤差の推移、下が真値と推定値の比較です。

 

パッと見、良く予測できているように見えますが、実際には平均で0.5%ほど誤差があります。
流石にFXに使える程の精度ではありません。

実際にプログラムを動かす時に、学習時間の短縮のために全部のデータを学習するのではなく、
一部を使用するように以下の文を加えたのですが、何故か全データ学習した時より誤差は小さくなっていました。
時間が短縮できて、誤差も小さくなるのは素晴らしいですが、理屈が分からずじまい。

また、活性化関数としてシグモイド関数も試してみましたが、計算時間が長くなってしまった上に、誤差が大きくなりました。
ニューラルネットワークといえばシグモイドというイメージでしたが、今はReLUが最強?。