このエントリーをはてなブックマークに追加

はじめに

こちらの記事 の続編で検索における評価の方法についてまとめます。
同じく以下の書籍を参考資料にしています。

検索の評価

Solrの検索精度について色々と試してみてもそれがいいのか悪いのか感覚に頼ってしまうと人によっていい・悪いが異なってしまいます。
そのため、検索の評価も数値で表せる方法で行う必要があります。

検索評価の方法

検索の評価には2つの方法があります。

  • オンライン評価
    • 検索サービスが実際にユーザから利用されている状態で行う評価方法
      • いわゆるA/Bテスト
    • 実際のサービスを使って評価できるため、テストデータの用意がなく本番サービスに新手法を投入すればテストができるため、オフライン評価と比較するとテストがやりやすい
    • 反面、本番サービスの検索が劣化する可能性があり、試行錯誤をスピード感をもって行うことは難しい
  • オフライン評価
    • 検索サービスがエンドユーザに公開されていない状態で行う評価方法
    • テスト環境をつかってテストができるため、試行錯誤をスピード感をもって行うことができる
    • 反面、テストデータを準備する必要がある、サービスで使う場合に入ってくる様々な要因が考慮できない
      • 例えば検索ユーザのバックグラウンド(高校生が検索するのと社会人が検索する場合で結果に差異がでる、など)や検索する時期(夏だったら海水浴グッズが検索より多く検索され、冬だったらスノーボードグッズがより多く検索される、など)などの要因が検索精度に影響する可能性があるが、考慮できない(想定しかできない)

ここでは検索のオフライン評価の手法についてまとめます。

オフライン評価の前提

いずれのオフライン評価でもテストデータが重要になります。
テストデータが間違っているとそれを用いて行なった評価もすべて間違ってしまうことになります。
テストデータとしては以下のようなデータを用意します。

  1. テスト対象のドキュメント群
  2. テスト対象のクエリ群 3-1. テスト対象クエリを実行した際の正解ドキュメントと不正解ドキュメントの分類(ラベル付け)※ DCG / nDCG以外 3-2. テスト対象クエリを実行した際のドキュメントとの関連度にスコアをつけて分類(DCG / nDCG)

11点補完平均適合率

適合率 - 再現率曲線

適合率・再現率・ランキングを加味した評価手法です。
再現率が0.0 〜 1.0までの間を0.1刻みに適合率の値をだします。
それらの値を2次元グラフのy軸に適合率を、x軸に再現率をプロットしたグラフを作ります。 このグラフのことを「適合率 - 再現率曲線」と呼びます。
以下のPDFが参考になります。
検索システムの評価

11点補完平均適合率

「再現率 - 適合率曲線」は1つのクエリに対してのグラフでしたが、11点補完平均適合率では全クエリのグラフの各ポイントについての平均をとったグラフです。
このグラフが右上にある(=再現率をあげても適合率が下がらない)ものほど検索精度が高い、と言えます。
昔から存在する評価手法のようです。

Precision at K

検索結果の上位k件の適合率を計算した結果で評価を行う手法です。
例えば、上位10件以内に適合ドキュメントが5件ヒットする場合、Precision at 10は 5 / 10 = 0.5となります。
直感的でわかりやすい数字ですがクエリ固有の特性に結果が左右されやすいです。

Average Precision(AP:平均適合率)

期待する検索結果k件の適合ドキュメントがヒットするまでに上位何件までの検索結果が存在するかに着目した評価手法です。
検索結果に適合する対象たびに適合率を出し、その算術平均をとった値です。
詳しくは以下の記事が参考になります。
Average Precision(平均適合率)とは
推薦システムの基本的な評価指標について整理してみた

Mean Average Precision(MAP)

APの値は1つのクエリに対する結果についての結果ですが、それを全てのクエリに対して評価を行い、その算術平均をとった値です。
詳しくはAPと同じく以下の記事が参考になります。
推薦システムの基本的な評価指標について整理してみた

以下は2002年のものですが、わかりやすい文章です。
検索実験における評価指標としての平均精度の性質

DCG / nDCG(Discounted Cumulative Gain / Normalized DCG)

検索の評価手法で近年着目されているもののようです。
DCGは大雑把に書くとランキングi番目までの関連度のスコアを計算する手法です。
nDCGには2種類の手法が提案されているようです。どのような検索結果を出したいか、によって使い分ける必要がありそうです。
予測ランキング評価指標:NDCGの2つの定義と特徴の比較

DCGについては以下の記事が参考になります。
【アルゴリズム】Discounted Cumulative Gain(DCG)の理論

DCGは1つのクエリに対する評価手法です。 nDCGはDCGに対して全クエリを適用して正規化した評価手法です。
理想のDCG(Ideal DCG)の並び順を定義した結果を用いて計算します。

nDCG = DCG / IDCG

DCG / nDCGについては以下の記事が参考になります。
ElasticsearchとKuromojiを使った形態素解析とN-Gramによる検索の適合率と再現率の向上 (3/3)

まとめ

今回はSolrの検索の評価についてまとめました。
やはり奥が深いですね。
ただ、サービスをやってる身としてはいくらオフライン評価でいい結果が出ても、本番のサービスをやってみるまでは本当の結果はわからないので、やはり本番サービスに適用して、A/Bテストで良くしていくのが一番いいのかな、という感想です。
オンライン評価についてもいつかまとめたい気持ちです。