MCPで接続 →

計算を入力してください

公式

広告

結果

コサイン類似度
0.974632
範囲 −1 〜 1
内積(A·B) 32
ノルム |A| 3.741657
ノルム |B| 8.774964
ベクトル間の角度 12.93°
使用した次元数 3

コサイン類似度とは?

コサイン類似度は、2つのベクトルの「大きさ」ではなく「向き(なす角)」に注目して、どれだけ似ているかを測る指標です。値は −1 から 1 の範囲を取り、1 なら2つのベクトルが完全に同じ方向を向いていること、0 なら直交している(無関係である)こと、−1 なら正反対の方向を向いていることを意味します。テキストマイニング、レコメンドシステム、情報検索、機械学習などの分野で、文書・埋め込みベクトル(embedding)・特徴量ベクトルの類似度を比較する際に広く使われています。

原点を共有する2つのベクトルとその間の角度シータ
コサイン類似度は、大きさを無視して2つのベクトル間の角度θを測定します。

このツールの使い方

ベクトル A とベクトル B の各成分を、カンマ区切りの数値として入力します。両方のベクトルは同じ次元数である必要があります(次元数が異なる場合は、短いほうの長さに合わせて計算されます)。計算ボタンを押すと、コサイン類似度・内積・各ベクトルのノルム(大きさ)・2つのベクトルがなす角度(度)が表示されます。

計算式の解説

コサイン類似度は、2つのベクトルの内積を、それぞれのユークリッドノルム(大きさ)の積で割ったものです。

$$\cos\theta = \frac{\vec{A} \cdot \vec{B}}{\lVert \vec{A} \rVert \, \lVert \vec{B} \rVert} = \frac{\sum_{i=1}^{n} A_i B_i}{\sqrt{\sum_{i=1}^{n} A_i^{2}} \; \sqrt{\sum_{i=1}^{n} B_i^{2}}}$$

内積 \(\vec{A} \cdot \vec{B}\) は、対応する成分どうしの積をすべて足し合わせた値です。ノルム \(\lVert \vec{A} \rVert\) は、各成分を2乗して合計し、その平方根を取ったものです。ノルムで割ることで結果が正規化され、ベクトルの長さに左右されず「向き」だけで決まる値になります。

広告
コサイン類似度の式の構成要素を示す図:大きさの積分の内積
この式は、AとBの内積をそれぞれの大きさの積で割ります。

計算例

A = [1, 2, 3]、B = [4, 5, 6] とします。内積は \(1\cdot4 + 2\cdot5 + 3\cdot6 = 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 = \frac{32}{3.7417 \times 8.7750} \approx \frac{32}{32.8329} \approx 0.9746$$ となり、なす角はおよそ 12.93° です。

よくある質問

結果がマイナスになることはありますか? はい。2つのベクトルがほぼ正反対の方向を向いている場合、コサイン類似度はマイナスになり、完全に逆向きのときには −1 まで下がります。

ベクトルの長さ(次元数)が違う場合はどうなりますか? 重なっている次元(短いほうのベクトルの長さ)のみを使って比較します。意味のある結果を得るためには、同じ次元数のベクトルを使うことをおすすめします。

ユークリッド距離とは何が違うのですか? コサイン類似度は大きさを無視して「向き」に着目します。そのため、たとえ一方のベクトルがもう一方よりずっと長くても、同じ方向を向いていれば完全に似ていると判定されます。

最終更新: