<株進捗>8/10-8/12 クラスタリング

進捗サマリ

今後の見通しの確認

今後の見通しについて再度整理しました。

  • 成果目標
    2016年度までを学習データとし、2017年度のデータで年利10%を記録する。

  • 作業の見通し

    • 学習プログラムの作成(今ここ)
      ★株のデータを学習するプログラム
    • 売買シュミレーションプログラムの作成
      ★学習プログラムが予想したチャートを元に、どこで買ってどこで売るのが一番利益的であるかを検証するプログラム
      • 売買アルゴリズムの設計 予想した値動きに従い、「どういう条件で買い、どういう条件で売るのか」をプログラム化。
      • 柔軟なシュミレーションが可能な設計にする パラメータを変動させて繰り返しテストできる作りにする。 (学習プログラムは作りがグダグダなので・・・)

株データのグルーピング

1銘柄を学習して1銘柄を予測するのは不可能であるため、学習対象のデータを増やす必要があります。
そのために、相関が高いと思われるデータをグルーピングしてみました。
観点は以下です。

  • 値動き
    「対象銘柄の直近100日分の値動き」と値動きが似ているデータを検索。その後の値動きをチェックする。
    例:銘柄Aの2017年5月〜7月の値動きを対象にする場合
    →データ検索の結果、銘柄Bの2017年2月〜4月が銘柄Aの値動きと近似しているので、銘柄Bの2017年2月〜4月+2017年5月〜7月を学習データとして取り込む

そして銘柄1301と相関のある60銘柄程度を選定し学習させてみました。
f:id:kurupical:20170813100415p:plain:w500
loss値というのが学習の精度でこれが低くなるほど学習がちゃんとできているということになるのですが、途中でnan(Not a Number)値になってしまっています。途中計算でおかしな計算をしているんでしょうか。。

雑感

ディープラーニングをやっている知り合いに今自分がやっていることを少し相談してみました。
そうすると、「そもそもディープラーニングってどういう定義なのかわかってる?」という話になりました。

この2つにはいろいろな定義が込められているため、正解はないと思うのですが、そこで話していた機械学習ディープラーニングの違い(+自分がディープラーニングに期待していたこと)についてメモしておきます。

機械学習ディープラーニングの違い

すごくざっくりなのですが。
機械学習は、「人が立てた仮説に基づきデータを加工・投入しコンピューターに演算させる」
ディープラーニングは、「データを投入するだけで、コンピューターが何らかの知見を出してくれる」

機械学習は、以下の手順で分析が行われる。
①データを集める
 (株データ(項目10個、5年分))
②人の手によりデータの中から特徴量を考える
 (株データは項目が10あるが、その中で「終値」に着目しよう…など)
③手順②で加工したデータを機械学習にかける

ディープラーニングは、上記手順から②を省いたもの。
つまり、分析に人の判断を介さないこと。

ディープラーニングに期待していたこと

データを投入しさえすれば何らかの知見を出してくれるってすごい!!と思って強い興味を持ってはじめました。
だけど今やってる株価分析はディープラーニングとは言えないなあと思います。
人による判断が沢山入っているからです。

  • 株価には「時系列」データである、という仮説。
    ディープラーニングの中の手法の一つ、「RNN」を使う
  • 終値」のみが株価に影響する、という仮説
    自分が保有する株データには項目が10個あるが、そのうち終値だけを分析対象として使っている。
  • 株データのグルーピング
    自分の仮説に基づいてグルーピングをしている

上記の3つも人が判断しなくてすむこと、それがディープラーニングに期待することでした。
ただ現実問題として、それらをすべて判断させるにはリソースが足りないので、上記は止むを得ない部分もあり難しいところですが…
ひとまず、「上記3つを自分の仮説に基づいてやっている」ということを認識しておくことが大事なのかなと思いました。