多次元尺度構成法は複数の要素の間で距離(あるいは距離に類似したもの)が計算できる時、それを用いてデータの数より低い次元を指定して、その次元にデータを配置する手法。
- 距離に類似したもの、と書いたのは、順序などの非定量データを利用する非計量的MDSと呼ばれる手法も存在するため(以下では考慮しない)
距離行列$S$が与えられる
- $\mathbf{K} = -\dfrac{1}{2}({\bf I}-\dfrac{1}{n}{\bf 11}')S({\bf I}-\dfrac{1}{n}{\bf 11}')$として行列$K$を計算する
- $\mathbf{H} = \mathbf{I} - \dfrac{1}{n}\mathbf{1}\mathbf{1}^T$はヤング・ハウスホルダー変換と呼ばれ、データ点の重心を原点に移動する
- $\mathbf{K}$を固有値分解($\mathbf{K}\mathbf{V} = \mathbf{V}\mathbf{\Lambda}$)する
- $\mathbf{X} = \mathrm{sqrt}(\mathbf{\Lambda})\mathbf{V}^T$
- ここで固有値は大きい順(寄与が大きい順)に並べておく
- $\mathbf{\Lambda}$の一部を取り出して$\mathbf{X}$を近似する
ちょっと試してみる
from sklearn.manifold import MDS from sklearn.manifold import TSNE import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_breast_cancer M = load_breast_cancer() data = M.data target = M.target # 0,1のラベルらしい print(data.shape) #(569, 30) mds = MDS(n_components=2, dissimilarity='precomputed') # 距離行列を使う tsne = TSNE(n_components=2) dist_mat = np.array([ [np.dot(data[i,:], data[j,:]) for j in range(data.shape[0])] for i in range(data.shape[0])]) X = mds.fit_transform(dist_mat) Y = tsne.fit_transform(data) plt.scatter(X[:, 0], X[:, 1], col=target) plt.show() plt.scatter(Y[:, 0], Y[:, 1], col=target) plt.show()
MDS
tSNE
この結果が良いのか悪いのかの判定すら付かないのでちょっと記述統計の練習をした方が良いようである。
- 参考
- 多次元尺度構成法イントロダクション - kohta blog
- Multidimensional Scaling (多次元尺度構成法, MDS) の計算方法と実装 - yuki-koyama's blog
- mathtoolbox/classical-mds.cpp at master · yuki-koyama/mathtoolbox · GitHub
- scikit-learnドキュメント: sklearn.manifold.MDS — scikit-learn 0.21.2 documentation
- PCA、tSNEとの性能比較: 【python】pca、mds、nmds、tsneとmatplotlibでデータの可視化をしてみる - 静かなる名辞
- MDSやnMDS、t-SNEは基本的に入力次元数が大きいと重いアルゴリズムなので、とりあえずPCAで15次元まで落としてから入力している、との記載あり
- 高次元データの可視化の手法をSwiss rollを例に見てみよう | ALBERT Official Blog
- isomapは多様体上で距離を測り、多次元尺度構成法を行います、との記載あり
- isomapの記載はhttps://web.archive.org/web/20170517062726/http://www.math.uwaterloo.ca/~aghodsib/courses/f10stat946/notes/lec10-11.pdfにもあり
- 非線形データ(swiss roll)に対するPCA、MDS、SOM、Kernel PCA、Isomap、Locally linear embedding、Diffusion map、Generative topographic mapの比較