距離
機械学習アルゴリズム(k-NN、k-means、推薦システム、検索エンジンなど)では、データ点(ベクトル)間の類似性や乖離度を定量化するための距離尺度(Distance Metric)を使用します。
距離尺度はデータ特性(高次元性・疎密・スケール)やドメインに応じて選択します。
主な距離尺度の分類と参照
| 距離尺度 | 主な用途・特徴 | 参照ページ |
|---|---|---|
| ユークリッド距離 ($L_2$) | 低次元〜中次元の連続値データ。直線距離 | ノルム(L2) |
| マンハッタン距離 ($L_1$) | 格子状データ、高次元・ノイズ耐性が必要な場合 | ノルム(L1) |
| コサイン距離 | テキスト(TF-IDF 等の疎ベクトル)や Embedding(密ベクトル)など、高次元ベクトルの向きの近さを測る場合。ベクトルの長さ(ノルム)を無視する | コサイン類似度 |
| Lp距離 | ユークリッド距離・マンハッタン距離を一般化した距離。$p$ で各次元の差の扱い方を調整する | ノルム |
| マハラノビス距離 | データの分布(スケール・相関)を考慮した距離。外れ値検知や判別分析 | 多変量正規分布 |
コサイン距離
コサイン類似度 $S$ とコサイン距離 $D$ の関係は以下の通りです。
\[D(\boldsymbol{x}, \boldsymbol{y}) = 1 - \text{CosineSimilarity}(\boldsymbol{x}, \boldsymbol{y}) = 1 - \frac{\langle{\boldsymbol{x}}, {\boldsymbol{y}}\rangle}{\lVert \boldsymbol{x} \rVert_2 \lVert \boldsymbol{y} \rVert_2}\]- 範囲: $0 \le D \le 2$ (要素が非負のデータセットでは $0 \le D \le 1$)
- 向きが全く同じベクトル同士の距離は $0$、真逆の向きの距離は $2$ となります。
- 詳細な導出や行列積での解釈については コサイン類似度 を参照してください。
Lp距離(Lpノルムに基づく距離)
ユークリッド距離($L_2$)とマンハッタン距離($L_1$)を一般化した距離尺度です。2点 $\boldsymbol{x}, \boldsymbol{y} \in \mathbb{R}^n$ に対して、次式で定義されます。
\[L_p(\boldsymbol{x}, \boldsymbol{y}) = \left( \sum_{i=1}^{n} |x_i - y_i|^p \right)^{\frac{1}{p}}\]$p$ の値を変えることで、以下のようにさまざまな距離尺度を統一的に表現できます。
| $p$ の値 | 名称 | 式 |
|---|---|---|
| $p=1$ | マンハッタン距離($L_1$) | $\sum_i \lvert x_i - y_i \rvert$ |
| $p=2$ | ユークリッド距離($L_2$) | $\sqrt{\sum_i (x_i - y_i)^2}$ |
| $p \to \infty$ | チェビシェフ距離($L_\infty$) | $\max_i \lvert x_i - y_i \rvert$(各次元の差の最大値) |
直感的なイメージ
- $p$ が小さいほど、各次元の差を「均等に」足し合わせる方向に近づく($L_1$)
- $p$ が大きいほど、最も差が大きい次元の影響が支配的になっていく($L_\infty$ では最大値だけで決まる)
- ユークリッド距離・マンハッタン距離は、この連続的なパラメータ $p$ の両端にある特殊ケースとして位置づけられる
マハラノビス距離(Mahalanobis Distance)
ユークリッド距離が「各次元を対等に、かつ独立に」扱うのに対し、マハラノビス距離はデータの分布(共分散)を考慮して距離を測る尺度です。
平均ベクトル $\boldsymbol{\mu}$、共分散行列 $\Sigma$ を持つ分布に対して、データ点 $\boldsymbol{x}$ との距離は次式で定義されます。
$\Sigma^{-1}$ は共分散行列の逆行列で精度行列と呼ばれることもあります。
\[D_M(\boldsymbol{x}) = \sqrt{(\boldsymbol{x} - \boldsymbol{\mu})^\top \Sigma^{-1} (\boldsymbol{x} - \boldsymbol{\mu})}\]$\boldsymbol{x}-\boldsymbol{\mu}$ を列ベクトル($n\times1$)とすると、$(\boldsymbol{x}-\boldsymbol{\mu})^\top$ は行ベクトル($1\times n$)になります。
\[\underbrace{(\boldsymbol{x}-\boldsymbol{\mu})^\top}_{1\times n}\ \underbrace{\Sigma^{-1}}_{n\times n}\ \underbrace{(\boldsymbol{x}-\boldsymbol{\mu})}_{n\times1} = \text{スカラー}\]同様に 2 点間の距離は以下の式で定義されます。
\[D_M(\boldsymbol{x}, \boldsymbol{y}) = \sqrt{(\boldsymbol{x} - \boldsymbol{y})^\top \Sigma^{-1} (\boldsymbol{x} - \boldsymbol{y})}\]なぜ共分散行列 $\Sigma^{-1}$ が必要か
- 各特徴量のスケール(単位・分散)が異なる場合、ユークリッド距離はスケールの大きい特徴量に引きずられてしまう
- 特徴量同士に相関がある場合、ユークリッド距離はその相関構造を無視してしまう
- $\Sigma^{-1}$ を挟むことで、分散で正規化(スケールの違いを吸収)し、かつ相関を取り除いたうえで距離を測ることができる
- 共分散行列が単位行列 $I$(=すべての特徴量が無相関かつ分散1に標準化されている)のとき、マハラノビス距離はユークリッド距離と一致する
多変量正規分布 の確率密度関数の指数部分 $(\boldsymbol{x}-\boldsymbol{\mu})^\top \Sigma^{-1} (\boldsymbol{x}-\boldsymbol{\mu})$ がまさにマハラノビス距離の2乗にあたり、分布の「等高線(等確率密度の線)」はマハラノビス距離が等しい点の集合(楕円)になります。
距離尺度の利用場面
1. ユークリッド距離 vs マンハッタン距離
次元の呪い(Curse of Dimensionality)
次元数 $d$ が非常に大きくなると、空間内の任意の 2 点間のユークリッド距離の差が相対的に小さくなり、距離の分別力が低下します。高次元空間では、相対的にマンハッタン距離($L_1$)の方が識別力を保ちやすい傾向があります
外れ値への耐性:$L_1$ と $L_2$ の違い
$L_2$ 距離は各次元の差を 2 乗するため、外れ値の影響を過剰に受けます。
外れ値(ノイズ)が多いデータセットには $L_1$ 距離が適しています。
外れ値の意味
ここでいう外れ値は、ベクトル全体がではなく、ある次元だけ値が極端にずれている状態を指します。
$a_i = |x_i - y_i|$ とおくと、外れ値とは特定の $i$ で $a_i$ だけが大きい状況です。
総和の中での寄与
- $L_1 = \sum_i a_i$:各次元の寄与は $a_i$
- $L_2 = \sqrt{\sum_i a_i^2}$:根を取る前の総和での各次元の寄与は $a_i^2$
根を取るのは総和した後なので、各次元の重みづけは元に戻りません。
寄与の比
\[\frac{a_i^2}{a_i} = a_i\]- $a_i > 1$:2 乗で拡大される(大きい差ほど強く強調される)
- $a_i < 1$:2 乗で縮小される(小さい差はさらに目立たなくなる)
- $a_i = 1$:倍率 1 でちょうど差が消える(特殊なケース)
つまり、$a_i$ が大きい次元ほど相対的に強調され、小さい次元ほど抑えられるという重みづけの差が、$a_i$ の値によらず常に生じます。$a_i = 1$ のときに差が見えないのは、倍率がたまたま 1 になるためです。
具体例($a_i \neq 1$)
| 各次元の差 | $L_1$ | $L_2$ | |
|---|---|---|---|
| A(均等) | (2, 2, 2, 2) | 8 | $\sqrt{16}=4$ |
| B(1次元だけ大) | (8, 0, 0, 0) | 8 | $\sqrt{64}=8$ |
- $L_1$:A と B は同じ距離(8)
- $L_2$:B は A の 2 倍
1 つの次元の大きなズレが $L_2$ では距離全体を大きく押し上げるため、外れ値の影響を受けやすくなります。
スケールを変えても結論は同じ
すべての差を 0.5 倍にして (1, 1, 1, 1) と (4, 0, 0, 0) にしても、$L_1$ は等しく、$L_2$ は B が A の 2 倍のままです。距離全体が定数倍されるだけで、A と B の比は変わりません。
2. ユークリッド距離 vs コサイン距離
- 文書・Embedding 表現:自然言語処理(NLP)や推薦システムのベクトル(TF-IDF や Word2Vec/OpenAI Embedding など)では、どのような単語・特徴が含まれるか(ベクトルの方向)が重要になるため、コサイン距離(またはコサイン類似度)が使用されます
- 正規化(L2 Normalize)と高速化: ベクトル $\boldsymbol{x}, \boldsymbol{y}$ がともに $L_2$ 正規化($\lVert\boldsymbol{x}\rVert_2 = 1, \lVert\boldsymbol{y}\rVert_2 = 1$)されている場合、ユークリッド距離の 2 乗とコサイン類似度には以下の関係が成り立ちます
このため、あらかじめベクトルを正規化しておけば、コサイン距離の計算を単純な内積(ドット積)の計算に置き換えることができ、大規模ベクトル検索(FAISS など)で大幅な高速化が図れます。
3. ユークリッド距離 vs マハラノビス距離
主な用途
- 外れ値検知:分布の形(相関・分散の偏り)を考慮した上で「どれだけ異常か」を測れるため、単純なユークリッド距離より外れ値検知に適している
- 判別分析:複数クラスのデータがある場合に、各クラスの分布(平均・共分散)からの距離でどのクラスに近いかを判定する
ユークリッド距離との比較
| ユークリッド距離 | マハラノビス距離 | |
|---|---|---|
| スケールの違い | 考慮しない | 考慮する(分散で正規化) |
| 特徴量間の相関 | 考慮しない | 考慮する(共分散行列で補正) |
| 必要な情報 | 2点の座標のみ | 2点の座標 + データ分布の共分散行列 |
| 計算コスト | 低い | 共分散行列の逆行列計算が必要でやや高い |