前編の内容 のつづきです。
blog.tech-monex.com
業務効率化を目指して目論見書解析の実証実験をしましたが想定していたような結果はでませんでした。9月から着手し、この時点でおよそ2か月経過。実証実験の結果発表までは残り1ヵ月程でしたので、次なる実験に着手することにしました。
実証実験(2回目)資産クラス分析
当社では、MONEX VIEWβという保有資産の推移を月次、日次で商品別や資産クラス別に表示し、資産全体の動きを確認できるサービスや、MONEX VISIONβという保有資産の分析や将来のリターン予測、追加購入提案をするなど資産設計のアドバイスサービスもあります。
この両サービスで使用しているのが資産クラスという分類です。
マネックス証券独自の分類で、地域(日本・先進国・新興国)、資産(株・債券・REIT・コモディティ等)、通貨(円建、ドル建て等)の3つの要素を組合せで構成しています。
債券や投資信託の銘柄を1件ずつ分析し、資産クラスを分類する。この分類について今回の機械学習を実験します。
①機械学習を実施
実証実験1回目と同様、「Cloud Machine Learning Engine」を利用して機械学習を実施しました。投資信託の銘柄を35パターンに分類する学習結果を出力する方式を採用し、当社の投資信託データを使用し学習モデルを作成しました。
35パターン= 地域(日本・先進国・新興国)× 資産(株・債券・REIT・コモディティ等)× 通貨(円建、ドル建て等)
投信銘柄「i-mizuhoオーストラリア債券インデックス」は、パターン1が正解とする、というイメージです。
②結果(1)水増し(augmentation)してみる
学習モデル(1)学習データを水増し(augmentation) しない。
学習データ件数 1~35に分類した件数:3,829件。
テストデータ学習した結果 予測結果の正答率:73.64%。
学習モデル(2)学習データを水増し(augmentation)する。。
学習データ件数 1~35に分類した件数:3,829件 → 18,410件。
テストデータ学習した結果 予測結果の正答率:73.64% → 77.81%。
やはり水増し(augmentation)の方が結果が良いことがわかります。これは前回の結果からも実証済みなので想定通りです。ですが前回は正答率が20%台だったの比べ、70%台まで伸びました!こういう学習モデルを作ればいいんだと確信した瞬間です。
もっと学習精度が上がる方法はないか、水増し(augmentation)しつつ、カラムの型を変えてみました。
②結果(2)学習モデルの型を変えてみる
学習モデル(3)学習データを「全カラム文字列型」にする
テストデータ学習した結果 予測結果の正答率:77.81%
学習モデル(4)学習データを「 一部カラム数値型」にする
テストデータ学習した結果 予測結果の正答率:80.32%
学習モデル(5)学習データを「列挙型にして、全カラム文字列型」にする
テストデータ学習した結果 予測結果の正答率:85.34%
学習モデル(6)学習データを「列挙型にして、一部カラム数値型」にする
テストデータ学習した結果 予測結果の正答率:85.74%
特徴を捉えることが学習項目で実施する、学習モデル作成する型は列挙型にする、などすると学習結果の精度はよくなりました。
学習モデル(2) = 学習モデル(3)です。
前回のまとめから、
・学習データの件数が不均衡だと偏った結果になってしまう
・学習項目がランダムな文字列だと特徴を捉えられないようで想定する結果にならない
さらに、今回の結果では、
・特徴を捉えられる項目(=列挙型)のモデルで機械学習すると、精度が高い
ということが実証できました。
「Cloud Machine Learning Engine」を使ってみて思ったこと
今回私たちは機械学習を実行するサービスとして「Cloud Machine Learning Engine」を利用しましたが、1回目の実証実験の際は、実際に着手する前に「Cloud Machine Learning Engine」のチュートリアルで紹介されていたアメリカの国税調査データから所得の判定を実施してみました。
チュートリアルをすることで学習モデルの実行→結果確認をする、という一連の作業をやってみて本格的に実験に入りましたが、実験中にあまりに結果が偏ったりしたため、データに問題があるのか、それとも「Cloud Machine Learning Engine」の使い方に問題があるのか、などの原因分析に多く時間を割きました。「Cloud Machine Learning Engine」の制約事項も多く、他の機械学習サービスを検討してもよかったかも、もしくは、文書の分類をするという領域では有用かもしれません。