【導入編】の続きです。
前回はカルバックライブラー情報量(KL距離)とグラフィカルラッソの2つの武器を使って、個々の銘柄の値動きの異常度を検知するというアイデアを紹介しました。今回はグラフィカル・ガウジアン・モデルというモデルを用いて、実際に二つの確率分布間のKL距離を導出していきます。
ここで解析的にKL距離を算出することによってPythonなどコードにモデルを組みこめるようになります。【実践編】は次回書きます。
グラフィカル・ガウジアン・モデル
そもそもグラフィカルラッソのグラフとはなんでしょうか。ここで言うグラフとは、多変量データセット内の変数間の条件付き依存関係を表現するためのツールです。
グラフの定義
グラフGは、二つの集合VとEの組で定義されます。ここで、
-
頂点(ノード)の集合V: グラフの基本要素で、点として表現されます。各頂点はグラフの特定の要素やオブジェクトを代表します。
-
辺(エッジ)の集合E: 二つの頂点を結ぶ線として表現され、頂点間の関係や接続を示します。辺は有向(矢印で示される、方向性がある)か無向(単なる線、方向性がない)のいずれかです。
特に変数間の依存関係を多変量正規分布を用いて推定する場合、 このグラフモデルはグラフィカル・ガウジアン・モデル(GGM)と呼ばれます。
GGMにおけるグラフの作成と意味
-
精度行列の使用: GGMでは、変数間の関係を精度行列(共分散行列の逆行列)を用いて表現します。この行列の各要素が、対応する二つの変数間の関係の強さを示します。
-
関係の解釈: 精度行列の要素がゼロでない場合、それは二つの変数間に直接的な関係があることを意味し、グラフ上にエッジで結ばれます。要素がゼロの場合、関係がないと解釈され、エッジは描かれません。
-
データ構造の可視化: このグラフを使って、データセット内の変数間の複雑な関係を視覚化することができます。例えば、ある変数が多くの他の変数と関連している場合、その変数は多くのエッジを持つことになり、データ内で重要な役割を担っている可能性が高いと解釈できます。
GGMにおける多変量正規分布
多変量正規分布を表現する際、一般的にはN(μ,Σ)の形で表現されますが、GGMの枠組みでは精度行列Λを用いてN(x∣μ,Λ−1)のように表現されることがあります。
特に平均がゼロベクトルの場合、多変量正規分布の確率密度関数は次のようになります。
p(x)=(2π)k∣Λ−1∣1exp(−21xTΛx)
精度行列を使用すると、変数間の直接的な依存関係がより明確に表されるため、グラフィカルモデルなどの文脈でしばしば用いられます。
GGMにおける変数間のKL距離を解析的に導出する
ここからが本題です。
ziをベクトルx上にある変数xi以外の他の変数のベクトルとします。ziの確率分布が与えられた時のxiの条件付き分布が我々の関心なので、pA(xi∣zi)とpB(xi∣zi)の間の KL 距離を分布pA(zi)によって評価します。(ETH, SOL, BNB, ARB.....が与えられたときのBTCの値動きの確率分布の距離を二つの地点で測る)
diAB=∫dzipA(zi)∫dxipA(xi∣zi)lnpB(xi∣zi)pA(xi∣zi)
まず準備として精度行列Λおよびその逆行列である分散共分散行列Σをそれぞれ次のように分割します。
Λ=(LAlAlA⊤λA),Σ≡Λ−1=(WAwAwA⊤σA)
p(xi∣zi)の分布を求める
xをM次元ベクトルとすると、ziはM−1次元になります。正規分布を正規分布で割ったものは正規分布になるので、xiに関する項のみexp内で展開すれば良いです。
p(xi∣zi)=(2π1)M−1⋅det(L)21⋅exp(−21ziLzi)(2π1)M⋅det(Λ)21⋅exp(−21x⊤Λx)∝exp(−21(zixi)⊤(LAlAlA⊤λA)(zixi)÷21zi⊤Lzi)∝exp{−21(λxi2+2zi⊤lAxi)}∝exp{−2λ(xi−λzi⊤lA)2}
となって、xiは平均λzilA、分散λ1の正規分布に従うことがわかります。
xi∼N(λzilA,λ1)
また、確率密度関数は、
p(xi∣zi)=2πλexp(−2λ(xi−λzi⊤lA)2)
となります。これを用いてKL距離に現れる数式を解いていきます。
diABについて解いていこう
ziの定義からx=(zi,xi)となることに注意して
diAB=∫dzipA(zi)∫dxipA(xi∣zi)lnpB(xi∣zi)pA(xi∣zi)=∫∫lnpB(xi∣zi)pA(xi∣zi)pA(zi)dzipA(xi)dxi=∫lnpB(xi∣zi)pA(xi∣zi)dx=∫ln(λBλAexp(−2λA(xi−λAzi⊤lA)2+2λB(xi−λBzi⊤lB)2))pA(x)dx.=∫21lnλBλA+{−2λA1(x(−lAλA))2+2λB1(x(−lBλB))2}pA(x)dx=21lnλBλA+EA[−2λA1(−lAλA)⊤x⋅x⊤(−lAλA)+2λB1(−lBλB)⊤x⋅x⊤(−lBλB)](1)
E[x⋅x⊤]=(WAwAwA⊤σA)であるから、(1)式は
(1)=21lnλBλA−2λA1(lA⊤WAlA−2wA⊤lAλA+λA2⋅σA)+2λB1(lB⊤WAlB−2wA⊤lB+λBσA)=wA⊤(lA−lB)+21(λBlB⊤WAlB−λAl1⊤wAlA)+21{lnλBλA+σA(λB−λA)}
最終的にKL距離diABは以下のように表すことができます。
diAB=wA⊤(lA−lB)+21(λBlB⊤WAlB−λAl1⊤wAlA)+21{lnλBλA+σA(λB−λA)}
AとB を入れ替えることで、diBAも同様に得ることができます。
導出にあたっては疎な相関グラフの学習による相関異常の検出を参考にしました。ただ、元の論文では第一項の符号が逆になっているのですが、これは論文の方の間違いかと思います。もし私の導出過程に間違いがあればTwitterかコメントで教えてください。
さて、ここで得られた三つの項からなる数式は定性的にはどう捉えることができるでしょうか。第1章で紹介したGGMの枠組みを使えば、それぞれの項は次のように解釈することができます。
-
第1項 近傍の生成および消滅の異常検知:
これは、ある変数xiがどれだけ多くの他の変数と関連しているか、つまりその変数の次数(直接的な繋がりの数)を測るものです。近傍とは、その変数に直接リンクしている他の変数の集まりのことです。lAにおける非ゼロ要素の数がxiの次数と同じであるため、この項はxiの近傍における変化、すなわち新たな接続の生成や既存の接続の消滅を検出する指標として機能します。
-
第2項 - 近傍グラフの「緊密さ」:
これは、変数xiの近傍にある変数間の関係の強さ、すなわちグラフにおけるエッジの重みがどれだけ「緊密」に結びついているかを表します。もしxiが他の変数jに対してただ一つのエッジを持っている場合、この項はxiとjの間の相関係数の差を、xiに関連する精度λAやλBで割ったものとなります。これにより、変数間の相関の強さがどのように変化しているかが測定されます。
-
第3項 - 各変数の精度または分散の変化:
この項は、変数間の相関関係の変化よりも、各変数の精度(もしくは分散)がどのように変わるかを示しています。精度は変数の不確実性の逆数であり、精度が高いほど不確実性が低くなります。したがって、この項は個々の変数の不確実性がどのように変化しているかを捉える指標です。
要するに、これら3つの項は、変数間の関係、それらの関係の緊密さ、そして個々の変数の不確実性がどのように変化しているかを検出するための、GGMにおける異なる側面を捉えています。これらの指標を通じて、ネットワークの構造的な変化や変数間の関連の強度の変化、そして個々の変数の確実性の変化を定量的に評価することができるようになります。