【買いたい株が見つかる】銘柄検索・高度な分析をするならCOLOMA

Tech Blog

  • トップ
  • Graph Convolutional Networksの基礎
272019-05

Graph Convolutional Networksの基礎

はじめに

社会には多くの"つながり"が存在し,それはグラフとして表現することができる.例えばSNSにおけるユーザー同士のつながりや道路網などもグラフとして表されることは容易に想像できる.現在、Convolutional Neural Network (CNN)といったモデルは、画像などのグラフに対して非常に高い性能を達成しているが,これらのモデルを任意のグラフに適用するのは難しい問題である.そこで,Graph Convolutional Networks (GCN)が提案された.機械学習のトップカンファレンスであるICML2019のWorkshopのセッションとして選ばれるなど,近年注目されている分野である.本記事では,その基礎を解説した後,Coraデータセットを用いたGCNによる簡単なクラス分類の実験について説明する.

参考文献

thomas tkipf氏による解説 https://tkipf.github.io/graph-convolutional-networks/

解説

Graph Convolutional Networks(GCN)の基礎

定義
あるグラフにおいて,
input
・隣接行列 ( 行列): ノード同士のつながり方を表す
・特徴行列 ( 行列): 各ノードの特徴量
: グラフのノード数, : 各ノードの特徴量の数

output
・中間表現
・最終出力 ( 行列)
: 最終出力の数

としたとき,GCNの層間での計算は非線形関数を用いて次のように表される.

ここで,は層数である.

簡単な例    

重み行列をとし,ReLUといった非線形な活性化関数を用いて,
という演算を考える. 以上の式は非常に単純であるが,実験でも確認されたように強力である. しかし,上記の単純な演算では2つの問題が挙げられる.
1. Aの行列積はすべての隣接ノードの特徴ベクトルを抽出するが,自身のノードの特徴ベクトルを抽出できない.
2. Aが正規化されていないため,行列積により特徴ベクトルのスケールを変えてしまう.

そこでこれらの問題を解決するため,
1. に単位行列を足した を隣接行列として用いる.
2. (の次数行列)を用いて,とした正規化ラプラシアン行列に変換する.

1, 2を組み合わせた以下の演算が提案された.Kipf & Welling(ICLR 2017) ここで, であり,の次数行列である.
(参考) 次数行列 (https://en.wikipedia.org/wiki/Degree_matrix)


実験

上記で説明したGCNを用いて簡単な実験を行った.

Coraデータセット https://github.com/tkipf/pygcn/tree/master/data/cora graph

機械学習論文(計2708本)の引用・被引用関係のネットワークで,それぞれの論文に以下のカテゴリ(7クラス)ラベルがついている.

  • Case_Based
  • Genetic_Algorithms
  • Neural_Networks
  • Probabilistic_Methods
  • Reinforcement_Learning
  • Rule_Learning
  • Theory

ここで各論文の特徴量として,前処理(stop word除去, Stemming)後,出現頻度が10以下の単語を除いて残ったユニークな1433語が含まれているか否か(1 or 0)を用いている.よって,上記で説明した特徴行列行列 ()になる.

実装  

著者 thomas tkipf氏による実装を用いた.

結果  

GCN(隣接行列変換あり) Test set results: loss= 0.7336, accuracy= 0.8240 normalize-result

GCN(隣接行列変換なし) Test set results: loss= 1.0801, accuracy= 0.8110 no-normalize-result

lossとaccuracyの遷移を見ると,GCNによる学習がうまくいっていることがわかる.lossに着目すると,隣接行列の変換がない場合の下がり方がゆるい.さらにテストデータにおいて,隣接行列の変換をした方がlossとaccuracy ともに性能が高かった.Coraデータセットは小規模なデータセットであるため,より大規模なグラフになった場合にはさらに大きな性能差になることが想定される.

発展性

紹介したGCNはエッジの情報を扱っていないが,エッジつまりノード同士の関係(ex. ソーシャルネットワークにおける友人,恋人関係など)は重要な情報であり,エッジの情報を埋め込むGraph Networkも多々提案されている. また,機械翻訳や画像分野で賑わいを見せているAttention機構を導入したGraph Attention Network[URL]にも注目していきたい.

その他の記事
162019-07

サプライヤー・カスタマー関係における情報の非対称性からリターンを生む方法

企業同士は"サプライヤー(商品供給者)"と"カスタマー(顧客)"の関係で繋がっている。本記事では、”市場参加者の注意力の散漫”によるサプライヤー/カスタマー2社間の特徴的な株価変動を実例とともに紹介したあと、その関係を投資戦略に組み込んだカスタマーモーメンタムとその実験について説明する。

続きを読む
052019-07

Dynamic Mode Decomposition ~データから時空間ダイナミクスを抽出する方法~

複雑な時空間ダイナミクスをデータから抽出する手法の一つとしてDynamic Mode Decomposition (動的モード分解)を紹介する

続きを読む
052019-07

ヘッジファンドは勝てるのか?~2007年から2017年の間のヘッジファンドのパフォーマンスをくらべてみました~

米国株式市場を対象として、ヘッジファンドとインデックスとを比較した実証研究を紹介する。2007年から2009年の金融危機をはさんだ期間においても、インデックスを上回るパフォーマンスのヘッジファンドが存在することがわかった。

続きを読む
272019-05

Graph Convolutional Networksの基礎

グラフ構造を扱うGraph Convolutional Networks (GCN)が近年盛り上がりを見せている.本記事では,Graph Convolutional Networksの基礎を解説した後,Coraデータセットを用いた簡単なクラス分類の実験について説明する.

続きを読む
262019-05

金融商品や投資戦略の評価に使われている各種指標の紹介

銀行や証券会社で販売されている金融商品や、機関投資家が執行する投資戦略の性能評価に使用されている各種指標を紹介する。

続きを読む
122019-04

複素リスク分散ポートフォリオ

金融資産のポートフォリオを生成するとは,適切な配分で複数の金融資産を保有することである. その際に, 数理最適化の手法が応用されている. 本稿ではポートフォリオ生成に関する基本的な内容を復習し, 複素リスク分散ポートフォリオの概要を説明する.

続きを読む
112019-03

株価とマクロ経済指標との関係

日々の生活で触れる経済ニュースの中で,国内総生産や消費者物価指数といったマクロ経済指標と個々の企業の株価に関する情報は必ずといってもよいほど目にするものである.そこで,一つの疑問が湧いてくる.これらのマクロ経済指標と株価との間には何かしらの関係性があるのだろうか?本稿では,イギリス,ドイツ,フランスを対象に株式市場のインデックスとマクロ経済指標との間の関連性について調べた結果を紹介する.

続きを読む
052019-03

Derivative DTW ~時系列パターンの類似度計算の手法~

時系列データ同士の類似度を算出する手法として,動的時間伸縮法 / DTW (Dynamic Time Warping) がある.この手法は、時系列データを点として扱っているが,形状によってはうまく機能しない場合がある.そこで,本記事ではDTWの拡張であるDDTW (Derivative Dynamic Time Warping)を用いた時系列パターンの類似度の算出に関して説明する.

続きを読む
052019-03

サプライヤー・カスタマーの関係性を使った投資戦略

企業間取引での商品提供者(サプライヤー)と顧客(カスタマー)同士のつながりをサプライチェーンという。株価がサプライチェーンを伝わる際に情報の非対称性が存在すると仮定すると、そこには利益を獲得できる機会が生じると期待できる。この発想に基づいた投資戦略を紹介する。

続きを読む