コサイン類似度とは?意味・仕組み・活用例をわかりやすく解説

コサイン類似度とは?意味・仕組み・活用例をわかりやすく解説

AIの初心者

「コサイン類似度」ってなんですか?AIの勉強をしているとよく出てきます。

AI専門家

「コサイン類似度」は、2つのデータをベクトルとして見たときに、向きがどれくらい近いかを測る指標です。向きが同じなら1に近く、直角なら0、反対方向なら-1に近くなります。AIでは文章、画像、ユーザーの好みなどの類似度を調べるときによく使われます。

AIの初心者

向きが近いかを見る、というのは具体的にどういうことですか?

AI専門家

例えば、文章を単語の出現回数で数値化すると、それぞれの文章は単語空間の中の矢印として表せます。コサイン類似度は、その矢印が同じ方向を向いているかを調べることで、文章の内容や傾向がどれくらい近いかを評価します。

コサイン類似度とは。

人工知能、機械学習、自然言語処理、検索、推薦システムで使われる「コサイン類似度」について、意味、計算方法、活用例、注意点を整理します。

コサイン類似度とは何か

コサイン類似度でベクトルの向きを比較する概念図

コサイン類似度とは、2つのベクトルがどれくらい同じ方向を向いているかを数値で表す類似度指標です。ここでいうベクトルとは、文章、画像、商品、ユーザーの行動などを、複数の数値の並びとして表したものです。

例えば、文章を「単語Aが何回出たか」「単語Bが何回出たか」という数値の並びに変換すると、その文章はベクトルとして扱えます。2つの文章のベクトルが同じ方向を向いていれば、含まれる単語の傾向が近いと考えられます。反対に、向きが大きく違えば、内容の傾向も異なると判断しやすくなります。

コサイン類似度は「長さ」よりも「向き」に注目する点が特徴です。そのため、短い文章と長い文章でも、使われている単語の比率が似ていれば高い類似度になりやすく、文章検索や文書分類で扱いやすい指標として使われています。

項目 内容
見るもの 2つのベクトルの向きの近さ
値の範囲 一般に -1 から 1
主な用途 文章の類似度判定、検索、推薦、画像特徴量の比較
特徴 ベクトルの大きさよりも方向の一致度を重視する

コサイン類似度の値の読み方

コサイン類似度は、2つのベクトルのなす角のコサインを使います。角度が0度に近いほど同じ方向を向いているため、値は1に近づきます。角度が90度なら値は0、180度なら値は-1になります。

1に近いほど似ている、0に近いほど関係が弱い、-1に近いほど反対方向の特徴を持つと読むのが基本です。ただし、単語の出現回数のように負の値を含まない特徴量では、コサイン類似度は0以上になることが多く、-1に近い値はあまり出ません。

コサイン類似度 角度のイメージ 意味
1に近い ほぼ同じ方向 傾向がよく似ている 似た単語を同じ比率で含む文章同士
0に近い 直角に近い 関連が弱い 話題がほとんど重ならない文章同士
-1に近い 反対方向 逆の傾向を持つ 正負の特徴量を使った分析で反対の性質を示すデータ

初心者が注意したいのは、値が高いからといって必ず「意味が完全に同じ」とは限らない点です。どの単語や特徴量を使ってベクトルを作ったかによって、結果の意味は変わります。

計算方法と式の意味

コサイン類似度の計算式を内積とベクトルの大きさに分けて示す図

コサイン類似度は、2つのベクトルの内積を、それぞれのベクトルの大きさの積で割って求めます。式で表すと次のようになります。

\(\cos(\theta)=\frac{A\cdot B}{\|A\|\|B\|}\)

ここで、\(A\) と \(B\) は比較したい2つのベクトルです。\(A\cdot B\) は内積を表し、対応する成分同士を掛けて合計したものです。\(\|A\|\) と \(\|B\|\) はそれぞれのベクトルの大きさを表します。\(\theta\) は2つのベクトルが作る角度です。

手順としては、まず特徴量を並べて2つのベクトルを作ります。次に、対応する数値同士を掛けて足し合わせ、内積を求めます。さらに、それぞれのベクトルの大きさを求め、最後に内積を大きさの積で割ります。

分母でベクトルの大きさを割っているため、コサイン類似度はベクトルの長さそのものではなく、向きの近さを測る指標になります。この性質が、文章量の違いがあるデータ同士を比較しやすい理由です。

簡単な計算例

単語頻度ベクトルで2つの文章を比較する例

簡単な例として、2つの文章を「AI」「検索」「画像」という3つの単語の出現回数で表します。文章Aを \(A=(2,1,0)\)、文章Bを \(B=(4,2,0)\) とします。

内積は \(2\times4+1\times2+0\times0=10\) です。ベクトルの大きさは、\(\|A\|=\sqrt{2^2+1^2+0^2}=\sqrt{5}\)、\(\|B\|=\sqrt{4^2+2^2+0^2}=\sqrt{20}\) になります。

したがって、コサイン類似度は \(\frac{10}{\sqrt{5}\sqrt{20}}=1\) です。文章Bは文章Aより単語数が多いものの、単語の比率は同じなので、向きは一致していると判断されます。

一方で、文章Cを \(C=(0,0,3)\) とすると、文章Aとの内積は0になります。この場合、コサイン類似度は0となり、少なくともこの3語の特徴量では話題が重なっていないと解釈できます。

文章・推薦・画像での活用例

文章検索、推薦システム、画像検索でコサイン類似度を使う場面

コサイン類似度は、さまざまなデータをベクトルに変換できる場面で使えます。代表的なのは自然言語処理です。文章を単語頻度、TF-IDF、文ベクトル、埋め込みベクトルなどに変換し、文章同士の近さを測ります。検索エンジン、FAQ検索、問い合わせ分類、重複文書の検出などで利用されます。

推薦システムでも、ユーザーの行動履歴や商品の特徴をベクトル化して比較できます。あるユーザーがよく見る商品や購入した商品の傾向をベクトルで表し、それに近い商品を探すことで、興味を持ちそうな候補を提示できます。

画像分析では、画像そのものを直接比較するのではなく、画像から抽出した特徴量や画像埋め込みを比較します。似た画像検索、商品画像の分類、重複画像の検出などで、コサイン類似度が候補の絞り込みに役立ちます。

分野 ベクトル化する対象 活用例
自然言語処理 単語頻度、TF-IDF、文章埋め込み 文章検索、分類、重複文書の検出
推薦システム ユーザー行動、商品特徴、評価履歴 関連商品やおすすめコンテンツの提示
画像分析 画像特徴量、画像埋め込み 類似画像検索、画像クラスタリング

コサイン類似度の利点

コサイン類似度の大きな利点は、計算が比較的シンプルで、多くのデータに適用しやすいことです。内積とベクトルの大きさを計算できれば求められるため、大量の文章や画像特徴量を扱うシステムでも使いやすい指標です。

もう一つの利点は、ベクトルの長さの影響を受けにくいことです。文章Aが短く、文章Bが長い場合でも、含まれる単語の傾向が近ければ類似度は高くなります。これは、検索や分類の場面で「文章量」よりも「内容の傾向」を見たいときに便利です。

特徴量のスケール差よりもパターンの近さを見たい場合、コサイン類似度は扱いやすい選択肢になります。特に高次元のベクトルを扱う機械学習や自然言語処理では、よく使われる基本指標の一つです。

欠点と注意点

コサイン類似度の注意点と距離指標との違いを示す図

コサイン類似度は便利ですが、万能ではありません。最大の注意点は、ベクトルの大きさの違いを直接は反映しないことです。2つのベクトルが同じ方向を向いていれば、片方がもう片方の10倍の大きさでも、コサイン類似度は1になります。

例えば、あるレビューで「良い」という単語が3回出た文章と、30回出た文章があるとします。単語の比率だけを見ると同じ方向を向いているため類似度は高くなりますが、実際には後者のほうが感情の強さや文章量が大きいかもしれません。このような量の違いを重視したい場合、コサイン類似度だけでは判断が足りません。

また、すべての成分が0のゼロベクトルでは、分母が0になるためコサイン類似度を計算できません。単語がまったく出現しない文書、特徴抽出に失敗した画像、欠損が多いデータなどでは、前処理で除外する、別の値で補う、別指標を使うといった対応が必要です。

コサイン類似度の結果は、ベクトルの作り方に強く依存します。単語頻度を使うのか、TF-IDFを使うのか、埋め込みベクトルを使うのかによって、同じ文章でも類似度は変わります。

ユークリッド距離など他の指標との違い

類似度や距離を測る指標には、コサイン類似度以外にもユークリッド距離やマンハッタン距離があります。違いをざっくり言えば、コサイン類似度は「向き」、ユークリッド距離やマンハッタン距離は「位置や量の差」を見ます。

指標 主に見るもの 向いている場面 注意点
コサイン類似度 ベクトルの向き 文章や埋め込みの傾向が近いかを見たいとき 大きさの差は見落としやすい
ユークリッド距離 直線距離 数値の絶対的な近さを見たいとき スケールの大きい特徴量に影響されやすい
マンハッタン距離 各成分の差の合計 特徴量ごとの差を積み上げて見たいとき 特徴量の単位やスケール調整が重要

文章検索のように「同じ話題かどうか」を見たいならコサイン類似度が合いやすく、売上、回数、金額のように量の差そのものが重要なら距離指標や別の評価軸も検討します。実務では、目的に合わせて複数の指標を比較し、結果が説明できるものを選ぶことが大切です。

まとめ

コサイン類似度は、2つのデータをベクトルとして表し、その向きの近さから類似度を測る方法です。文章、画像、商品、ユーザー行動などを数値化できれば幅広く使えるため、AIや機械学習の基礎としてよく登場します。

特に、文章の長さやデータの規模が違っても、特徴の傾向が近いかを見たい場面で役立ちます。一方で、ベクトルの大きさの違いは反映しにくいため、量の差や強さを重視する場合は、ユークリッド距離など他の指標と組み合わせて考える必要があります。

コサイン類似度を正しく使うには、式を覚えるだけでなく、何をベクトル化し、どの特徴の向きを比較しているのかを理解することが重要です。データの作り方と指標の性質をセットで確認すれば、検索、推薦、分類などの結果をより納得感を持って読み解けます。

更新履歴

日付 内容
2025年2月1日 初回公開
2026年6月21日 式の読み方、計算例、距離指標との違いを追記