多次元尺度構成法(MDS)とは?複雑な関係性を地図のように可視化する手法を解説

「たくさんの商品やアンケートの回答データがあって、どれとどれが似ているのか、関係性がよくわからない…」と感じたことはありませんか?そんな複雑なデータの中に隠された関係性を、地図のように2次元や3次元のマップ上に配置して、視覚的にわかりやすくする手法が「多次元尺度構成法(Multi-Dimensional Scaling、略してMDS)」です。

この手法は、データ同士の「似ている度合い(類似度)」や「似ていない度合い(非類似度)」を「距離」として解釈し、その距離関係をなるべく保ったまま、低次元の空間(通常は2次元の平面)に点を配置します。 これにより、似ているもの同士は近くに、似ていないもの同士は遠くに配置されたマップが作成され、データ全体の構造を直感的に把握できるようになります。

特にマーケティング分野で、ブランドや商品のポジショニングを分析する「ポジショニングマップ」の作成によく利用されます。

MDSの主な種類:計量MDSと非計量MDS

多次元尺度構成法は、インプットとして使うデータの性質によって、大きく2つの種類に分けられます。

1. 計量MDS (Metric MDS)

インプットデータが「具体的な数値で測られた距離や類似度」である場合に用います。 例えば、都市間の物理的な距離(km)や、ある評価基準に基づいた具体的な点数などがこれにあたります。計量MDSは、その数値的な距離関係をできるだけ忠実にマップ上で再現しようとします。

2. 非計量MDS (Non-metric MDS)

インプットデータが「順序関係」である場合に用います。 例えば、「AはBよりもCに似ている」といったアンケート結果や、好き嫌いの順位など、具体的な数値ではなく「A > B > C」のような大小関係のデータです。非計量MDSは、数値の正確な比率よりも、その順序関係を維持することを重視してマップを作成します。 こちらは人間の感覚や心理的な距離を扱う社会科学やマーケティングの分野で広く活用されています。

種類扱うデータ重視すること主な利用シーン
計量MDS間隔尺度・比例尺度のデータ(例:都市間の距離、価格)数値的な距離関係の正確な再現物理的な距離の可視化、地理学
非計量MDS順序尺度のデータ(例:類似性の順位、好き嫌いの評価)大小関係(順序)の維持マーケティングのポジショニング分析、心理学の知覚マップ

どちらの手法を使うかは、分析したいデータの性質によって決めることが重要です。

MDSはどんな場面で使われる?活用事例

MDSは、様々な分野で複雑な関係性を可視化するために利用されています。

  • マーケティング:商品のポジショニング分析
    消費者アンケートで複数の競合商品について「AとBはどのくらい似ていますか?」と質問し、その結果をMDSで分析します。これにより、各商品が市場でどのように認識されているかを示すポジショニングマップを作成できます。 例えば、自社商品がどの競合と近く、どの市場が手薄(ブルーオーシャン)なのかを視覚的に把握し、新商品開発やマーケティング戦略の立案に役立てます。
  • 心理学:知覚マップの作成
    人々が特定の概念(例えば、様々な感情や性格特性)をどのように心の中で整理しているかを調べるために使われます。被験者に複数の単語のペアを見せ、その類似度を評価してもらい、MDSで分析することで、心理的な距離感を知覚マップとして可視化します。
  • 地理学・交通:時間地図の作成
    2016年に、Pythonのライブラリを使って東京都内の主要な公園間の移動時間をデータとし、MDSで「時間地図」を作成した事例があります。 これは物理的な距離ではなく、移動にかかる時間という尺度で都市の構造を可視化した面白い例です。

Python (scikit-learn) による簡単な実装例

MDSは、Pythonの機械学習ライブラリであるscikit-learnを使うと簡単に実行できます。 ここでは、いくつかの日本の都市間の架空の非類似度(距離)データを使って、MDSで2次元マップ上に配置する例を紹介します。

まず、必要なライブラリをインポートし、都市間の非類似度(距離)を行列で定義します。この行列は、行と列がそれぞれ都市に対応し、値が大きいほど「似ていない(遠い)」ことを示します。

import numpy as np
from sklearn.manifold import MDS
import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語表示のため
# 都市名のリスト
cities = ['東京', '大阪', '名古屋', '福岡', '札幌']
# 都市間の非類似度(距離)行列 (値が大きいほど遠い)
# このデータは架空のものです
dissimilarity_matrix = np.array([ , # 東京から各都市へ , # 大阪から各都市へ , # 名古屋から各都市へ , # 福岡から各都市へ # 札幌から各都市へ
])
# MDSモデルの作成と実行
# n_components=2 : 2次元空間に配置
# dissimilarity='precomputed' : 入力が計算済みの非類似度行列であることを指定
# random_state : 結果を固定するためのシード値
mds = MDS(n_components=2, dissimilarity='precomputed', random_state=0)
# 非類似度行列を学習させ、2次元座標に変換
pos = mds.fit_transform(dissimilarity_matrix)
# 結果のプロット
plt.figure(figsize=(8, 6))
plt.scatter(pos[:, 0], pos[:, 1], marker='o')
# 各点に都市名を付ける
for label, x, y in zip(cities, pos[:, 0], pos[:, 1]): plt.text(x, y, label, size=12, ha='center', va='bottom')
plt.title('MDSによる都市のポジショニングマップ')
plt.xlabel('第1次元')
plt.ylabel('第2次元')
plt.grid(True)
plt.show() 

このコードを実行すると、元の非類似度行列の関係性を保持するように、5つの都市が2次元のグラフ上にプロットされます。例えば、「東京」「大阪」「名古屋」は互いに近くに配置され、「札幌」や「福岡」はそれらの都市から離れて配置されるといった結果が得られ、データの関係性を直感的に理解することができます。

まとめ

多次元尺度構成法(MDS)は、一見すると複雑に見えるデータ間の関係性を、人間が直感的に理解できる「地図」の形に変換してくれる強力な分析手法です。 データの種類に応じて計量MDSと非計量MDSを使い分けることで、マーケティングから学術研究まで、幅広い分野でデータに隠されたインサイトを発見する手助けとなります。細かい数値を比較するのではなく、全体の俯瞰的な関係性を捉えたいときに特に有効です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です