古典的多次元尺度構成法
この例では、cmdscale を使用して古典的 (計量) 多次元尺度構成法 (別名「主座標分析」) を実施する方法を示します。
cmdscale は入力として点間の距離の行列をとり、点の構成を作成します。理想的に、これらの点は、2 次元あるいは 3 次元にあり、それらの間のユークリッド距離はオリジナルの距離行列を再び生成します。このようにして、cmdscale によって作成された点の散布図は、オリジナルの距離の視覚的な表現を提供します。
非常に単純な例として、点間の距離だけから、点集合を復元することができます。最初に、4 番目の座標に小さい成分をもつ 4 次元の点を作成し、それらの点を距離に変換します。
rng default; % For reproducibility X = [normrnd(0,1,10,3),normrnd(0,.1,10,1)]; D = pdist(X,'euclidean');
次に、cmdscale を使用して、それらの点間の距離の配置を見つけます。cmdscale は、正方行列、あるいは、この例のように、pdist により生成された上三角形のベクトルとして距離を受け取ります。
[Y,eigvals] = cmdscale(D);
cmdscale は、2 つの出力を生成します。最初の出力、Y は、再構成された点を含む行列です。2 番目の出力 eigvals は、"内積行列" と呼ばれることもある並べ替えされた固有値を含むベクトルであり、これは最も簡単な場合、Y*Y' に等しくなります。これら固有値の相対的な大きさは、再構成された点をもつオリジナルの距離行列 D を再生成する Y の対応する列の相対的な寄与を示します。
format short g [eigvals eigvals/max(abs(eigvals))]
ans = 10×2
35.41 1
11.158 0.31511
1.6894 0.04771
0.1436 0.0040553
2.9678e-15 8.3812e-17
1.7158e-15 4.8454e-17
1.5224e-15 4.2995e-17
-1.4626e-15 -4.1303e-17
-1.7759e-15 -5.0153e-17
-8.4529e-15 -2.3871e-16
eigvals が正と (丸め誤差内の) 零の固有値のみを含む場合、正の固有値に相当する Y の列は、D の正確な再構成を提供します。たとえば、pdist を使用して計算された、その点間のユークリッド距離、D の値に (丸め誤差内で) 等しいという意味で、
maxerr4 = max(abs(D - pdist(Y))) % Exact reconstructionmaxerr4 =
5.107e-15
eigvals の固有値の 2 つまたは 3 つが残りのものよりもはるかに大きい場合、Y の対応する列に基づく距離行列は、オリジナルの距離行列 D をほぼ再構成します。この意味で、これらの列は、適当にデータを記述する低次元の表現を形成します。しかし、適切な低次元の再構成を見つけることは、必ずしも可能ではありません。
maxerr3 = max(abs(D - pdist(Y(:,1:3)))) % Good reconstruction in 3Dmaxerr3 =
0.043142
maxerr2 = max(abs(D - pdist(Y(:,1:2)))) % Poor reconstruction in 2Dmaxerr2 =
0.98315
3 次元における再構成は D を非常によく再生しますが、2 次元における再構成は、D の最大値と次数の大きさが同じになるというエラーになります。
max(max(D))
ans =
5.8974
eigvals は、負の固有値を含むことがありますが、これは、D の距離は正確には再生することができないことを示します。つまり、点間のユークリッド距離 が D により与えられるような点の配置がないこともあります。大きさにおいて、負の最大固有値が、正の最大固有値に比較して小さい場合、cmdscale により出力される構成は、うまく D を再生します。