📐

クラスタリングにおける距離・類似度指標の選び方

2025/01/27に公開

クラスタリング分析において、データ間の距離や類似性を測ることは、クラスタを形成し、データを意味のあるグループに分割するための重要なステップです。この記事では、クラスタリングで用いられる代表的な距離・類似度指標を解説し、それぞれの特徴や使い分けについて紹介します。

https://zenn.dev/channnnsm/articles/9876aea1156f5c

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