Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

推薦システムの評価

評価のタイミング

  • オフライン評価:デプロイ前に、過去のログデータを用いて性能を評価する方法

  • オンライン評価:デプロイ後にA/Bテストで新しい推薦モデルの性能を評価する方法

データの分割方法

オフライン評価の際に、データセットをどう分割するか

  • 無作為分割:普通のホールドアウト法。推薦システムには適さない可能性がある。

  • 時間ベースの分割:ある時点を堺にtrain/testを分ける。将来データへの性能を評価したい場合に有効

  • ユーザーベースの分割:新規ユーザーへの性能を評価したい場合に有効

  • アイテムベースの分割:新規アイテムへの性能を評価したい場合に有効

精度評価指標

一般的な機械学習のように予測精度を評価する場合に使われる指標

レイティング予測の指標

  • RMSE

  • MAE

確率予測の指標

(クリック率予測など)

  • 対数尤度:

 Log-likelihood =(i,j)ΩtestlogPr(yijp^ij)=(i,j)Ωtestyijlog(p^ij)+(1yij)log(1p^ij)\begin{aligned} \text { Log-likelihood } & =\sum_{(i, j) \in \boldsymbol{\Omega}^{\mathrm{test}}} \log \operatorname{Pr}\left(y_{i j} \mid \hat{p}_{i j}\right) \\ & =\sum_{(i, j) \in \boldsymbol{\Omega}^{\mathrm{test}}} y_{i j} \log \left(\hat{p}_{i j}\right)+\left(1-y_{i j}\right) \log \left(1-\hat{p}_{i j}\right) \end{aligned}

ランキング指標

大局的ランキング指標

**大局的ランキング指標(global ranking metrics)**は、モデルによる推定スコアでテストセットを順序付けしたとき、評価の高いユーザー・アイテム対が低い評価の対より上位に順位付けされる度合いを測るもの。

二値分類の場合

二値分類(例:クリック予測)や二値化されうる問題設定の場合、PR曲線やROC曲線を使った評価ができる

それ以外の場合

他の方法としては順位相関がある

局所的ランキング指標

**局所的ランキング指標(local ranking metrics)**は、各ユーザーについてアイテムを個別に順位付けする方法。高評価アイテムが低評価アイテムよりも上位に順位付けされているかどうかを測定し、その後ユーザー間で平均を取る。

二値分類の場合

順位Kでの適合率(P@K)

各ユーザーについて、予測したスコアでアイテムを降順に順位付けする。

上位K個のアイテムのうちの性のアイテムの部分集合

平均適合率の平均(mAP: mean average precision)

P@Kの平均が平均適合率になり、それをユーザーについて平均したものがmAPになる

正規化割引累積利得(nDCG: normalized discounted cumulative gain)

順位kkのアイテムにユーザーiiが正のレイティングを与えた場合pi(k)=1p_i(k)=1で、そうでなければpi(k)=0p_i(k)=0とする。

テストセットにおけるユーザーiiによって評価されたアイテム集合Jitest\mathcal{J}_i^{test}の要素数をnin_iとしたとき

割引累積利得(DCG)を次のように定義する

DCGi=pi(1)+k=2nipi(k)log2kDCG_i = p_i(1) + \sum^{n_i}_{k=2} \frac{p_i(k)}{\log_2 k}

nDCGはユーザーiiの最大DCGで正規化したDCGである

nDCGi=DCGi1+k=2ni+1log2knDCG_i = \frac{DCG_i}{ 1 + \sum^{n_i^+}_{k=2} \frac{1}{\log_2 k} }

ここでni+n_i^+Jitest\mathcal{J}_i^{test}におけるユーザーiiが正のレイティングをしたアイテム数

それ以外の場合

二値分類でない場合や二値分類に変換できない場合、平均順位相関を使用する