- 本稿は、「カムのブログ」に投稿されたブログ記事「ランキング学習~情報検索への機械学習の応用~」を加筆修正して転載したものです。
ランキング学習とは
ランキング学習は英語では“Learning to rank”といって、“LTR”とよく省略されます。英語のWikipediaにあるランキング学習の記事では以下のように定義されています。
"Learning to rank or machine-learned ranking (MLR) is the application of machine learning, typically supervised, semi-supervised, or reinforcement learning, in the construction of ranking models for information retrieval systems." (Wikipediaより)
上記の英文を日本語に訳すと以下のようになります。
「ランキング学習とは情報検索のシステムにおいて、ランキングモデルの構築に適用された機械学習のことです。ランキング学習のアルゴリズムには教師あり学習、半教師あり学習または強化学習があります」
情報検索やランキング学習のことを知らずに上記の定義を読んだらあまりピンとこないかもしれないので、 より分かりやすく説明したいと思います。検索システムで言えば、ランキングとは検索結果の表示順のことを指します。Aというワードを検索して、一番上に表示された結果は1位、その次は2位、という風にランクをつけることができます。
重要なポイントの1つは、返された結果はクエリ・キーワード、ときには「状況・コンテキスト」に対する結果であるという点です。状況・コンテキストとは、例えばユーザの位置情報や検索履歴などといったものです。ヒットされた検索結果はよくURLやリンクと言いますが、本記事では「文書」と呼びます。
クエリに対して一番表示順の良い(関連度が高い順・ユーザが求めている順)文書のリストを返すのがランキング学習の目的です。ランキング学習は、ECサイトの商品検索や動画アプリのおすすめの動画など、ランキングを決定するアプリケーションに広く応用が可能です。
モチベーション
検索エンジンに対して、ユーザがクエリを投げて検索する場面を考えましょう。下の図は、検索エンジンが管理する文書を全体集合とするベン図です。右側の円は、ユーザがクエリQを検索したときに、検索エンジンから返してほしいと考える文書集合を表します。一方、左側の円はクエリQを検索したときに実際に検索エンジンから返される文書集合です。
右側と左側の円が重なっている部分Bはシステムが正しく返せた文書集合と言えます。左側の円のうち、右側の円と重なっていない部分Aはシステムが誤って返してしまった文書集合で、「検索誤り」と言い、逆にCは「検索漏れ」と言います。
検索漏れと検索誤りを完全になくすのが理想的ですが、それは非常に難しいことです。検索システムができるのは(A+B)を大きく、または小さくすることです。例えば小さくすると、検索誤りを減らすことができますが、検索漏れが悪化します。
それに対して大きくすると、ユーザの要らない文書が多くなり、求めている文書が見つかりにくくなるので検索誤りが悪化します。
検索漏れと検索誤りはトレードオフの関係にあり、この関係は適合率と再現率のトレードオフで説明できます。検索結果のうちにどの程度正しい(返してほしい)結果が含まれるかを示す適合率(P:Precision)と、返してほしい結果のうち、どの程度が実際に検索結果として表れるかを示す再現率(R:Recall)は以下のように表現できます。
再現率も適合率も1が最大値です。図3のように左側の円を大きくすると、(A+B)>>Bなので適合率が下がりますが、(B+C)≒Bなので再現率が上がります(1に近づきます)。一方、図2のように左側の円を小さくすると、(A+B)≒Bなので適合率が上がり、(B+C)>>Bなので再現率が下がります。
Aが大きくなることで適合率が下がる問題の解決策として、ランキング学習が使えます。Bに含まれる文書を上位に表示されるようにランキングを調整すれば、ユーザが求めている情報が見つかりやすくなります。
ランキング学習では、まず通常の検索結果の上位N件を抽出します。次に、ランキング学習によって得られたモデルを使って、このN件をリランクすることでランキングをさらに改善します。
例えばECサイトでは、ランキングの精度が1パーセント上がるだけで売り上げが大きく変わることもあります。そのため、上位N件のリランクといった、わずかな検索精度の向上であってもそれに挑む価値はあります。