投資家さとしのひとりFintech

AI(人工知能)で億超えトレーダーを目指してます。

SVMは計算時間がながく、ニューラルネットワークは答えが出ない。。

株の売買モデルを人工知能機械学習で開発しようとしている。いろいろなデータをいろんな種類の分析ツールにぶっこんで答えを出し、そこから多数決をとるというのが、基本的なアイデアだ。

 

もし、モデルの出す答えが以下のようになったとしよう

  • ランダムフォレスト:A株とB株がいいよ。
  • Xgboost:A株とC株だね。
  • SVM:いやいや、C株かD株でしょ。
  • ニューラルネットワーク:A株かE株に行っとけって。

 

そうすると、多数決の結果は以下のようになる。

 

で、僕はどうするかというと、まず、A株とC株を買う。多数決の勝者だからだ。残りは分類能力がたかかったモデルを採用する。たとえば、分析結果で分類能力がニューラルネットSVM>XGboost>ランダムフォレストだったら、この場合E株>D株>B株という風に優先付ける作戦だ。

 

だが、モデルを作っていると、いろんなことがわかってきた。単純にデータをぶっこめば学習して、答えが出るという単純な問題ではない。

 

ランダムフォレストとXgboostはすんなり答えがでた

これがどのくらいうまくいっているかどうかは別として、2つのモデルはなんらかの答えを出してくれた。一応、クロスバリデーションをしてみて確認してみたけど、分類能力としては、予想通りで悪くなさそうだ。

 

SVMは計算時間が長く答えが出ない

SVMで学習させていると、全然答えがでなかったので、色々調べてみるとやはり計算時間が長いらしい。僕はAWSのt2.2xlargeのインスタンスをつかっているが数十万くらいでは何時間も答えが出なかった。それで100レコード、1000レコード、とすこしづつ増やして試してみたら、2000くらいで答えがでなくなった。おいおい、たったの2000でここまで時間かかるのかよ。そんなに長いとお金がかかって仕方がない。AWSでは計算時間が長いとお金がかかるのだ。これでは不安で仕方がない。SVMは諦めようか真剣に悩んでいる。。

investor-satoshi.hatenablog.com

 

ニューラルネットワークは調整が難しい

通常のモデルでは、学習データをぶっこめばデフォルトの設定で何らかの答えをだしてくれるが、ニューラルネットワークでは自分で構造をきめなければならない。ノードをどのくらい増やすか、レイヤーをどのくらい深くするか、活性化関数になにを使うか、など様々だ。

それで、適当にディープラーニングの構造を作ってみると、ちゃんとした答えを出してくれない。(全部の株を買うとか、何も買わないとかしか出さない。)原理を考えてみると、おそらく、どこかで活性化関数が最大値か最小値に張り付いてしまっているのだろう。

それを原理を紐解いて最適な組み合わせを考えるのは時間がかかりすぎる。だから、試行錯誤で構造を変えながら答えをだしてくれる組み合わせを調整するしかない。これがまた時間がかかる。しかも、この作業はブラックボックスに手を突っ込んであれこれして、なんとなく気に入ったブラックボックスに変える、という作業は知的作業とは程遠く骨の折れる作業だ。そして、まだ、これも解決できていない。

 

実際に、作業してみると課題はおもったよりも多い。ランダムフォレストとXgboostだけだと流石に心細いので、運用開始までになんとか解決しなければ。。