コサイン類似度とは?
コサイン類似度は、2つのベクトルがどれだけ同じ方向を向いているかを表す指標です。ベクトル間の角度のコサインそのもので、値は −1(正反対)から 0(直交)を経て 1(完全に同じ方向)までの範囲をとります。ベクトルの大きさ(長さ)ではなく向きだけで決まるため、機械学習やテキストマイニング、レコメンドシステムなどで、文書・埋め込みベクトル(embedding)・特徴量ベクトルを比較する用途に広く使われています。
このツールの使い方
ベクトルAとベクトルBの x・y、そして必要に応じて z の成分を入力します。2次元で計算したい場合は z の欄を空欄または 0 のままにしてください。入力すると、コサイン類似度に加えて、内積、各ベクトルの大きさ、そしてベクトル間の角度を度(°)とラジアンの両方で表示します。
計算式の解説
内積は、対応する成分どうしの積の合計です:\(a\cdot b = a_x b_x + a_y b_y + a_z b_z\)。ベクトルの大きさは、各成分を2乗して足し合わせた値の平方根で求めます:\(|a| = \sqrt{a_x^{2} + a_y^{2} + a_z^{2}}\)。内積を2つのベクトルの大きさの積で割ると、結果が −1〜1 の範囲に正規化され、これが角度 θ のコサインになります。さらに逆コサイン(arccos)をとれば、角度 θ そのものを求められます。
$$\cos\theta = \frac{\vec{A}\cdot\vec{B}}{\lVert\vec{A}\rVert\,\lVert\vec{B}\rVert}$$
計算例
A = (1, 2, 3)、B = (4, 5, 6) で考えてみましょう。内積は \(1\cdot 4 + 2\cdot 5 + 3\cdot 6 = 4 + 10 + 18 = 32\) です。大きさは \(|A| = \sqrt{1+4+9} = \sqrt{14} \approx 3.7417\)、\(|B| = \sqrt{16+25+36} = \sqrt{77} \approx 8.7750\) となります。したがって \(\cos\theta = 32 / (3.7417 \times 8.7750) \approx 0.9746\) となり、これは約 12.93° の角度に相当します。
よくある質問
コサイン類似度が 0 のときは何を意味しますか? 2つのベクトルが直交している(90°の角度をなす)状態で、向きの類似性がまったくないことを示します。
結果がマイナスになることはありますか? あります。負の値は、2つのベクトルがおおむね反対方向を向いていることを意味し、−1 はちょうど正反対(反平行)であることを表します。
ユークリッド距離とは何が違うのですか? コサイン類似度はベクトルの大きさを無視して向きだけを比較するのに対し、ユークリッド距離はベクトルの先端どうしの直線的な隔たり(距離)を測ります。