オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【機械学習】コサイン類似度 / Cosine Similarity

この記事の読者

コサイン類似度 / Cosine Similarity」について知りたい.



キーワード・知ってると理解がしやすい

  • ベクトル
  • コサイン

Index

コサイン類似度 / Cosine Similarity とは

ベクトル間の類似度を測定する手法.

また、機械学習でデータ間の類似度の測定に求められることが多い.

ベクトル間の角度を利用することで、ベクトル間の類似度を計算する.

具体的な計算手順としては、 以下.

  • 2 つのベクトル  \vec{a}, \vec{b} のなす角を  \theta とする.
  • その  \theta のコサインの値  cos \theta を計算し、これを類似度として利用する.

2 つのベクトルのなす角のコサイン値は以下ように算出する.

 cos \theta = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}| |\vec{b}|}



 |\vec{a}| はベクトル  \vec{a} の大きさ、 |\vec{b}| はベクトル  \vec{b} の大きさなので、 2 つのベクトルの単位ベクトルの内積を計算してことになる.

なぜ、コサインが類似度として利用できるのか

コサインは角度の変化  0 \leq \theta \leq 360 に対して、以下のように変化する.



つまり、なす角  \theta の値が 0 ( or  2 \pi) に近いと 1 に近くなり、  \pi に 近いと -1 に近くなる性質を利用して、 2 つのベクトルが似ている (= なす角が0に近い、近い、同じ方向を向いている)ときは、1 に近き、 似ていない(= なす角が  \pi に近い、遠い、逆の方向を向いている)ときは、 -1 に近くような値が算出することができる.

距離と類似度の計測方法

ベクトル間の距離を測定する方法はいくつかある.

  1. ユークリッド距離
  2. 標準化(平均)ユークリッド距離
  3. マハラノビス距離
  4. マンハッタン距離(市街地距離)
  5. チェビシェフ距離
  6. ミンコフスキー距離

また、ベクトル間の類似度を測定する方法もいくかある.

  1. コサイン類似度
  2. ピアソンの相関係数

参考