こんにちは、株式会社ネクスト 清田です。
ネクストでは、HOME'Sをはじめとしてネクストが提供する情報サービスに新たな価値を加えるため、膨大なデータベースから最適な情報を提示する検索技術や、潜在的なニーズを抽出して一人ひとりにぴったりな情報を提供するレコメンデーション エンジンの研究開発に日々取り組んでいます。このブログでも、オープン ソースの全文検索エンジンSolrの拡張などの活動を紹介してきています。
今回は、情報検索やレコメンデーションの研究を行う上でどうしても避けられない、「評価」にまつわる話題を紹介します。
情報検索システムの評価とは?
情報検索システムの研究には長い歴史があり、研究の「評価」に使われる指標が確立しています。情報検索システムの研究で最も良く使われるのは、「再現率」と「精度」という2つの指標です。「再現率」(recall)とは「ユーザーのニーズに合った情報のうち、検索にヒットした情報の割合」、「精度」(precision)とは「検索にヒットした情報のうち、ユーザーのニーズに合った情報の割合」のことです。
近所の図書館で「プログラミング言語の学習」について書かれた本を借りる場合を例にとって説明します。この図書館では、「プログラミング言語の学習」について書かれた本が10冊あります。あなたが図書館のロビーに置いてある検索端末で「プログラミング言語」というキーワードで検索すると、20冊の本がヒットしたとします。ヒットした20冊の中には、あなたが探していた「プログラミング言語の学習」についての本は8冊あり、その他の12冊は、「プログラミング言語の開発」や「プログラミング言語の歴史」など、あなたが探しているものとは違う本だったとしましょう。
再現率は、あなたが探していてかつ見つかった8冊を、図書館の中であなたが探している本すべての冊数10冊で割ったもの、すなわち80%です。いっぽう精度は、あなたが探していてかつ見つかった8冊を、ヒットしたすべての本の冊数20冊で割ったもの、すなわち40%です。再現率と精度は、100%に近ければ近いほど「良い検索システム」であるということになります。理想の検索システムは再現率、精度ともに100%のシステムということになりますが、多くの場合、再現率と精度はトレード オフの関係にあります。
例えば、具体的なプログラミング言語の名前(C、JavaやPython)を検索キーワードとして自動的に追加すれば、再現率を上げることができますが、多くの場合は精度が下がってしまいます(「ベンツCクラス」や、「ジャワ(Java)島」、「モンティ・パイソン」についての本もヒットしてしまうから)。逆に精度を上げようとすれば再現率は下がってしまいます。このトレードオフの存在を前提に、できるだけ再現率・精度ともに高くしようという努力の積み重ねが、今日の検索エンジン技術の土台となっています。
現実の情報検索システムの評価にまつわる問題
しかし、再現率や精度という指標は、Webの爆発的な普及にともなって出現してきた新しいタイプの情報検索システムには、必ずしも使えなくなってきています。たとえばHOME'Sでは、日本全国の300万件以上の物件データベースの中からあなたが探したい物件を自由に検索することができますが、そもそも「あなたが探したい物件」が300万件のデータベースの中に何件含まれるのかを知ることは不可能です。ある物件があなたの本当に探しているものかどうかは、HOME'Sで探して不動産会社さんを訪問し、物件を見学することによってはじめて分かります(実際にはしばらく住んでみないと分からないこともあるでしょう)。全国の300万件の物件をすべて見学することは一生かけても無理ですし、探す地域を限っていたとしても、そのエリアのすべての物件を調べるほどの時間はとれないことが多いでしょう。
図1. 工学的アプローチによる情報検索システム研究のモデル
情報検索システムには、評価を難しくする本質的な課題があります。再現率・適合率を測るためには、図1に示すように、情報検索システムを「入力」と「出力」を持つブラックボックスとしてとらえ、どの「入力」に対してどのような「出力」が正しいのかを決めておく必要があります。しかし、現実の情報検索システムには必ず「人間」がユーザーとして関わっています。例えばHOME'Sというサービスは、皆さん一人ひとりの「家探し」というニーズの上に成り立っています。そのため、情報検索システムを評価するためには、必ずユーザーとしての人間を巻き込まなければなりません(図2)。
図2. 現実世界の情報検索システムのモデル
次回の記事では、情報検索システムの評価に人間を巻き込むこと、すなわちユーザベースの評価をする際に、何を考える必要があるかについて紹介します。