Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LDAを利用した予測モデル構築 - J-Quants ニュース分析チャレンジ!発表資料

tomo
April 20, 2021

LDAを利用した予測モデル構築 - J-Quants ニュース分析チャレンジ!発表資料

2021/04/20(火)に行われたJ-Quants ニュース分析チャレンジ! 〜自然言語処理を用いたポートフォリオ構築〜のAlapcaJapan発表資料
https://connpass.com/event/210157/

tomo

April 20, 2021
Tweet

More Decks by tomo

Other Decks in Technology

Transcript

  1. STRICTLY CONFIDENTIAL Alpacaの紹介 2 Client’s Testimonial from Quants 優れたテクノロジーは疑う余地が無い。 ただ、それだけではパートナーとして不十分。

    成功までの道のりはトライアンドエラーの連続。 市場の謎解きへの純粋なモチベーション、あきらめない姿勢、そして結果への強 いこだわり。 Alpacaを語る時にそうした要素は欠かせない。 彼らは真に信頼できる集団だ。 5人 → 30人 サイエンティスト/エンジニアの3年の増加数 Client’s Testimonial from Traders “金融市場の未来は AIと人とのコラボレーションにこそある ”というのはまさに私も 強く共感するコンセプトです。世の先をいく貴社の皆様にはどんどん未来へ向 かって進んでいって頂きたい。 コロナ禍の中で金融業界全体で今まで出来ないと思っていたことが 実際にやっ てみると出来てしまうことが沢山出てきている と感じています。その中で AIと人間 のコラボレーションも益々増えていくでしょうし、そういう部分が 各企業の競争源 泉になっていくのだろうと思います。 Alpacaはデータサイエンス・機械学習を金融マー ケットの様々なリアルな問題に適用することに強み を持つ会社です。
  2. STRICTLY CONFIDENTIAL 3 本セッションの発表内容 J-QuantsではAlpacaはチュートリアル作成支援と問題作成支援を担当させていただきました。その中 で5/6章においてディープニュールラルネットワークを利用する手法がNLP初心者には難易度が高いと うフィードバックをいただき本日はニューラルネットワークを利用しない手法を紹介いたします。 チュートリアルの5/6章の流れ データセット作成方法 (欠損値・正規化)

    頻度/ワードクラウド/LDAなどを データセットの可視化 BERTを用いた特徴量の設計 LSTMモデルの構築・評価 バックテスト・モデルの提出 本セッションの発表内容 LDAを用いたトピックベースの特徴量の設計 モデルの構築(step 1-5) ニューラルネットワークを利用しない方法を紹介
  3. STRICTLY CONFIDENTIAL 4 日経ニュースデータの特性の説明 1 いくつか本資料を見る上で重要な日経ニュースデータの特性を紹介します。 x 軸 は 銘

    柄 の 数 を 示 し て い ま す。 青 色 線 は 左 側 の y 軸 に 対 応 し て お り 記 事 件 数 を 表 し て い ま す、 黄 色 線 は 右 側 の y 軸 に 対 応 し て お り 記 事 件 数 全 体 に お け る 累 積 割 合 を 示 し て い ま す。 一 部 の 銘 柄 に 記 事 件 数 が 集 中 し て お り、 約 1750 銘 柄 中 250 銘 柄 で 記 事 件 数 全 体 の 70% 程 度 を 占 め て い る こ と が わ か り ま す。 250銘柄で全体の70%のニュースになる
  4. STRICTLY CONFIDENTIAL 7 LDAとは LDA (Latent Dirichlet Allocation; 潜在的ディレクリ配分法)は、トピックモデルの基本的なモデルです。文章 中の潜在的なトピックを推定し、文章分類や、文章ベクトルの次元削減等に用いられる技術です。

    チュートリアルにおいても説明しているため、本セッションではLDAの具体的な手順は説明しませんが、例え ば、日経のニュースデータに適用すると以下のようなトピックが抽出でき、各トピックがそれぞれどのような意 味を持つかもある程度、人間にもわかる形で出力できます。この解釈性がニューラルネットワークとの大きな違 いです。 「新型コロナ」、「コロナ禍」や「トヨタ」、「工場」などが一緒のトピックとして出現しやすいという結果からもトピックの概 念がイメージできるかとおもいます。 (0, '0.058*"コロナ" + 0.010*"会長" + 0.009*"新型コロナ" + 0.008*"追加" + 0.008*"コロナ禍"') (1, '0.020*"新型コロナ" + 0.018*"トヨタ" + 0.016*"生産" + 0.015*"工場" + 0.013*"中国"') (2, '0.044*"発売" + 0.008*"用" + 0.006*"商品" + 0.006*"シリーズ" + 0.006*"日本"') (3, '0.025*"日銀" + 0.024*"銀" + 0.023*"再開" + 0.012*"ポイント" + 0.011*"最終"') (4, '0.024*"開始" + 0.020*"開発" + 0.014*"発売" + 0.013*"事業" + 0.013*"サービス"') (5, '0.022*"社長" + 0.021*"氏" + 0.015*"提供開始" + 0.013*"サービス" + 0.012*"AI"') (6, '0.064*"減" + 0.045*"期" + 0.041*"純利益" + 0.029*"増" + 0.025*"月"') (7, '0.018*"発表" + 0.011*"店" + 0.009*"楽天" + 0.008*"開業" + 0.008*"JR東日本"') (8, '0.091*"東証" + 0.021*"株" + 0.020*"マザーズ" + 0.018*"一時" + 0.017*"米"') (9, '0.028*"発行" + 0.015*"格付け" + 0.013*"債" + 0.011*"R&I" + 0.011*" 社債"')
  5. STRICTLY CONFIDENTIAL 8 基本的なモデリング戦略 基本的なモデリング戦略を考えます。あまり複雑すぎないモデリングを想定。 • 前の週のニュースのトピックの平均(複数個のニュース対応)から次週の銘柄毎のリターンを推定するモデル • ニュースがなかった銘柄は「スコアなし」として次週の投資対象から除外 •

    LDAに設定するトピック数はハイパーパラメータとしていくつか試してみる(5, 10, 15, 20など) • 評価はすべて2020年のデータを2分割して、前半をトレーニング、後半をテストデータとして利用 銘柄Aの 今週のニュース 銘柄Bの 今週のニュース 銘柄Cの 今週のニュース 銘柄Dの 今週のニュース 銘柄Aの 次週リターン 銘柄Bの 次週リターン 銘柄Cの 次週リターン 銘柄Dの 次週リターン 銘柄Aの トピック情報の平均 銘柄Bの トピック情報の平均 銘柄Cの トピック情報の平均 銘柄Dの トピック情報の平均 試行錯誤 追加データ も考慮
  6. STRICTLY CONFIDENTIAL 9 #1 全銘柄のデータで学習した全銘柄で利用する単一のモデル 1 銘柄Aの 今週のニュース 銘柄Bの 今週のニュース

    銘柄Cの 今週のニュース 銘柄Dの 今週のニュース 銘柄Aの 次週リターン 銘柄Bの 次週リターン 銘柄Cの 次週リターン 銘柄Dの 次週リターン 銘柄Aの トピック情報の平均 銘柄Bの トピック情報の平均 銘柄Cの トピック情報の平均 銘柄Dの トピック情報の平均 LinearReg ressionの 単一モデル を利用 モデリングの狙い • モデリングではまずは最も基本的な手法によるベンチマークを把握することが重要(そこから良くなったかをみ ていく)。いきなり複雑なモデルを作ると何が効果があったのかの知見が貯まらない。 • 線形・単一のモデルだが、このアプローチの筋が良いならこの手法でも何らかの結果が出るはずなので、まず は結果を観測する
  7. STRICTLY CONFIDENTIAL 10 #1 全銘柄のデータで学習した全銘柄で利用する単一のモデル 2 結果1: モデルのトレーニング期間とテスト期間の精度の測定 トピック数 5/10/15/20のケースでそれぞれ実験してみた

    が、トレーニング期間の上げ下げ精度自体が低いのでそもそ もこの方法ではトレーニング期間でも上げ・下げの分離が出 来ていない。つまり線形の分解面が存在しないことになる。 結果2: 各トピックと銘柄の次週のリターンの相関係数 銘柄ごとにトピックに対する相関係数の符号が逆転することが観測できる。これはコロナのトピックがDX銘柄にとっては +だが、外食ではーになるということを考えると容易に理解できる結果である。つまり、トピックはマーケットにグロー バルに説明できる変数ではないことがわかる(これは直感に反しない)
  8. STRICTLY CONFIDENTIAL 11 #2 各銘柄のデータで、銘柄ごとにモデルを作成 1 銘柄Aの 今週のニュース 銘柄Bの 今週のニュース

    銘柄Cの 今週のニュース 銘柄Dの 今週のニュース 銘柄Aの 次週リターン 銘柄Bの 次週リターン 銘柄Cの 次週リターン 銘柄Dの 次週リターン 銘柄Aの トピック情報の平均 銘柄Bの トピック情報の平均 銘柄Cの トピック情報の平均 銘柄Dの トピック情報の平均 モデリングの狙い • 単一モデルは線形分離できないので銘柄ごとにモデルを線形モデルで学習してみる • ただし、実際にやってみると銘柄の学習ができそうなデータ数のある銘柄は80銘柄程度しかなかった • 投資に利用するにはあきらかに数が少ないが、ニュースが集中する大型個別株投資(TOPIX 100)などには良い アプローチかもしれない 銘柄Aの モデル 銘柄Bの モデル 銘柄Cの モデル 銘柄Dの モデル
  9. STRICTLY CONFIDENTIAL 12 #2 各銘柄のデータで、銘柄ごとにモデルを作成 2 結果: モデルのトレーニング期間とテスト期間の精度の測定 青のトレーニング期間の精度が上昇(つまり線形分離はできいる)、しかしオレンジ のテスト期間の精度はいくつか高い銘柄もあるが平均は0.5近辺になっている。上

    位のモデルはなかなか良さそうだが、そもそも学習できるデータがある銘柄が限定 的であるこのアプローチでは投資対象の銘柄数が非常に限定的になりそうという感 触がある。 このあたりのモデルは使えるかもしれない が、いかんせん銘柄数がすくない
  10. STRICTLY CONFIDENTIAL 13 #3 各銘柄のデータでセクターごとにモデルを作成 1 銘柄Aの 今週のニュース 銘柄Bの 今週のニュース

    銘柄Cの 今週のニュース 銘柄Dの 今週のニュース 銘柄Aの 次週リターン 銘柄Bの 次週リターン 銘柄Cの 次週リターン 銘柄Dの 次週リターン 銘柄Aの トピック情報の平均 銘柄Bの トピック情報の平均 銘柄Cの トピック情報の平均 銘柄Dの トピック情報の平均 モデリングの狙い • 全体では学習ができず、銘柄個別だとデータがすくないのでその中間であるセクター情報でモデルを作成。 • 具体的には17分類でそれぞれモデルを作成するアプローチを採用 • セクター毎にトピックの効果が共通であることは直感に反してないので、期待ができる可能性がある セクター1の モデル セクター2の モデル
  11. STRICTLY CONFIDENTIAL 14 #3 各銘柄のデータでセクターごとにモデルを作成 2 結果: モデルのトレーニング期間とテスト期間の精度の測 定 17業種のうち10業種でトレーニング可能なデータが存在

    していた。 それぞれの業種別モデルを見ると、全体モデルよりもト レーニング期間のテストが線形分離に成功(精度53-60%) しており、単一モデルより期待がもてる。 テスト期間の精度も業種5は外れ値としてもうまく動いて そうな業種もあり、全体モデルと銘柄別モデルの中間の 業種別モデルがポテンシャルが高そうなことがわかって きた。 単一モデルと違って線形分離できていそう な傾向が観測できる
  12. STRICTLY CONFIDENTIAL 15 #4 セクター情報を入力に加えた単一のモデルを作成 1 銘柄Aの 今週のニュース 銘柄Bの 今週のニュース

    銘柄Cの 今週のニュース 銘柄Dの 今週のニュース 銘柄Aの 次週リターン 銘柄Bの 次週リターン 銘柄Cの 次週リターン 銘柄Dの 次週リターン 銘柄Aの トピック情報の平均/ 業種情報 銘柄Bの トピック情報の平均/ 業種情報 銘柄Cの トピック情報の平均/ 業種情報 銘柄Dの トピック情報の平均/ 業種情報 モデリングの狙い • #3の結果より業種情報を利用することのポテンシャルを感じたのでその方向でモデルを発展させることに決定 • RandomForestの単一モデルを利用し、業種を説明変数に与えモデル内部的に業種別のパターンを学習するこ とを期待。おそらく、データが足りてなかった問題も改善する可能性がある • 一応、他にも時価総額情報も一緒に与えてみてインパクトを見る RandomForestを 利用。 単一モデルだが、 業種の情報を与え て学習
  13. STRICTLY CONFIDENTIAL 1 6 #4 セクター情報を入力に加えた単一のモデルを作成 2 結果 モデルのトレーニング期間とテスト期間の精度の測定 •

    トピック10/33分類において全体精度51%だが、probabilityとして取得できる予測スコアtop 10%を見るとテスト期間の精度が54%に達しているモデルがある(random forestを利用すると train accuracyはあまり意味がない) • 予測スコアtop 10%を評価するのは、実際に投資対象に使うのは予測スコアが高い銘柄を利用 するはずなので、スコアの分位点の上位スコアがきちんと精度がでているかを確認する手法 • いったんここでモデリング方針の策定は完了、通常はここから説明変数追加、モデルの変更、ハ イパーパラメータの選定、最適化項目の調整、ユニバースの選定などで精度だけではなく順位相 関(スコアと次の週のリターン)をあげていく 自信のあるtop 10%の予測を評価 probability順に上からソートして上位 だけを評価する手法を利用 予 測 全 体
  14. STRICTLY CONFIDENTIAL 17 参考情報: #4 33業種の情報を入力に加えた単一のモデルの特徴量 有望なtopicが10個、33セクター を利用したモデルに対して特徴量 の重要度を抽出 •

    topicが支配的な影響力を 持っている • 6100 小売業、9050 サービ ス業、3050 サービス業など の業種のone hot vectorを利 用していることがわかる • 重要度が若干高い0のトピッ クは「(0, '0.058*"コロナ" + 0.010*"会長" + 0.009*" 新型コロナ" + 0.008*"追加" + 0.008*"コロナ禍"')」、4 のトピックは「(4, '0.024*" 開始" + 0.020*"開発" + 0.014*"発売" + 0.013*"事 業" + 0.013*"サービス"')」 となっている #4 33業種の情報を入力に加えた単一のモデルの特徴量の重要度
  15. STRICTLY CONFIDENTIAL 18 ここまでのモデリングの試行錯誤のまとめ # モデルの概要 説明変数 モデルの種別 予測対象 1

    全銘柄のデータで学習 した全銘柄で利用する 単一のモデルを作成 銘柄ごとのトピックの 平均値 LinearRegression ニュースが出ている銘柄全 体 2 各銘柄のデータで、銘 柄ごとにモデルを作成 銘柄ごとのトピックの 平均値 LinearRegression 学習データと評価データが 十分な銘柄のみに限定 3 各銘柄のデータでセク ターごとにモデルを作 成 銘柄ごとのトピックの 平均値 LinearRegression 17業種毎のモデルを学習す るため、学習データと評価 データが十分な業種に限定 4 セクター情報/時価総額 を入力に加えた単一の モデルを作成 銘柄ごとのトピックの 平均値 + セクター情報 /時価総額 RandomForest ニュースが出ている銘柄全 体 1. 最初はシンプルなモデルから、ベンチマークを作る。テスト期間の精度なども用いて学習可能性を検討 2. 線形のモデルをキープしたまま、だんだんモデルの複雑度を上げていき、仮説検証を行う 3. 最後にある程度仮説が固まったところで複雑なモデルを利用して、精度を狙いに行く