検索における適合率 (Precision) と再現率 (Recall)
2008-01-17-1
[IIR]
「Introduction to Information Retrieval」[1] の輪講の第一回[2008-01-12-1]でちらっと話しましたが、第一章の 1.1 に Precision と Recall の説明があります(第八章でも出てきます)。
若干混乱しやすくややこしい話なので、ここで改めて解説します。
§
Precision (適合率) とは、
全検索結果に対しての、
検索要求 (information need) を満たす検索結果の割合です。
例えば、
「MacBook Air の重量を知りたい」という検索要求を満たすために検索キー「MacBook Air 重さ」でウェブ検索した結果100件のうち、検索要求を満たす(重さが分かる)のが85件だとすると、
Precision は 85/100 = 0.85 となります。
Recall (再現率) とは、
検索要求を満たす全ドキュメントに対しての、
検索要求を満たす検索結果の割合です。
例えば、
全ウェブ上に「MacBook Air の重量」について書かれたページ(つまり「MacBook Air の重量を知りたい」という検索要求を満たすページ)が90件あると分かっているとします(実際は分かりようがありませんが)。
この場合、前の例と同じように、『「MacBook Air の重量を知りたい」という検索要求を満たすために検索キー「MacBook Air 重さ」でウェブ検索した結果100件のうち、検索要求を満たす(重さが分かる)のが85件』だとすると、
Recall は 85/90 ≒ 0.94 となります。
冗長かと思いますが、図でも説明してみます。
図中の A が検索結果、 B が検索要求を満たすページ、
重なっている部分 C が検索結果に含まれる「検索要求を満たすページ」です。
Precision は C / A、 Recall は C / B で計算されます。
Precision と Recall の関係について説明します。
基本的に Precision と Recall にはトレードオフの関係にあります。
単順にどちらかを高くするともう一方が低くなりがちです。
検索結果にゴミは少ないんだけど取りこぼしが多い、
というのが Precision が高くて Recall が低い状況。
例えば、ライフハックについてくまなく情報を集めよう、キーワード「ライフハック」でウェブ検索すると、検索結果にはライフハックに関係ないページは少ないけど (高 Precision)、「Life Hacks」とローマ字でしか表記していない(カタカナ表記が一切ない)ページは取りこぼされます (低 Recall)。
逆に Precision が低くて Recall が高いのは、
検索結果を一気に1,000件見てみると欲しい情報はほぼ網羅されているんだけど他のほとんどが無関係なページ、といった状況。
例えば、車での急ブレーキ時にタイヤがロックする防ぐ装置「ABS」について調べようと、キーワード「ABS」でウェブ検索して、大量の検索結果を見てみると、重要なページはほぼ網羅 (高 Recall) されている一方、秋田放送やボウリング関連の会社や樹脂などの検索意図とはまったく異なる ABS についてのページが多数出てノイズとなってしまいます (低 Precision)。
高品質の検索エンジンを目指すには Precision と Recall の両方が高くなるようにいろいろと調整を加えていきます。
ということで、Precision と Recall を組み合わせた F値 (F measure) という評価尺度がよく使われています。F値は下記の式で計算されます。
先ほどの「MacBook Air の重量」の例では、
Precision = 0.85、Recall ≒ 0.94 だったので F値 ≒ 0.89 となります。
(間違いや補足などありましたら下記フォームからご連絡頂けると幸いです)
若干混乱しやすくややこしい話なので、ここで改めて解説します。
§
Precision (適合率) とは、
全検索結果に対しての、
検索要求 (information need) を満たす検索結果の割合です。
例えば、
「MacBook Air の重量を知りたい」という検索要求を満たすために検索キー「MacBook Air 重さ」でウェブ検索した結果100件のうち、検索要求を満たす(重さが分かる)のが85件だとすると、
Precision は 85/100 = 0.85 となります。
Recall (再現率) とは、
検索要求を満たす全ドキュメントに対しての、
検索要求を満たす検索結果の割合です。
例えば、
全ウェブ上に「MacBook Air の重量」について書かれたページ(つまり「MacBook Air の重量を知りたい」という検索要求を満たすページ)が90件あると分かっているとします(実際は分かりようがありませんが)。
この場合、前の例と同じように、『「MacBook Air の重量を知りたい」という検索要求を満たすために検索キー「MacBook Air 重さ」でウェブ検索した結果100件のうち、検索要求を満たす(重さが分かる)のが85件』だとすると、
Recall は 85/90 ≒ 0.94 となります。
冗長かと思いますが、図でも説明してみます。
図中の A が検索結果、 B が検索要求を満たすページ、
重なっている部分 C が検索結果に含まれる「検索要求を満たすページ」です。
Precision は C / A、 Recall は C / B で計算されます。
Precision と Recall の関係について説明します。
基本的に Precision と Recall にはトレードオフの関係にあります。
単順にどちらかを高くするともう一方が低くなりがちです。
検索結果にゴミは少ないんだけど取りこぼしが多い、
というのが Precision が高くて Recall が低い状況。
例えば、ライフハックについてくまなく情報を集めよう、キーワード「ライフハック」でウェブ検索すると、検索結果にはライフハックに関係ないページは少ないけど (高 Precision)、「Life Hacks」とローマ字でしか表記していない(カタカナ表記が一切ない)ページは取りこぼされます (低 Recall)。
逆に Precision が低くて Recall が高いのは、
検索結果を一気に1,000件見てみると欲しい情報はほぼ網羅されているんだけど他のほとんどが無関係なページ、といった状況。
例えば、車での急ブレーキ時にタイヤがロックする防ぐ装置「ABS」について調べようと、キーワード「ABS」でウェブ検索して、大量の検索結果を見てみると、重要なページはほぼ網羅 (高 Recall) されている一方、秋田放送やボウリング関連の会社や樹脂などの検索意図とはまったく異なる ABS についてのページが多数出てノイズとなってしまいます (低 Precision)。
高品質の検索エンジンを目指すには Precision と Recall の両方が高くなるようにいろいろと調整を加えていきます。
ということで、Precision と Recall を組み合わせた F値 (F measure) という評価尺度がよく使われています。F値は下記の式で計算されます。
F = 2 / ( 1 / Recall + 1 / Precision )F値は Precision と Recall の双方の値が大きいほど大きくなります[2]。
先ほどの「MacBook Air の重量」の例では、
Precision = 0.85、Recall ≒ 0.94 だったので F値 ≒ 0.89 となります。
参考文献
- [1] Christopher D. Manning, Prabhakar Raghavan and Hinrich Schu"tze: Introduction to Information Retrieval, Cambridge University Press, 2008.
- [2] 北研二, 津田和彦, 獅々堀正幹: 情報検索アルゴリズム, 共立出版, 2002.
- [3] 徳永健伸: 情報検索と言語処理, 東京大学出版会, 1999.
(間違いや補足などありましたら下記フォームからご連絡頂けると幸いです)