📐
クラスタリングにおける距離・類似度指標の選び方
クラスタリング分析において、データ間の距離や類似性を測ることは、クラスタを形成し、データを意味のあるグループに分割するための重要なステップです。この記事では、クラスタリングで用いられる代表的な距離・類似度指標を解説し、それぞれの特徴や使い分けについて紹介します。
1. 距離と類似度:基本的な考え方
まず、距離と類似度という概念について整理します。
- 距離: データ間の「離れ具合」を表す指標です。値が大きいほど、データ同士が離れていることを意味します。
- 類似度: データ間の「似ている度合い」を表す指標です。値が大きいほど、データ同士が似ていることを意味します。
一般的に、距離指標と類似度指標は相互に変換可能です。例えば、距離の逆数をとれば類似度として扱えますし、距離指標を最大値で正規化して1から引くことで類似度として扱うこともできます。
2. 距離・類似度指標の種類と特徴
ここからは、代表的な距離・類似度指標を、その適用場面を踏まえながら紹介していきます。
2.1. 数値データ向け指標
まず、数値データに対して利用できる指標を解説します。
2.1.1. ユークリッド距離(Euclidean Distance)
-
概要: 2点間の直線距離を測る最も基本的な距離指標
\text{distance} = \sqrt{\sum (A_i - B_i)^2} -
特徴:
- 直感的で分かりやすい: 日常的な距離感覚と一致するため、理解しやすい
- 次元間の差を考慮: 各次元の差を二乗して合計するため、次元間の差異を均等に反映
-
注意点:
- 次元の呪い: 次元数が大きくなるにつれて距離が大きくなり、クラスタ間の区別が曖昧になる場合がある
- スケールに敏感: データのスケール(単位)が異なる場合、結果に大きな影響を与える可能性がある
-
ユースケース:
- 顧客属性などの数値データのクラスタリング
- 次元数が少なく、スケールが揃っているデータ
- 補足: スケールが異なる場合は、事前に標準化や正規化などのスケーリング処理を施す必要がある
2.1.2. マンハッタン距離(Manhattan Distance)
-
概要: 各次元の差の絶対値の合計で距離を測る
\text{distance} = \sum |A_i - B_i| -
特徴:
- 外れ値にロバスト: 外れ値の影響を受けにくい
- 高次元データに安定: ユークリッド距離よりも高次元データに対して安定した結果が得られやすい
-
注意点:
- スケールに敏感: データのスケールが異なる場合、結果に大きな影響を与える可能性がある
-
ユースケース:
- 都市部の移動距離(グリッド状の経路)
- 高次元データの解析(クラスタリングの一部)
- 補足: ユークリッド距離と同様に、スケールが異なる場合は、スケーリング処理が必要となる
2.1.3. マハラノビス距離(Mahalanobis Distance)
-
概要: データの分散や共分散を考慮した距離
\text{distance} = \sqrt{(\mathbf{x} - \boldsymbol{\mu})^\top \mathbf{S}^{-1} (\mathbf{x} - \boldsymbol{\mu})}
( : 平均ベクトル、\boldsymbol{\mu} : 共分散行列)\mathbf{S} -
特徴:
- 相関を考慮: データ間の相関関係を考慮した距離計算が可能
- 外れ値検出に有効: 分布の中心からの離れ具合を評価するため、外れ値検出にも有効
-
注意点:
- 正規分布を仮定: データの分布が正規分布に従わない場合、有効性が低くなる
- 計算コストが高い: 共分散行列の計算が必要なため、計算コストが高い
-
ユースケース:
- 異常検知、外れ値検出
- 多変量データの解析
- 補足: 共分散行列の計算が必要なため、データサイズが大きい場合は計算コストに注意が必要
2.2. ベクトルデータ向け指標
次に、ベクトルデータに用いられる指標を解説します。
2.2.1. コサイン類似度(Cosine Similarity)
-
概要: 2つのベクトル間の角度のコサイン値を計算し、類似性を評価する
\text{similarity} = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \|\mathbf{B}\|} -
特徴:
- 大きさに不変: ベクトルの大きさではなく、方向性のみに着目する
- 疎なデータに強い: ベクトルが疎(0が多い)な場合でも有効に働く
-
注意点:
- 量的な差を考慮しない: ベクトル間の量的な差を考慮しないため、データ量に差がある場合は注意が必要
-
ユースケース:
- テキストデータの類似性比較(文書間の類似度計算)
- レコメンドシステム(ユーザーの好みベースの推薦)
- 補足: テキストデータでは、TF-IDFなどの重み付けと組み合わせて使われることが多い
2.3. 文字列データ向け指標
次に、文字列データに用いられる指標を解説します。
2.3.1. 編集距離(Edit Distance, Levenshtein Distance: レーベンシュタイン距離)
- 概要: 2つの文字列を一致させるために必要な編集操作(挿入、削除、置換)の最小回数を測る距離指標
-
特徴:
- 文字列の差異を捉える: タイポやスペルミスを考慮できる
- 文字列比較に特化: 部分的な一致や並び順の違いを捉えることができる
-
注意点:
- 長い文字列では計算コストが高い: 文字列長が長くなると、計算コストが増大する
-
ユースケース:
- 自然言語処理(文字列の類似度計算、検索クエリ補正)
- データクレンジング(重複データの検出)
- 補足: 編集距離の計算には動的計画法が用いられる
2.4. カテゴリカルデータ・集合データ向け指標
最後に、カテゴリカルデータや集合データに用いられる指標を解説します。
2.4.1. ジャッカード距離(Jaccard Distance)
-
概要: 2つの集合間の類似性を測る
\text{distance} = 1 - \frac{|A \cap B|}{|A \cup B|} -
特徴:
- 重複度に着目: 集合間の重複度(共通要素の割合)を評価する
- カテゴリカルデータに有効: カテゴリカルデータの類似度を測るのに適している
-
注意点:
- 部分的な一致を考慮しない: 集合の要素の並び順や部分的な一致は考慮しない
-
ユースケース:
- 文書やアイテムの重複度測定(重複データ検出、類似アイテム分析)
- SNSにおけるユーザーの興味の類似性やコンテンツ推薦
- 補足: ジャッカード距離は、ジャッカード係数(類似度)を1から引いて計算する
3. 指標の選び方と使い分け
ここまで紹介した指標をまとめると、以下のようになります。
距離/類似度 | データタイプ | 概要 | 強み | 弱点 | 主なユースケース |
---|---|---|---|---|---|
ユークリッド距離 | 数値 | 直線距離 | シンプル、次元間の差異を正確に反映 | 次元数やスケールに敏感 | 数値データのクラスタリング |
マンハッタン距離 | 数値 | 次元ごとの差の絶対値の合計 | 外れ値にロバスト | スケール依存 | 都市距離、疎なデータの解析 |
マハラノビス距離 | 数値 | 分布と共分散を考慮した距離 | 分布を考慮、外れ値検出に適する | 正規分布でないと効果が薄い | 外れ値検出、異常検知 |
コサイン類似度 | ベクトル | ベクトル間の角度 | スケールの影響を受けない | 量的な差を無視 | テキスト解析、レコメンドシステム |
編集距離 | 文字列 | 文字列間の最小編集操作数 | タイポ対応、文字列比較に特化 | 長い文字列で計算コストが高い | 自然言語処理、データクレンジング |
ジャッカード距離 | カテゴリ/集合 | 集合間の類似性 | カテゴリデータや重複度の評価に最適 | 部分一致を無視 | 文書重複検出、SNSのユーザー興味の類似性 |
指標選択の指針
-
数値データ:
- 次元数が少なくスケールが揃っている場合:ユークリッド距離
- 外れ値の影響を避けたい場合:マンハッタン距離
- データ間の相関を考慮したい場合:マハラノビス距離
-
ベクトルデータ:
- ベクトルの大きさよりも方向性が重要な場合:コサイン類似度
-
文字列データ:
- タイポや部分一致を考慮したい場合:編集距離
-
カテゴリ/集合データ:
- 集合間の類似性を評価したい場合:ジャッカード距離
このように、データの種類や特徴、分析目的に応じて適切な距離・類似度指標を選ぶことが重要です。
4. まとめ
クラスタリングにおける距離・類似度指標は、データの性質や分析の目的に応じて使い分けることが重要です。それぞれの指標の特徴を理解し、目的に合わせた適切な指標を選択できるのがポイントですね。
Discussion