コサイン類似度とは

こさいんるいじどcosine similarity別名 cos類似度

1行定義

コサイン類似度とは、2つのベクトルがなす角度のコサインの値で、ベクトルの向きがどれだけ近いかを表す指標のことです。

くわしく

コサイン類似度は、2つのベクトル(数値の並び)がどれだけ同じ方向を向いているかを表す指標です。文章や画像を数値のベクトルに直したあと、「似ているかどうか」を測るのによく使われます。

計算のしかた

2つのベクトルをa、bとすると、cos θ = (a・b) / (|a| × |b|)で求めます。a・bは内積(成分どうしの積の和)、|a|はベクトルの長さ、θは2つのベクトルがなす角度です。

たとえばa = (1, 0)、b = (1, 1)なら、内積は1、長さの積は1 × √2です。コサイン類似度は1 / √2で、約0.71になります。角度は45度です。

値の意味

  • 1:同じ向き(角度0度)
  • 0:直交している(角度90度)
  • −1:正反対の向き(角度180度)

値は−1から1の範囲です。単語の出現回数のように成分がすべて0以上なら、0から1の範囲に収まります。

長さを無視する理由

コサイン類似度は、ベクトルの長さで割るため、向きだけを比べます。たとえば文書を単語の出現回数で表すと、長い文書ほどベクトルが長くなります。ユークリッド距離で比べると、話題が同じでも、長さの違いだけで「遠い」と判定されがちです。コサイン類似度なら、単語の使われ方の比率が同じであれば、長さが違っても高い値になります。

逆に、大きさそのものに意味がある場合(購入金額の規模など)は、ユークリッド距離のほうが適しています。

使われる場面

word2vecなどで学習した単語ベクトルの近さを測るのに使われます。文書検索や推薦、RAG(外部の文書を検索して生成AIの回答に使う手法)での類似文書の検索でも使われます。ベクトルの長さを1にそろえておくと、コサイン類似度は内積と一致し、計算が簡単になります。

覚え方

「長さは無視、向きだけを見る」と覚えます。

G検定での出題

内積をベクトルの長さの積で割る計算、−1から1の値の意味、長さを無視して向きだけを比べる点、ユークリッド距離との使い分け、文書や単語ベクトルの類似検索での利用が問われます。

混同しやすい用語

用語意味
ユークリッド距離各座標の差を2乗して足し合わせ、その平方根をとって求める、2つの点を結ぶ直線の長さ

◯×チェック

  1. ベクトル(1, 2)と(2, 4)のコサイン類似度は1である。

    答えを見る

    答え ◯ 正しい

    (2, 4)は(1, 2)を2倍したもので、向きが同じです。内積10を長さの積√5 × √20 = 10で割ると1になります。

  2. コサイン類似度が0のとき、2つのベクトルは同じ向きを向いている。

    答えを見る

    答え × 誤り

    0は、2つのベクトルが直交している(90度の角度をなす)ことを表します。同じ向きなら1、正反対の向きなら−1です。

  3. 単語の出現回数を並べた文書ベクトルどうしのコサイン類似度は、負の値にならない。

    答えを見る

    答え ◯ 正しい

    出現回数はすべて0以上なので、内積も0以上になります。そのため、値は0から1の範囲に収まります。

練習問題

コサイン類似度の問題(4問)
  1. 文書を活用するNLPタスク
  2. 単語ベクトルの加減算による類推
  3. 同義語を含む文の類似度計算
  4. 距離・類似度指標の使い分け

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術37

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習