コサイン類似度とは

英国ロンドン、Paternoster Squareの歩行者の高角度からの眺め

執筆者

Tom Krantz

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

コサイン類似性とは

コサイン類似度は、2つのデータ・ポイントの長さやサイズではなく、それらの指す方向に基づいてそれらの類似度を判定する、広く使用されている類似度メトリクスです。これは、従来の距離ベースのメトリクスでは困難な高次元空間で特に効果的です。

 

コサイン類似度を計算するには、内積空間内の2つのゼロでないベクトル間の角度のコサイン(θ)を測定する必要があります。この測定により、コサイン類似度スコアが生成されます。コサイン類似度値の範囲は-1から1です。

  • コサイン類似度スコアが1ということは、ベクトルがまったく同じ方向を向いていることを示します。
  • コサイン類似度スコア0は、ベクトルが直交している、つまり方向的な類似性がないことを示します。
  • コサイン類似度のスコアが-1ということは、ベクトルが正反対の方向を向いていることを示します。

矢印を比較するようなものだと考えてください。同じ方向を向いているなら、それらは非常に類似しています。直角度にある矢印は無関係であり、反対方向を指す矢印は類似していません。

この角度によるアプローチは、多くの機械学習(ML)、自然言語処理(NLP)、人工知能(AI)システムの基礎となります。これらのテクノロジーは、データのベクトルベース表現に依存しているため、データはその意味や他のデータとの類似性を把握するために数値形式に変換されています。

たとえば、チャットボットは、テキストをベクトル形式に変換するために単語埋め込み技術を使用したり、意図を理解するためにディープラーニング・モデルを使用したり、データベースから最も関連性の高い応答を取得するための類似性検索アルゴリズムを使用したりします。コサイン類似度により、これらの各ステップが可能になります。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

コサイン類似性が重要な理由

文中の次の単語を予測する場合でも、近くの食事をする場所を提案する場合でも、私たちのデジタル・ライフを形成するシステムの多くは、類似性の測定に依存しています。レコメンド・エンジン大規模言語モデル(LLM)などのテクノロジーは、コサイン類似度を使用して、どのコンテンツが最も関連性が高く、どの応答が最も「意味をなす」かを識別します。

これらの決定は、高次元データセットまたは疎なデータセットのデータポイント間の関係を分析することによって行われます。従来のテキスト分析では、多くの場合、Bag-of-Words(BoW)の高度な形式である項頻度-逆文書頻度(tf-idf)などの手法を使用して文書を数値表現に変換していました。BoWが文書中に単語が出現する頻度をスコア化するのに対し、tf-idfは、より大きなデータセット全体で単語がどれだけ一般的か、あるいは稀であるかに基づいてスコアを調整します。

より高度なシステムでは、ニューラル・ネットワークを使用してベクトル埋め込み(さまざまなタイプのデータを数値の配列として表すデータ・ポイントの数値表現)を生成します。たとえば、「医師」と「看護師」などの単語は、ベクトル空間で互いに近くに表示される可能性があり、モデルはそれらを関連していると見なします。これらの埋め込みでは、大規模な比較をより高速かつ効率的に行うために、主成分分析(PCA)などの追加の手順が実行されることがよくあります。

どちらのアプローチでも、コサイン類似度は、結果として得られるベクトルがどの程度一致しているかを測定し、システムが複雑なデータセット全体のパターンと関係を識別するのに役立ちます。NLP、AI、データ・サイエンスにおいて、コサイン類似度は次の点で中心的な役割を果たします。

関連性ランキング

検索エンジンは、コサイン類似度を利用してユーザーのクエリと関連文書をマッチングさせ、精度とランキングの質を向上させています。

意味比較

ニューラルネットワークとLLMは、コサイン類似度を使用してベクトル埋め込みを比較し、インプット間の意味的な近接性を評価します。

パーソナライズされた推奨

レコメンド・システムは、類似性の検索技術を適用して、ユーザーの行動や好みに合った製品、メディア、またはコンテンツを提案します。

トピック・モデリング

コサイン類似度は、類似したテーマを持つドキュメントをグループ化することでトピック・モデリングをサポートします。これらのトピック分布は通常、潜在ディリクレ配分(LDA)などの方法を使用して生成されます。

コサイン類似度は、テキストのユースケース以外にも、画像認識不正アクセス検知、顧客セグメンテーションなど、多次元パターンを迅速かつ正確に比較する必要があるあらゆるシナリオをサポートします。

オフィスでミーティングをするビジネスチーム

IBMお客様事例

お客様のビジネス課題(顧客満足度の向上、営業力強化、コスト削減、業務改善、セキュリティー強化、システム運用管理の改善、グローバル展開、社会貢献など)を解決した多岐にわたる事例のご紹介です。

コサイン類似性の仕組み

その核となるコサイン類似度は、2つのベクトルの間の角度のコサインを計算することによって、2つのベクトルがどの程度整合しているかを測定します。

文書比較のような現実世界の用途では、データは多次元空間内のベクトルとして表現されます。各次元は特定の単語、属性、またはアクションを表す場合があり、その次元の値は、その項目がどれほど目立っているか、または重要であるかを反映します。

コサイン類似度は、以下の方法で計算できます。

  1. 内積を見つける:各ベクトルの対応する値を乗算し、その結果を足し合わせます。これは、ベクトルがどの程度方向的に揃っているかを捉えます。

  2. 大きさを決定する:各ベクトルの大きさ(または長さ)は、その二乗成分の合計の平方根を使用して計算されます。

  3. コサイン類似度を計算する:コサイン類似度は、点積(ステップ1)をベクトルの大きさの積(ステップ2)で割ることで求められます。結果は、-1と1の間のコサイン類似性スコアです。

数式は次のように表すことができます。

コサイン類似度 = (A · B) / (||A|| × ||B||)

説明:

  • A · BはベクトルAとBの内積
  • ||A||はベクトルAの大きさ(長さ)
  • ||B||はベクトルBの大きさ

結果として求められるスコアは、-1から1の範囲に収まります。

さらに明確な説明をするにあたり、「王」と「女王」という2つの言葉を想像してください。

どちらも類似した文脈で使用されます。各単語は、LLMによって処理されると、何百万もの文における用法に基づいて用語の意味を捉えるベクトル埋め込みに変換されます。「王」と「女王」はどちらも「王室」、「王座」、「君主」などの単語の近くに頻繁に出現するため、結果として得られる埋め込みはほぼ同じ方向を指します。

次に3つ目の単語「リンゴ」について考えてみましょう。同じ文書に登場することもありますが、「果物」「果樹園」または「さくさく」といった用語とより頻繁に関連付けられます。そのベクトルはほぼ反対方向を向いているため、コサイン類似度は低くなります。グラフにすると、「王」と「女王」の矢印はほぼ横並びになり、「リンゴ」の矢印は大きく異なる角度で飛び出します。

パフォーマンスを最適化し、関連する一致をより速く取得できるようにするために、多くの組織ではこれらの埋め込みを特殊なベクトル・データベースに保管します。ベクトル・データベースは、高次元ベクターのインデックスを作成して検索を改善し、最も類似した結果を返すように設計されたツールです。

コサイン類似度とその他の類似度メトリクス

コサイン類似度は、類似度メトリクスの広範なエコシステムにおける1つのアプローチにすぎません。各メトリクスは、さまざまな方法で類似度を評価するように設計されており、多次元空間内の特定の種類のデータに適性を持っています。たとえば、以下のような例が挙げられます。

ユークリッド距離

このメトリクスは、ベクトル空間内にある2点間の直線距離を計算します。これは直観的で、データ分析、特に数値データや物理的な特徴の比較おいて一般的に使用されます。ただし、ベクトルが距離的に収束する傾向がある高次元空間では、クラスタリング情報検索などのタスクではユークリッド距離の信頼性が低下します。

ジャッカード類似度

ジャッカード類似度は、共通部分のサイズを結合部分のサイズで割ることにより、2つのデータセット間の重複を測定します。これは、タグ、クリック、製品ビューなど、カテゴリー・データまたはバイナリー・データを含むデータセットに一般的に適用され、特にレコメンデーション・システムに役立ちます。ジャッカードは存在するかどうかには焦点を当てますが、頻度や規模は考慮しません。

内積

ベクトルAとBの内積は、それらが同じ方向を向いている程度を反映しますが、大きさを正規化しません。この要因があるため、拡張には注意を要します。大きな値を持つベクトルは、方向が異なってもより類似しているように見えることがあります。

このメトリック上のコサイン類似度は、ベクトルの内積をベクトルの大きさの積で割ること(コサイン類似度の式)で改善します。したがって、コサイン類似度は、特に高次元データセットにおいて、さまざまな長さのゼロではないベクトルを比較する場合により安定しています。

実際には、組織は、データセットの構造や回避したい非類似性の種類に応じて、他のメトリクスとともにコサイン類似度測定を使用することがよくあります。

たとえば、NLPやLLMアプリケーションにおける類似度検索では、コサイン距離とディープラーニング・アルゴリズムでトレーニングされた埋め込みモデルが組み合わせられることがよくあります。コサイン類似度の計算は、Scikit-learn、TensorFlow、PyTorchなどのオープンソース・ツールにも統合されており、これによりデータサイエンティストは大規模なデータセット全体でコサイン類似度を簡単に計算できます。

コサイン類似度のメリット

コサイン類似度は、無数のシステムにまたがる役割を考えると、従来の類似度メトリクスに比べていくつかの利点があります。

  • 高次元空間における堅牢性:コサイン類似度は、他の距離ベースのメトリクスでは性能が低下する可能性のある高次元環境でも確実に機能します。
  • 大きさに影響されない:コサイン類似度はベクトルの大きさを無視するため、文書やデータポイントのスケールや長さが異なる場合に特に有用です。
  • 効率的な実装:コサイン類似度は計算負荷が軽く、NumPyやSciPyのような一般的なプログラミング言語ライブラリを使って実装できます。
  • ドメイン全体に適用可能:コサイン類似度は、テキストマイニング、情報検索、類似性検索、リアルタイム・レコメンデーションなど、幅広いユースケースをサポートする上で十分な柔軟性を備えています。

コサイン類似度の使用に関する課題

コサイン類似度には利点がある一方、次のような制限もあります。

  • ゼロ・ベクトルの制限:コサイン類似度は、どちらか一方または両方のベクトルの大きさがゼロの場合には定義されないため、ゼロベクトルを除去する前処理が不可欠となります。
  • 誤った類似性のリスク:コサイン類似度は、方向的には一致しているものの意味的には無関係なベクトルに対して高いスコアを出すことがあり、特に埋め込みモデルが十分に学習されていない場合に起こります。基礎となるトレーニング・データにダイバーシティーや文脈上のニュアンスが欠けていると、バイアスを持つ結果や誤解を招く結果につながる可能性があります。
  • 正規化への依存:すべてのインプット・ベクトルを正規化する必要があり、不適切にスケーリングされたデータは結果を歪める可能性があります。
  • 直交性のあいまいさ:類似度スコアが0であっても、現実世界では必ずしも全く類似していないとは限りません。これは、言語などのニュアンスを伴う分野で特に当てはまります。

コサイン類似度を使用するための実践的なヒント

コサインの類似性から最大限の価値を引き出すために、組織は次のことを検討できます。

データの前処理を行う

組織は、特に高次元の入力を使用する場合に、計算前にベクトルを正規化して、スケールの一貫性と有効な結果を確保できます。

ゼロベクトルを削除する

コサイン類似度計算中に「ゼロ除算」エラーが発生するため、企業はデータセットをクリーンアップしてゼロ・ベクトルを削除するか、フラグを立てる必要があります。

他のメトリクスと組み合わせる

組織は、多面的な類似性が必要な場合、コサイン類似性を、ジャッカード類似度やユークリッド距離のような付加的な測定基準で補完することができます。

本番環境に近い環境でテストする

企業は、特にアプリケーション・プログラミング・インターフェース(API)のようなリアルタイム・システムで使用される場合、導入前に、実世界の状況を反映した環境でコサイン類似性のパフォーマンスを評価することが推奨されます。

組織は、成熟したオープンソース・ライブラリーを活用してコサイン類似度の計算を大規模かつ効率的に実行できます。たとえば、Scikit-learnは、Pythonモジュール・パス sklearn.metrics.pairwise を通じて、すぐに使用できるコサイン類似度関数を提供します。

あるいは、NumPyを使用して、数式をPythonで直接コーディングすることもできます。

“cosine_similarity = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))”

矢印と同様に、コサイン類似度は組織が方向性を合わせる際に有用です。検索結果のマッチングやデータ駆動型の意思決定における情報供給など、コサイン類似度は強力な洞察を提供し、さまざまなユースケースにわたってエクスペリエンスをパーソナライズする上で役立ちます。

関連ソリューション
分析ツールとソリューション

企業が繁栄するには、データを活用して顧客ロイヤルティーを構築し、ビジネス・プロセスを自動化し、AI駆動型のソリューションで業務を刷新する必要があります。

分析ソリューションの詳細はこちら
データ分析コンサルティングサービス

IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。

分析サービスを発見する
IBM Cognos Analytics

より良い意思決定を可能にする、AIを活用して洞察を引き出すCognos Analytics 12.0をご紹介します。

Cognos Analyticsの詳細はこちら
次のステップ

企業が繁栄するには、データを活用して顧客ロイヤルティーを構築し、ビジネス・プロセスを自動化し、AI駆動型のソリューションで業務を刷新する必要があります。

分析ソリューションの詳細はこちら 分析サービスを発見する