アセットマネージャーのためのファイナンス機械学習:測度 KLダイバージェンスとクロスエントロピー
scipy.statのentropy関数は、2変数を受け取った場合は、KLダイバージェンスを返す。
これを使えば、KLダイバージェンスとクロスエントロピーは以下の様に実装される。
x = np.random.normal(0, 1, 1000)
y = np.random.normal(0, 1, 1000)
bins=10
hX=ss.entropy(np.histogram(x,bins)[0])
dKL=ss.entropy(np.histogram(x,bins)[0],np.histogram(y,bins)[0])
hc_XY=hX+dKL
Hacine-Gharbi et al Hacine-Gharbi and Ravierの離散化関数を使う時は以下の通りである。
bXY=numBins(x.shape[0],corr=corr)
cXY=np.histogram2d(x,y,bXY)[0]
hX=ss.entropy(np.histogram(x,bXY)[0])
dKL=ss.entropy(np.histogram(x,bXY)[0],np.histogram(y,bXY)[0])
hc_XY=hX+dKL