アセットマネージャーのためのファイナンス機械学習:クラスタリング 実験 サンプル相関行列のシャッフル前後でのONC

 前記事のrandomBlockCorrで得られた相関係数をヒートマップで可視化する。

nCols, nBlocks, minBlockSize = 30, 6, 2
corr0 = randomBlockCorr(nCols, nBlocks, minBlockSize=minBlockSize) 

import matplotlib.pyplot as plt
plt.matshow(corr0) 
plt.gca().xaxis.tick_bottom()
plt.gca().invert_yaxis()
plt.colorbar()
plt.show()
RandomBlockcorr(30,6,2)

 ブロックの各サイズは[6,9,7,2,3,3]である。
 この相関行列をそのままONCに渡すと、以下のヒートマップが得られる。

corr0New, clstrs0New, silh0New = clusterKMeansTop(corr0)
clstrs0New
ONC (corr1)

 ONCによるクラスタリングの結果は返り値のclstrs0Newに入っている。

clstrs0New

クラスリングはオリジナルと一致する。

 さらに、オリジナルのcorr0をシャッフルして新たな相関行列を作る。

def ShuffleMatrix(bCorr,random_state=None):
    rng=check_random_state(random_state)
    corr0=pd.DataFrame(bCorr)
    cols=corr0.columns.tolist()
    rng.shuffle(cols)
    corr0=corr0[cols].loc[cols].copy(deep=True)
    return corr0

 シャッフル後の相関行列を可視化すると以下のように散らばっている。

ShuffleMatrix(corr0)

シャッフル後にONCに渡した結果のヒートマップは以下の通りである。

corr1New, clstrs1New, silh1New = clusterKMeansTop(corr1)
ONC(corr1)
clstrs1New

オリジナルのクラスタリングが復元されている。

いいなと思ったら応援しよう!