プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

類似性測度の用途とは?情報検索での活用と代表的な測度をわかりやすく解説

類似性測度の概要

類似性測度(類似度)は、データマイニングにおける意思決定の基盤となる重要な枠組みを提供します。分類やクラスタリングといった主要タスクでは、何らかの類似性測度の存在が前提となるのが一般的です。一方で、類似性を評価する技術が不十分な分野では、情報検索が煩雑で非効率な作業になりがちです。

類似性測度には、以下のようなさまざまな応用があります。

情報検索(Information Retrieval)

情報検索(IR)システムの目的は、ユーザーのニーズに応えることです。ユーザーのニーズは通常、オンラインの検索エンジンのテキストボックスに入力される短いテキストクエリという形で表現されます。IRシステムは一般に、クエリに対して直接回答を返すのではなく、何らかの類似性測度によって「そのクエリに関連している」と判断されたレコードをランキング形式のリストとして提示します。

類似性測度には、クエリに関連する情報をクラスタリング・分類する効果があるため、ユーザーはクエリを再構築する際に、役立つこともあれば役立たないこともある、新たな情報ニーズの解釈を発見することがよくあります。

また、クエリが元のデータ集合から取られたレコードである場合には、類似性測度を用いてコレクション内のレコードをクラスタリング・分類できます。つまり、類似性測度は、それまで非構造化だったデータ集合に初歩的な構造をもたらすことができるのです。

動機

IRシステムで使用される類似性測度は、データセット全体に対するユーザーの認識を歪める可能性があります。例えば、ユーザーが検索エンジンにクエリを入力し、上位10件の検索結果の中に満足のいく回答が見つからなかった場合、通常はクエリを1〜2回ほど言い換えて再検索を試みるでしょう。このように、類似性測度の挙動はユーザーの次の行動にまで影響を及ぼします。

古典的な類似性測度

類似性測度は、サイズkのタプルのペアからスカラー値へのマッピングとして定義されます。慣例として、すべての類似性測度は [-1, 1] または [0, 1] の範囲にマッピングされなければならず、類似スコアが1の場合は最大の類似性を示します。さらに、類似性測度は、比較対象となる2つの項目間で共通する特性が増えるほど値が大きくなるという性質を備えている必要があります。

Dice係数

Dice係数は、適合率(precision)と再現率(recall)の調和平均を一般化したものです。高い調和平均を持つシステムは、高い再現率を維持しながら高い適合率を実現できるという点で、理論的には理想的な検索システムに近いといえます。適合率と再現率の調和平均は次のように表されます。

$$E=\frac{2}{\frac{1}{P}+\frac{1}{R}}$$

一方、Dice係数は次のように定義されます。

$$sim(d,d_{j})=D(A,B)=\frac{|A\cap B|}{\alpha|A|+(1-\alpha)|B|}\cong \frac{\propto \sum_{k=1}^{n}w_{kq}w_{kj}}{\propto \sum_{k=1}^{n}\mathrm{w}_{kq}^{2}+(1-\propto)\sum_{k=1}^{n}\mathrm{w}_{kj}^{2}}$$

ここで、α ∈ [0, 1] です。α = ½ と置くことで、Dice係数が重み付き調和平均であることが示せます。

Overlap係数

Overlap係数は、2つの集合がどの程度重なり合っているかを測定しようとする指標です。Overlap係数は次のように表されます。

$$sim(d,d_{j})=D(A,B)=\frac{|A\cap B|}{min(|A|,|B|)}\cong \frac{\propto \sum_{k=1}^{n}w_{kq}w_{kj}}{\propto \sum_{k=1}^{n}\mathrm{w}_{kq}^{2}+\sum_{k=1}^{n}\mathrm{w}_{kj}^{2}}$$

なお、Overlap係数の別のバリエーションでは、min演算子の代わりにmax演算子を用いて計算されることもあります。

  1. C#におけるリフレクションの活用方法とは?主な用途と実装例を解説

    リフレクション(Reflection)は、プログラムの実行時に型情報を動的に取得するための仕組みです。実行中のプログラムのメタデータにアクセスするためのクラスは、System.Reflection 名前空間に用意されています。リフレクションの主な用途属性(Attribute)の情報を実行時に参照・確認できる。アセンブリ内に含まれるさまざまな型を調査し、それらのインスタンスを動的に生成できる。メソッドやプロパティへの遅延バインディング(Late Binding)が可能になる。実行時に新しい型を作成し、その型を利用して各種処理を実行できる。System.Reflection 名前空間には、アプリケ

  2. C#のコメントとは?複数行・単一行コメントの書き方を解説

    コメントは、コードの内容や意図を説明するために記述する注釈です。コンパイラはコメント部分を完全に無視するため、プログラムの動作には一切影響しません。C#では、複数行にわたるコメントは「/*」で始まり、「*/」で終わります。 複数行コメント /* 以下はC#における 複数行コメントの例です */ 「/* ... */」で囲まれた範囲はすべてコンパイラによって無視されます。処理の概要や注意点など、複数行にわたる説明を残したい場合に使用します。 単一行コメント // 変数の宣言 int a = 10; 単一行コメントは「//」から行末までがコメントとして扱われます。変数の意味や処理の意図を手軽にメモ