余弦類似度計算機 - ベクトル類似性分析

2つのベクトル間の余弦類似度を即座に計算します。1 は同じ方向、0 は直交、−1 は反対方向を表します。

同じ長さの数値ベクトルを 2 つ、カンマまたはスペース区切りで入力し、「計算」をクリックすると余弦類似度と補助指標を確認できます。

余弦類似度計算機 - ベクトル類似性分析
2つのベクトル間の余弦類似度を即座に計算します。1 は同じ方向、0 は直交、−1 は反対方向を表します。

カンマ区切りまたはスペース区切りで数値を入力

カンマ区切りまたはスペース区切りで数値を入力

余弦類似度計算機について

余弦類似度は、多次元空間における 2 つの非ゼロベクトルの類似性を測る最も広く使われる指標の 1 つです。2 点の距離を測るユークリッド距離とは異なり、余弦類似度はベクトルの向き、つまりベクトル間の角度の余弦だけに注目します。そのため、サイズは重要ではなく方向が重要な場面、たとえば長さの異なる文書の比較や、活動量の異なるユーザー嗜好プロファイルの比較に特に有効です。 式は単純です。cos(θ) = (A · B) / (‖A‖ × ‖B‖) で、A · B は 2 つのベクトルの内積、‖A‖ と ‖B‖ はそれぞれのユークリッド長(ノルム)です。内積は対応する要素を掛け合わせ、その結果を足し合わせて求めます。ベクトルの大きさは、各成分の二乗和の平方根です。 結果は常に [−1, 1] の範囲に収まります。余弦類似度が 1 なら 2 つのベクトルは完全に同じ方向を向いており、完全に一致しています。0 は直交していることを意味し、向きの相関はありません。−1 は完全に反対方向を向いていることを意味します。実務では、単語頻度や評価回数のような非負特徴だけを扱うことが多く、その場合は類似度は [0, 1] に制限されます。 自然言語処理や情報検索では、余弦類似度は TF-IDF や bag-of-words ベクトルで表された文書を比較する標準的な方法です。長い文書ほどベクトルの大きさが自然に大きくなるため、生の内積比較では不公平に有利になります。大きさの積で正規化することで、余弦類似度は長さの偏りを取り除き、語項の比率だけに注目します。 推薦システムでは、ユーザー嗜好ベクトルの照合に余弦類似度が使われます。2 人のユーザーが似た項目に似た相対的な熱量で評価していれば、たとえ一方が全体としてはるかに多くの項目を評価していても、余弦類似度は高くなり、好みが近いことを示します。同じ考え方は画像認識にも当てはまり、ニューラルネットワークの特徴記述ベクトルを余弦類似度で比較して、見た目の似た画像を探せます。 この計算機では、2 つのベクトルの次元数が同じであれば、長さは自由に入力できます。値はカンマまたはスペースで区切ってください。計算機は余弦類似度、内積、各ベクトルの大きさを表示し、計算を段階的に確認できます。

余弦類似度の例

ベクトルの類似度レベルが異なる 3 つの代表的なケースです。

ベクトル類似度解釈
A = [1, 2, 3], B = [2, 4, 6]1.000000B は A のスカラー倍です(同じ方向)。スケール係数に関係なく、余弦類似度は 1 です。
A = [1, 0, 0], B = [0, 1, 0]0.000000標準基底ベクトルは直交しています。内積 = 0 なので、余弦類似度 = 0 です。
A = [5, 3, 0, 2], B = [4, 2, 1, 3]0.947758文書やユーザー嗜好の比較でよく見られる高い類似度です。多くの次元が重なっています。A·B=32、|A|=√38≈6.164、|B|=√30≈5.477。
A = [1, 0], B = [-1, 0]-1.000000完全に反対方向を向くベクトルは、余弦類似度 = −1 になります。

余弦類似度計算機の使い方

  1. 「1つ目のベクトル(A)」欄に、カンマまたはスペース区切りで数値を入力します。例: 1, 2, 3。
  2. 「2つ目のベクトル(B)」欄に 2 つ目のベクトルを入力します。要素数は 1 つ目と同じでなければなりません。
  3. 「類似度を計算」をクリックします。結果パネルに余弦類似度、内積、各ベクトルの大きさが表示されます。
  4. 表の下にある例ボタンを使うと、あらかじめ用意されたベクトルの組をすぐに読み込めます。
  5. 「リセット」をクリックすると、すべての欄を消去して新しい計算を始められます。

余弦類似度 FAQ

余弦類似度 0.85 は何を意味しますか?
2 つのベクトルのなす角が約 31.8 度であることを意味し、方向の類似度が高いことを示します。テキスト分析では、重要語のかなりの割合が共通で、相対頻度も似ていることを示すことが多いです。多くの用途では 0.7 を超えると高い類似度と見なされます。
テキストでユークリッド距離より余弦類似度が好まれるのはなぜですか?
ユークリッド距離はベクトルの大きさに敏感なので、同じ話題を扱う長い文書と短い文書でも、長い方の単語数が多いだけで大きく違って見えます。余弦類似度は大きさを正規化して角度だけを見るため、文書を長さに関係なく比較できます。この長さ不変性が、テキスト系アプリケーションで余弦類似度が主流である主な理由です。
余弦類似度は負になりますか?
はい、余弦類似度の範囲は −1 から 1 です。負の値は、ベクトル同士の角度が 90 度を超えることを意味し、互いに向きが離れていることを示します。単語数や評価のような非負特徴だけを使うアプリケーションでは、類似度は [0, 1] に収まりますが、平均中心化した評価や感情スコアのような符号付き特徴では、負の類似度もあり得ます。
一方のベクトルがすべて 0 だとどうなりますか?
どちらか一方がゼロベクトルだと、正規化の段階でゼロ除算が起きるため、余弦類似度は数学的に未定義です。この計算機ではその場合にエラーを表示します。実際には、テキスト処理でゼロベクトルが出るのは、文書に語彙中の単語が 1 つも含まれていないことを意味することが多く、そもそも類似度比較にはあまり役立ちません。
ベクトルは何次元まで使えますか?
この計算機は任意の長さのベクトルに対応しており、制限はブラウザの性能のみです。実際のアプリケーションでは、数千次元から数百万次元(たとえば単語埋め込み空間)を使うことも珍しくありません。次元数に関係なく数学的な式は同じです。計算が有効であるためには、両方のベクトルの要素数が完全に一致している必要があります。
余弦類似度は相関係数と同じですか?
余弦類似度とピアソン相関係数は密接に関連していますが、同じではありません。ピアソン相関係数は、まず各ベクトルを平均中心化(要素の平均を引く)してから、その中心化したベクトルの余弦類似度を計算します。ベクトルがすでに平均中心化されているなら、2 つの指標は同じ結果になります。平均中心化していない生の特徴ベクトルでは、余弦類似度と相関係数は通常異なります。