多様性の観点から検索/推薦モデルをオフライン評価する

多様性指向評価とは

背景

検索/推薦の精度評価には、accuracy-baseなもの(精度、正解率、ランキングなど)が評価としてよく使われます。NetflixやSpotifyなどは、ユーザの好みを開拓するレコメンドを評価するため、多様性、新規性、意外性などの観点からも評価すべきと述べています。本記事では、多様性、新規性、意外性の3つの指標を紹介します。

前提条件

$prefs(i)$:コンテンツ$i$を消費した人数
$prefs(i,j)$:コンテンツ$i$と$j$両方を消費した人数
$U$:ユーザーの集合
$R_{u}$:ユーザー$u$に推薦するアイテムの集合
$H_{u}$:ユーザー$u$が消費したアイテムの集合

多様性:Diversity

内容の似ていないアイテムどうしがレコメンドされている状態を、多様性と定義します。
$$ diversity = \frac{1}{|U|}\sum_{u\subseteq U}\sum_{i,j\subseteq R_{u}, i<j}\frac{\sqrt{prefs(i)}\times \sqrt{prefs(j)}}{prefs(i,j)} $$

新規性:Novelty

そのアイテムを消費したユーザーの少なさを、新規性として定義します。
$$ novelty = \frac{1}{|U|}\sum_{u\subseteq U}\sum_{i\subseteq R_{u}}\frac{\log_2 \frac{|U|}{prefs(i)}}{|R_{u}|} $$

意外性:Serendipity

過去にユーザーが消費したアイテムと、レコメンドアイテムが似通っていない状態を、意外性と定義します。
$$ serendipity = \frac{1}{|U|}\sum_{u\subseteq U}\frac{1}{|H_{u}|}\sum_{h\subseteq H_{u}} \sum_{i\subseteq R_{u}} \frac{\sqrt{prefs(i)}\times \sqrt{prefs(h)}}{prefs(i,h)} $$

注意点

多様性指向評価については、ネットで調べると複数の定義が出てきますが、ユーザの好み(prefs)を考慮するものが現在は優勢であると考えられています。本記事でもユーザの好みを考慮した定義を採用しています。

多様性指向評価の実装

prefs関数の定義

ここで、消費データ($H$)と推薦データ($R$)については
dataset:過去の消費データ[dataframe:"user_id","item_id"]
df_recommend_list:推薦データ[dataframe:"user_id","item_id"]
とします。

ユーザーごとの多様性の計算

ユーザーごとの新規性の計算

ユーザーごとの意外性の計算

多様性指向評価の計算

これらの多様性指向の評価を取り入れることにより、新規作成した検索/推薦モデルについて、実サービスに出さずともバイアスの影響を受けずにオフライン評価することが可能です。