1. 定義と概要
コサイン類似度とは、2つのベクトルがなす角(2つのベクトルがつくる角度)の余弦(コサイン)の値によって、それらのベクトルがどれだけ同じ方向を向いているかを表す指標のことです。求め方としては、2つのベクトルの内積(対応する成分同士をかけて合計した値)を求め、それぞれのベクトルの長さ(大きさ。ノルムとも呼びます)の積で割ります。
値はマイナス1から1の範囲を取ります。値と2つのベクトルの向きは、次のように対応します。
| 値 | 2つのベクトルの向き |
|---|---|
| 1に近い | 向きがほぼ一致している |
| 0 | 直交(90度の角度をなし、向きに関連がない状態) |
| マイナス1に近い | 向きがほぼ正反対 |
文書中の単語の出現回数のように0以上の値だけで構成されるベクトル同士を比べる場合は、実質的に0から1の範囲に収まります。
データ同士の近さを比べる方法には、2点の間の隔たりの大きさをそのまま測る発想と、向きの近さを測る発想があり、目的に応じて使い分けられます。
文章を単語の出現回数などでベクトル化すると、文書の長さ(単語数)が違うだけでベクトルの大きさ自体が変わってしまう点には注意が必要です。内容が似ていても、隔たりの大きさだけを見る指標では正しく比較しにくいという課題が残ります。そこでベクトルの向きだけに着目し、大きさの違いを気にせず比較できるコサイン類似度が、テキストデータの比較や検索の分野で使われています。
2. 試験対策ポイント
コサイン類似度は、2つのベクトルの内積を、それぞれのベクトルの長さ(ノルム)の積で割って求めます。この式が、2つのベクトルがなす角の余弦を表しているという成り立ちは、あわせて整理しておきたい点です。
値の範囲はマイナス1から1で、1に近いほど向きが近く、0は直交、マイナス1に近いほど向きが逆になります。文書ベクトルのように成分がマイナスにならないデータでは、値が0から1の範囲に収まるという解釈の違いは、取り違えやすい点です。
コサイン類似度の中心的な性質は、ベクトルの大きさ(長さ)の影響を受けず、向きだけを見る点にあります。文章の長さが異なる文書同士を比べても、話題が近ければ高い値になる性質は、理解しておきたい論点です。
応用の場面では、文書をベクトル化する手法であるTF-IDF(単語の出現頻度と、その単語がどれだけ珍しいかから文書内での重要度を数値化する手法)が使われます。単語の意味をベクトルで表す分散表現(複数の数値の組で単語や文章の意味を表す方法)で得たベクトル同士の近さを測る場面でも、コサイン類似度が使われます。分散表現を得る代表的な手法のひとつが、word2vec(単語の意味をベクトルで表現する代表的な手法)です。こうした関連用語をまとめて押さえておきたいところです。
レコメンデーションシステム(ユーザーの好みに合いそうな商品や情報を自動的に選んで提示する仕組み)では、ユーザーや商品の特徴をベクトル化し、コサイン類似度で近さを測って似た商品や似た好みのユーザーを見つける用途があります。協調フィルタリング(他のユーザーの行動履歴の似ている度合いをもとにおすすめを決める手法)など、個々の推薦手法の内部アルゴリズムは別のテーマとして扱われます。
3. 関連概念との比較・相違点
ユークリッド距離(2点間を定規でまっすぐ結んだときの長さを表す指標)との最大の違いは、何を測っているかという視点にあります。ユークリッド距離は2点の間の隔たりの大きさ、つまり距離そのものを測る尺度です。一方でコサイン類似度は、ベクトルの向き、つまり角度の近さを測る尺度であり、ベクトルの大きさの違いには影響されにくい性質を持ちます。
文書の長さが大きく異なる文章同士を比べる場面では、隔たりの大きさをそのまま見る距離よりも、向きの近さを見る類似度が選ばれやすい傾向です。ユークリッド距離自体の計算方法は別の話として、ここでは考え方の違いに絞って整理します。
内積(正規化前の値)そのものは、ベクトルの大きさの影響を受けて値が変わります。これに対してコサイン類似度は、内積をそれぞれのベクトルの長さの積で割ることで大きさの影響を打ち消し、向きだけを比べられるようにしたものという関係にあります。
同じ内積の値でも、ベクトルが長ければ大きくなり、短ければ小さくなるため、内積の値だけを見ても向きの近さは判断できません。三者が何を測っているかを並べると、違いがはっきりします。
| 指標 | 測っているもの | ベクトルの大きさの影響 |
|---|---|---|
| コサイン類似度 | 向き、つまりなす角の近さ | 受けにくい |
| ユークリッド距離 | 2点の間の隔たりの大きさ | 受ける |
| 内積 | 対応する成分同士をかけて合計した値 | 受ける |
コサイン類似度は、この大きさの影響を取り除いた指標として位置づけられます。
4. ビジネス・実務での活用シナリオ
検索エンジンや文書検索の分野では、検索クエリ(検索窓に入力された語句)と各文書をそれぞれベクトル化し、コサイン類似度が高い文書を検索結果の上位に表示する仕組みが使われています。文書の長さに関わらず内容の近さで評価できるため、長い文書と短い文書が混在していても、話題の近さを基準に順位づけできる点が特徴です。
ECサイトのレコメンド機能では、商品説明文やユーザーの閲覧・購買履歴をベクトル化し、コサイン類似度が高い商品同士を「関連商品」や「よく似た商品」として提示する使い方です。購買履歴の量がユーザーごとに異なっていても、向きの近さで好みの傾向を比較できるため、回遊や関連購買を促す効果が期待できます。
チャットボット(自動で会話に応答するプログラム)やFAQ検索の場面でも、コサイン類似度は活用されています。ユーザーの質問文と登録済みのFAQ文をベクトル化して比較し、コサイン類似度が最も高いFAQを回答候補として提示する仕組みです。言い回しが多少異なっていても、内容の方向性が近ければ適切な候補を拾える点が、この仕組みの強みです。
5. 要点まとめ
- コサイン類似度とは2つのベクトルのなす角の余弦で向きの近さを表す指標で、内積をそれぞれのベクトルの長さの積で割って求めます。
- 値はマイナス1から1(非負のベクトルなら0から1)の範囲を取り、1に近いほど向きが近く、0は直交、マイナス1に近いほど向きが逆になる関係です。
- ベクトルの大きさに影響されないため、長さが異なる文書同士の比較に向き、文書検索・レコメンド・単語の意味の近さの測定などに使われます。
6. 確認問題
問1コサイン類似度は、2つのベクトルの内積を、それぞれのベクトルの長さ(ノルム)の積で割ることで求められる。
解答・解説をみる
○ 正しい
内積をベクトルの長さの積で割った値は、なす角の余弦(コサイン)に一致します。これがコサイン類似度の求め方です。
問2コサイン類似度はベクトルの大きさ(長さ)の影響を強く受けるため、長さの異なる文書同士の比較には向いていない。
解答・解説をみる
× 誤り
コサイン類似度はベクトルの向きだけを見る指標で、大きさの影響を受けません。そのため文書の長さが異なっていても、内容の近さを比較できます。正しくは、大きさに影響されにくい指標です。
問3コサイン類似度の値は、2つのベクトルの向きが完全に一致するとき1に、直交するとき0になる。
解答・解説をみる
○ 正しい
値はマイナス1から1の範囲を取り、1は同じ向き、0は直交(向きに関連がない状態)、マイナス1は正反対の向きを表します。

