お気持ち練習帳

気持ちの整理や数学等の書きたいことを書きます

コサイン距離は距離なのか?

機械学習の勉強をしているときに、「コサイン距離」という概念が出てきました。 この距離は、ベクトル同士の近さをコサイン( \cos )を用いて測るものです。 レコメンドの一種である協調フィルタリングに、よく使われているみたいです。

数学をやってた身としては、次のことが気になります。

疑問:コサイン距離は、距離なのか?

距離って書いてるのだから、距離でしょと思うかもしれませんが、ここでの距離は数学での距離という概念を指します。

詳細に入る前に、上記の疑問の答えだけ書いておきます。

答え:コサイン距離は、距離でない。

コサイン距離の定義 

 n 次元ユークリッド空間  \mathbb{R} ^ n 上に、コサイン距離を定義します。

まずは、 x = (x _ 1 , \ldots , x _ n), y = (y _ 1 , \ldots , y _ n) \in \mathbb{R} ^ n に対して、コサイン類似度  S_ c (x, y) を次で定めます:

 
\begin{aligned}
S _ c (x,y) := \frac{x \cdot y}{ \| x \| \| y \| } = \frac{\sum_{k = 1}^{n} x _ k y _ k}{\sqrt{ \sum_{k = 1}^{n} x _ k ^ 2} \sqrt{ \sum_{k = 1}^{n} y _ k ^ 2}}.
\end{aligned}

コサインは三角関数 \cos を意味しており、ベクトル  x,y の成す角を  \theta とおいたとき、 S _ c (x,y) = \cos \theta が成り立ちます。 この類似度を用いて、コサイン距離を定めます。

 
\begin{aligned}
D _ c (x,y) := 1 - S _ c (x, y).
\end{aligned}

距離の定義

次に、数学用語の距離の定義を述べます。

定義. 集合  X写像  d : X \times X \to \mathbb{R} に対して、次の4条件を満たすとき、 (X, d)距離空間とよび、写像  d X 上の距離とよびます:任意の  x,y,z \in X に対して、
1.  d(x,y) \geq 0
2.  d(x,y) = 0 \Leftrightarrow x = y
3.  d(x,y) = d(y,x)
4.  d(x,z) \leq d(x,y) + d(y,z)

ここで、距離空間の例を2つ挙げます。

例1.(マンハッタン距離)  x = (x _ 1 , \ldots , x _ n), y = (y _ 1 , \ldots , y _ n) \in \mathbb{R} ^ n に対して、関数  d _ 1 : \mathbb{R} ^ n \times \mathbb{R} ^ n \to \mathbb{R} を次のように定める:

 
\begin{aligned}
d _ 1 (x,y) := \sum_{k = 1}^{n} | x _ k - y _ k |
\end{aligned}

例2.(ユークリッド距離)  x = (x _ 1 , \ldots , x _ n), y = (y _ 1 , \ldots , y _ n) \in \mathbb{R} ^ n に対して、関数  d _ 2 : \mathbb{R} ^ n \times \mathbb{R} ^ n \to \mathbb{R} を次のように定める:

 
\begin{aligned}
d _ 2 (x,y) := \sqrt{ \sum_{k = 1}^{n} ( x _ k - y _ k ) ^ 2}
\end{aligned}

ここで距離と言っているものは、数学用語の距離になっています。

コサイン距離は距離でない

最後に、コサイン距離が距離出ないことを示したいと思います。 4つの条件の内、2と4の条件に反例があります。

2の反例.  x = (1,1), y = (2, 2) \in \mathbb{R} ^ 2 があります。

 
\begin{aligned}
D _ c (x,y) = 1 - \frac{1 \times 2 + 1 \times 2}{\sqrt{1 ^ 2 + 1 ^ 2} \sqrt{2 ^ 2 + 2 ^ 2}} = 1 - 1 = 0
\end{aligned}

となっていますが、 x \neq y です。 コサイン距離は、 x,y の角度だけ見ているので、長さには興味がありません。 そのため、2つのベクトルの向いている方向が全く同じならば、長さが異なっていても距離は  0 となってしまいます。

4の反例.  x = (1,0), y = (1, 1), z = (0,1) \in \mathbb{R} ^ 2 があります。

 
\begin{aligned}
D _ c (x,y) +  D _ c (y,z) = 2 - \sqrt{2} < 1 = D _ c (x,z)
\end{aligned}

となるため、4の条件が成り立ちません。

従って、コサイン距離は距離とならないことがわかりました。 ちなみに、1と3の条件は成立します。 難しくないので、お暇な方は考えて見てください。