アセットマネージャーのためのファイナンス機械学習:距離測度 実験結果
相関係数が$${\rho}$$の二つの確率変数$${X}$$と$${Y}$$は、独立な乱数$${e}$$を使って、$${y=\rho x +\sqrt(1-\rho^2)e }$$で与えられることから、$${I[X,Y]=-\frac{1}{2}\log (1-\rho^2)}$$となる。
この、線形だけでなく非線形でも扱える指標となる相互情報量を、連続な確率変数を離散化した上で、その関係性を変えて計測する実験を行う。
正規化された相互情報を返す関数はスニペット3.4で実装されている。
def mutal_Info(x,y,norm=False):
bXY=numBins(x.shape[0],corr=np.corrcoef(x,y)[0,1])
cXY=np.histogram2d(x,y,bXY)[0]
iXY=mutual_info_score(None, None, contingency=cXY)
if norm:
hX=ss.entropy(np.histogram(x,bXY)[0])
hY=ss.entropy(np.histogram(y,bXY)[0])
iXY/=min(hX,hY)
return iXY
関係性無しの場合
二つのガウス分布に従う二つの乱数$${x,e}$$から、$${y=0x+e}$$を生成する。この$${x}$$と$${y}$$の相互係数と相互情報量は以下の結果となる。
線形関係の場合
$${y=100x+e}$$を生成する。この$${x}$$と$${y}$$の相互係数と相互情報量は以下の結果となる。
非線形の場合
$${y=100|x|+e}$$を生成する。この$${x}$$と$${y}$$の相互係数と相互情報量は以下の結果となる。
以上より、非線形関係があり相関係数がゼロとなり関係性が見えない場合でも、相互関係情報量は関係性を示している。
よって、相互情報量は相関係数よりも強い指標と言える。