コンテンツへスキップ
uencoder

Cosine Similarity

コサイン類似度は 2 つのベクトル間の角度のコサインを測り、ベクトルの長さを無視する。テキストベクトルの類似度計算に広く使われる。

目的

大きさではなく方向を比較するため、長い文書と短い文書を公平に比較できる。

メカニズム

sim(A,B) = (A·B) / (|A|×|B|) = Σ(A_i×B_i) / (sqrt(ΣA_i²)×sqrt(ΣB_i²))。出力は -1 から 1 の範囲(非負のテキストベクトルでは 0 から 1)。1 は同一方向、0 は直交(無関係)を意味する。

ユースケース

  • 文書のベクトル類似検索
  • レコメンドのアイテム類似度
  • 単語ベクトルのセマンティック類似度
  • クラスタリングの距離指標

例

  • 入力
    [1,0,1] vs [1,1,1]
    Output
    0.816

    Angle of about 35°

よくあるエラー

Unnormalized vectors cause computation overflow
Apply L2 normalization in advance or use a numerically stable implementation

関連用語

関連ツール

References