【こさいんるいじど】

コサイン類似度 とは?

最終更新:
💡 長さよりも、矢印がどちらを向くかを見る

ゼロではない2つのベクトルについて、向きの近さをコサイン値で表す指標。内積を両方の長さで割って求め、文書を数値で表したベクトルの比較などに使います。

📌 このページのポイント
コサイン類似度:矢印の向きを比べる同じ向き1直角0逆向き−1ゼロでないベクトル同士の比較数値の近さと、文章の正しさは別!
向きと値の関係を示す図。矢印はデータのベクトルで、処理の流れや因果関係ではありません。
ひよこ ひよこ
どうして矢印で「似ている」が分かるの?
ペンギン先生 ペンギン先生
データをベクトルという数値の並びで表し、その向きを比べるんだ。ゼロでないベクトルなら、同じ向きは1、直角は0、反対向きは-1になる。ただし0は計算上の直交であって、文章の意味が必ず無関係という判定ではないよ。
ひよこ ひよこ
長さが違っても同じ値になる?
ペンギン先生 ペンギン先生
同じ向きなら、長さが違っても1になるよ。例えば[1, 2]と[2, 4]は同じ向き。式は、内積を両方の長さの積で割ったものだね。正の倍率による長さの違いをならして比べられるんだ。
ひよこ ひよこ
文書検索にも使うの?
ペンギン先生 ペンギン先生
文書と質問を同じ埋め込みモデルでベクトルへ変換し、近いものを探す用途があるよ。ただしどんな情報を数値にするかによって結果は変わる。同じ話題なら必ず高い値になるわけでも、値が高ければ文書が正しいわけでもないんだ。
ひよこ ひよこ
ゼロが並ぶベクトルなら?
ペンギン先生 ペンギン先生
長さが0なので、そのまま割り算できない。scikit-learnにはゼロベクトルを含む入力で0を返す例があるけど、これは実装の扱いとして確認しよう。長さ1へ正規化したベクトル同士なら内積と一致するけど、どのツールでも条件なしで同じと考えないことが大切だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コサイン類似度」って出てきたら「数値の矢印が、どれくらい同じ方向を向くかの指標」と思えばだいたいOK!
📖 おまけ:英語の意味
「Cosine Similarity」 = コサイン値による類似度
💬 Cosineは三角関数のコサイン。ゼロではないベクトルのなす角について、そのコサイン値を使います。

参考資料

← 用語集にもどる