多次元尺度構成法(MDS)とは?主成分分析との違い・計算手順・活用例を解説
多次元尺度構成法(MDS:Multidimensional Scaling、多次元尺度法とも呼ぶ)は、対象どうしの「似ている・似ていない」を表す非類似度データを、2〜3次元の平面上の点の配置(布置図)に置き換えて可視化する手法です。近い点ほど似ている、遠い点ほど異なる、と地図のように直感的に読めるのが特徴です。アンケートの評定やブランド比較、心理学の類似性判断など「変数の値そのものではなく、対象間の関係」を見たい場面で使われます。この記事では定義と仕組み、計量MDSと非計量MDSの違い、主成分分析との違い、当てはまりを測るストレス値、PythonやRでの手順、そして向かない場面までを整理します。
まとめ:多次元尺度構成法の要点
- MDSは非類似度(距離)データを低次元の点配置に変換し、対象の関係を地図として可視化する手法。
- 距離の数値をそのまま扱う計量MDSと、順位だけを扱う非計量MDS(nMDS)がある。
- 変数×観測データから分散最大の軸を作る主成分分析(PCA)と違い、MDSは対象間の距離行列を直接入力にできる。
- 布置の当てはまりはストレス値で測り、Kruskalのストレス1では0.10以下がひとつの目安。
- マーケティングの知覚マップ、心理学の類似性・印象分析などで用いられる。
以下で、定義から計算手順、実務での使いどころまで順に見ていきます。
多次元尺度構成法の定義と「多次元」が指すもの
非類似度データを布置図に変換する手法
MDSの入力は、対象の各ペアがどれだけ似ていない(離れている)かを並べた非類似度行列です。n個の対象があれば n×n の対称行列になり、対角は0(自分自身との距離)になります。MDSはこの距離をできるだけ保つように、各対象へ2次元や3次元の座標を割り当てます。出力は「布置図」と呼ばれる散布図で、元データが持つ距離の大小を点の間隔として再現します。したがってMDSの目的は予測ではなく、対象間の構造を人が読める形にする可視化・探索です。
「多次元」が意味する変数と次元
ここでの「多次元」とは、対象を特徴づける観点(変数)が多数あることを指します。10項目のアンケートで評価された商品は10次元の情報を持ちますが、人は3次元より高い空間を直接見られません。MDSは、この高次元の関係を距離という1つの尺度に集約したうえで、少ない次元へ落とし込みます。つまり「多次元」の情報を「低次元の地図」に翻訳するのがMDSであり、次元削減手法の一種と位置づけられます。
距離測度と空間配置、適合度を測るストレス値
近接行列から布置を求める流れ
MDSはまず、対象間の非類似度(近接行列)を用意します。数値データからユークリッド距離などで計算する場合もあれば、「A社とB社はどのくらい似ているか」を人が直接評価した心理的距離をそのまま使う場合もあります。次に、指定した次元数の空間へ点を初期配置し、点の間隔と元の距離のズレが小さくなるよう座標を反復的に動かします。この「元の距離をどれだけ忠実に再現できているか」を1つの数値で表したものがストレス値です。
ストレス値の基準(0.05・0.10・0.20)
非計量MDSで広く使われるのがKruskalのストレス1です。値が小さいほど布置が元データによく当てはまっていることを意味し、次の目安で判断します。
| ストレス1の値 | 当てはまりの評価 |
|---|---|
| 0.05未満 | 非常に良い |
| 0.05〜0.10 | 良い |
| 0.10〜0.20 | 可(解釈は慎重に) |
| 0.20以上 | 不良(次元数や手法を再検討) |
あくまで経験則であり、対象数や次元数によって妥当な水準は変わります。ストレスが下がらないときは、次元数を1つ増やす、外れ値を確認する、といった見直しが必要です。
計量MDSと非計量MDSの違いと使い分け
MDSは、入力する非類似度をどこまで数値として信用するかで2系統に分かれます。
| 観点 | 計量MDS(古典的MDS) | 非計量MDS(nMDS) |
|---|---|---|
| 使う情報 | 距離の数値そのもの | 距離の順位関係のみ |
| 前提 | 非類似度が間隔・比率尺度 | 大小の順序が分かれば足りる |
| 代表的な起源 | Torgerson(1952) | Shepard(1962)・Kruskal(1964) |
| 向くデータ | 物理的な距離・実測値 | アンケートの評定・主観的類似度 |
計量MDSは距離の数値を保つため、実測された距離やコストのように数値の意味が確かなデータに向きます。非計量MDS(nMDS)は「AとBよりAとCの方が似ている」という順序だけを再現するので、5段階評価や順位づけのように数値の間隔が保証されない主観データに強みがあります。アンケートやブランド比較を扱う実務では、順位情報を活かせる非計量MDSを選ぶ場面が多くなります。
主成分分析(PCA)との違いと関連手法の中での位置づけ
MDSはしばしば主成分分析(PCA)と混同されますが、入力データの形と目的が異なります。
| 観点 | 多次元尺度構成法(MDS) | 主成分分析(PCA) |
|---|---|---|
| 入力 | 対象間の非類似度(距離)行列 | 観測×変数の数値データ行列 |
| 目的 | 対象間の距離を低次元で再現 | 分散を最大化する合成軸を作る |
| 軸の意味 | 軸自体に意味はなく相対配置を読む | 各軸が変数の重みの組み合わせ |
変数の値が数値で揃っていれば、ユークリッド距離を使った計量MDSはPCAと同じ布置に一致します。一方で、数値化できない「似ている感覚」を入力にできる点はMDS固有の利点です。変数がどう寄与しているかを知りたいなら主成分分析とは?定義・仕組み・分析手順から導入判断まで実装目線で解説や因子分析とは?やり方・結果の見方を具体例でわかりやすく解説が適します。対象をグループに分けたいならデンドログラムとは何か?その定義と階層的クラスタリングにおける意味・役割で扱うクラスター分析、既知の所属で対象を判別したいなら判別分析とは?基本概念と統計的な背景をわかりやすく解説が候補になります。MDSは「関係を地図で見せる」役割に特化した手法だと捉えると、これらとの使い分けが整理できます。
分析手順とPython・Rでの実行方法
MDSの実務は、おおむね次のステップで進みます。
- 対象間の非類似度行列を作る(実測距離の計算、または類似度評価の収集)。
- 次元数を決める(可視化目的なら通常2、必要に応じて3)。
- 布置座標を求める(古典的MDSは距離行列の固有値分解で直接、非計量MDSやSMACOF法は点を反復的に動かしてストレスを最小化)。
- ストレス値で当てはまりを確認し、必要なら次元数を見直す。
- 布置図を描き、点の近さ・遠さのパターンを解釈する。
Pythonではscikit-learnのMDSクラスに、あらかじめ計算した距離行列を渡します。
from sklearn.manifold import MDS
# 非類似度(距離)行列 dist を渡す。precomputed で計算済みの距離を指定
mds = MDS(n_components=2, dissimilarity="precomputed", random_state=0)
coords = mds.fit_transform(dist)
# stress_ は生ストレス(残差二乗和)。上のStress-1基準表と比べるなら
# 非計量MDS(metric=False)+正規化ストレスで評価する
print(mds.stress_)
Rでは、計量MDSにcmdscale()、非計量MDSにMASS::isoMDS()やvegan::metaMDS()を使います。どちらの言語でも、まず距離行列を用意し、次元数を指定して布置座標とストレスを得る流れは共通です。
活用例(知覚マップ・心理学)とINDSCALによる個人差分析
マーケティングでは、消費者が感じるブランドや商品の似ている度合いをMDSにかけ、市場での位置関係を示す知覚マップ(ポジショニングマップ)を作ります。近くに並ぶブランドは競合、離れた空白は参入余地、といった読み方ができます。心理学では、刺激や概念の類似性判断、対人印象の分析にMDSが使われ、人が頭の中で対象をどう配置しているかを可視化します。
個人ごとに評価がばらつくデータには、INDSCAL(Carroll & Chang、1970)という拡張があります。全員に共通する布置(共通空間)と、各回答者が各次元をどれだけ重視するかを表す重み行列を同時に推定するため、「同じ地図でも人によって縦軸を重く見る/横軸を重く見る」といった個人差を保ったまま分析できます。回答者間の差そのものが関心事となる調査で有効です。
多次元尺度構成法が向かない場面と解釈時の注意点
MDSは万能ではなく、次のような場合はほかの手法を選ぶべきです。布置図の軸には本来的な意味がなく、回転・反転しても同じ解であるため、「横軸が価格」のように軸を変数として解釈してはいけません。読むべきは点と点の相対的な近さだけです。ストレス値が0.20を超えるときは、その次元数ではデータの構造を再現できていない合図で、無理に解釈すると誤読につながります。次元を増やすか、そもそもMDSが適さないデータかを疑ってください。
また、対象を4次元以上に配置するとMDS最大の利点である「見て分かる」性質が失われます。可視化ではなく変数の寄与や次元の意味を知りたいのであれば主成分分析や因子分析、対象を明確な集団に分けたいのならクラスター分析の方が目的に合います。MDSは「対象間の距離データがあり、その関係を地図として提示したい」ときに限って選ぶ手法だと考えると、使いどころを外しません。
よくある質問
多次元尺度法と主成分分析の違いは何ですか?
入力データと目的が異なります。主成分分析は観測×変数の数値行列から分散が最大になる軸を作るのに対し、多次元尺度法は対象間の非類似度(距離)行列を入力に、その距離を低次元で再現します。数値データにユークリッド距離を使えば両者は一致しますが、数値化しにくい「似ている感覚」を扱える点がMDS固有の利点です。
MDSのストレス値はいくつなら良いのですか?
Kruskalのストレス1では、0.05未満で非常に良い、0.05〜0.10で良い、0.10〜0.20で可、0.20以上は不良が目安です。ただし対象数や次元数で妥当な水準は変わるため絶対基準ではありません。0.20を超える場合は次元数を増やすか、データや手法の適合を見直します。
計量MDSと非計量MDS(nMDS)はどう使い分けますか?
距離の数値そのものに意味があるデータ(実測距離やコストなど)は計量MDS、大小の順序だけが信頼できるデータ(5段階評価や順位づけなどの主観データ)は非計量MDSが向きます。アンケートやブランド比較では順位情報を活かせる非計量MDSを選ぶことが多くなります。
INDSCALとは何ですか?
Carroll & Chang(1970)が提案した多次元尺度法の拡張で、全回答者に共通する布置と、各回答者が各次元をどれだけ重視するかを表す重み行列を同時に推定します。個人差を保ったまま分析できるため、回答者間の評価の違いそのものに関心がある調査に適します。
多次元尺度法はPythonやRでどう実行しますか?
Pythonではscikit-learnのsklearn.manifold.MDSに距離行列を渡して布置座標とストレス値を得ます。Rでは計量MDSにcmdscale()、非計量MDSにMASS::isoMDS()やvegan::metaMDS()を使います。いずれも、非類似度行列を用意し次元数を指定する流れは共通です。