推荐算法之评价指标

5,725 阅读10分钟

女神图开篇

前言:重难点在AUC

一、离线评价

1)评分预测的指标

1.MAE

MAE(Mean absolute error)

MAE = \frac 1 n \sum_{(u,i)}^{}\left| p_{ui}-r_{ui} \right|
  • p_{ui} 是预测评分,r_{ui} 是实际评分

2.MSE

MSE(Mean square error),均方误差

MSE = \frac 1 n \sum_{(u,i)}^{} (p_{ui}-r_{ui})^2

3.RMSE

RMSE(Root Mean square error),均方根误差(又称标准误差)

RMSE = \sqrt {\frac 1 n \sum_{(u,i)}^{} (p_{ui}-r_{ui})^2}

与MSE有啥区别?

4.NMAE

NMAE(Normalized Mean absolute error ),单个用户u的标准平均绝对误差

NMAE = \frac {MAE} {r_{max}-r_{min}}

2)基于分类的指标

1.Precision & Recall

对于二分类问题有:混淆矩阵(confusion matrix)

样本是正类别 | 正样本 样本是负类别 | 负样本
模型预测为正 TP (true positive,真正例) FP (false positive,假正例)
模型预测为负 FN(false negative,假负例) TN (true negative,真负例)
  • Precision(精确度) :真正为正例的样本数 在 所有预测为正例的样本数 的比例

通俗理解:我只关心正样本,预测的正样本中有多少比例是对的

Precision = \frac {TP} {TP+FP}
  • Recall(召回率): 预测为正例的样本数 在 所有正例的样本数 的比例

通俗理解:我只关心正样本,正样本有多少比例我预测对的

Recall = \frac {TP} {TP+FN}
  • ACC(accuracy):准确率(一般不用)
ACC = \frac {TP+TN} {TP+FP+FN+FP}
  • F-score

F-score用来综合Precision和recall

F-Score = (1+\beta^2)\cfrac{Precision\cdot Recall}{\beta^2\cdot Precision + Recall}

\beta = 1 时,则为 F_{1}-score 为几何平均数

F_{1}-score = \frac {2  P  R } {P+ R}

2. ROC AUC

ROC概念

ROC(Receiver Operating Characteristic),接收者操作特征曲线。wiki解释

ROC空间将伪阳性率(FPR)定义为 X 轴,真阳性率(TPR)定义为 Y 轴。

  • TPR(真阳性率):在所有实际为阳性的样本中,被正确地判断为阳性之比率 TPR = \frac {TP} {TP+FN}

  • TNR(真阴性率):TN / (FP + TN) = 1-FPR 。

  • FPR(假阴性率):在所有实际为阴性的样本中,被错误地判断为阳性之比率 TPR = \frac {FP} {FP+TN}

  • 老是忘记roc曲线的坐标含义,下面是记忆法:首先记住纵轴是TPR,就是recall 。要懂recall是以正样本为中心观察的,正样本被召回来多少。那对应的,也要以负样本为中心,负样本的召回率就是横坐标,正样本的召回率就是纵坐标

  1. 给定一个二元分类模型和它的阈值**,就能从所有样本的(阳性/阴性)真实值和预测值计算出一个 (X=FPR, Y=TPR) 座标点。

  2. 从 (0, 0) 到 (1,1) 的对角线将ROC空间划分为左上/右下两个区域,在这条线的以上的点代表了一个好的分类结果(胜过随机分类),而在这条线以下的点代表了差的分类结果(劣于随机分类)。

  3. 完美的预测是一个在左上角的点,在ROC空间座标 (0,1)点,X=0 代表着没有伪阳性,Y=1 代表着没有伪阴性(所有的阳性都是真阳性)

AUC概念
  • 上述ROC空间里的单点,是给定分类模型且给定阈值后得出的。但同一个二元分类模型阈值可能设定为高或低,每种阈值的设定会得出不同的FPR和TPR。
  • 同一模型每个阈值 的 (FPR, TPR) 座标都画在ROC空间里,就成为特定模型的ROC曲线
  • ROC曲线下方的面积(英语:Area under the Curve of ROC (AUC ROC))
  • 我的理解:TPR为正样本的召回率,FPR为负样本的分错率。故TPR越大越好,FPR越小越好
  • 若随机抽取一个阳性样本和一个阴性样本,分类器正确判断阳性样本的值高于阴性样本之几率 = AUC
AUC的两种求法
  1. 梯形近似算面积
  2. 概率法 (参考)
  • 对于二分类问题,预测模型会对每一个样本预测一个得分s或者一个概率p。 然后,可以选取一个阈值t,让得分s>t的样本预测为正,而得分s<t的样本预测为负。

  • 对于真正率TPR,分子是 得分>t里面 正样本的数目,分母是总的正样本数目。 而对于假正率FPR,分子是 得分>t里面 负样本的数目,分母是总的负样本数目。

  • 如果定义 N_{+}(t)为得分>t里面 正样本的数目,N_{-}(t)为得分>t里面 负样本的数目;定义N_{+}为总的正样本数目,N_{-}为总的负样本数目,则TPR,FPR可表示为:

    TPR(t)=\frac {N_{+}(t)} {N_{+}}  \quad \qquad \quad  FPR(t)= \frac {N_{-}(t)} {N_{-}}
  • 随着阈值t的变化,TPR和FPR在坐标图上形成一条曲线,这条曲线就是ROC曲线。

  • 如果模型是随机的,模型得分对正负样本没有区分性,那么得分大于t的样本中,正负样本比例和总体的正负样本比例应该基本一致。 即有

    \frac {N_{+}(t)} {N_{-}(t)} = \frac {N_{+}} {N_{-}}

结合上面的式子可知TPR和FPR相等,对应的ROC曲线是一条直线!

AUC概率解释
  • 对于分类器C,对于任意样本,有一个模型预测输出值s。对于一对正负样本,分类器预测正样本得分为 s_{+} 预测负样本得分为s_{-}
  • 假设阈值为t,负样本得分在 [t,t+\Delta t  ] 之间的概率为:
\begin{align*}& \quad P(t<s_{-}<t+\Delta t) \\& = P(s_{-}>t)-P(s_{-}>t+\Delta t) \\& = \frac {N_{-}(t)-N_{-}(t+\Delta t)} {N_{-}} \\& = x(t) - x(t+\Delta t) = -\Delta x(t)  \end{align*}
  • 负样本得分在 [t,t+\Delta t  ] 之间 , 且正样本得分比负样本高的概率为
\begin{align*}& \quad P(s_{+}>s_{-} \ |\ t<s_{-}<t+\Delta t) \\& \approx_{\Delta t \to 0} P(s_{+}>t) = \frac {N_{+}(t)} {N_{+}} \\& = PTR = y(t)\end{align*}

上面计算的是某个阈值的情况,便利所有情况则得到对任意阈值,正样本得分比负样本高的概率

  • \begin{equation}\begin{aligned}& P(s_{+}>s_{-})  \\& = \sum_{t=-\infty}^{\infty} P(t<s_{-}<t+\Delta t)P(s_{+}>s_{-} \ |\ t<s_{-}<t+\Delta t)   \\& = \sum - \Delta x(t)\cdot y(t) = -\int_{t=-\infty}^{t=\infty} y(t)\,dx(t ) \\& = \int_{x=0}^{x=1}y(x)\,d(x) \qquad \qquad note:{x=x(t)} \in(0,1) \\& = Area_{\,under \,ROC}\end{aligned}\end{equation}

积分项里面实际上是这样一个事件的概率:随机取一对正负样本,负样本得分为t且正样本大于t。因此,对这个概率微元积分就可以到正样本得分大于负样本的概率。所以ROC曲线下面积等于:随机取一对正负样本,正样本得分比负样本高的概率

AUC的排序特性

参考

  • AUC指的是模型将正样本排在负样本前面的概率,所以,AUC常用在排序场景的模型评估,比如搜索和推荐等场景
  • 根据概率解释,如果将所有的样本的得分都加上一个额外的常数,并不改变这个概率,因此AUC不变。 因此,在广告等需要绝对的点击率场景下,AUC并不适合作为评估指标,而是用logloss等指标。
  • 利用概率解释,还可以得到AUC另外一个性质,对正负样本比例不敏感。如果进行随机负采样,负采样的新样本中s_{-}>(t)s_{-}<(t)的比例不变(因为是随机采样),不影响PFR,与影响AUC,AUC不变。

用排序方法来计算AUC

  1. 假设测试集有N_{+}个正样本, N_{-}个负样本,正样本自身原本有排序(如搜索结果有最优,次优)。正样本自身排序为1、2、3...j...N_{+}。对于所有正负样本,模型都有预测得分,依次排序为1、2、3...r_{j}...(N_{+}+N_{-})
  2. 对于第j个正样本,模型预测给出得分,其得分排序位为r_{j} (从小到大排,分数最低的为第1位。也可以得分最高为1位,思想不变) ,意味着有r_{j}-j个负样本(得分比它小)排在该正样本前面。那么随机取一个负样本,其得分比该正样本得分低的概率为(概率随机分布): (r_{j}-j)/N_{-}
  3. 所以平均下来,随机取正样本比随机取负样本得分大的概率为
P(s_{+}>s_{-}) = \frac {1}{N_{+}}\sum_{j=1}^{N_{+}} \frac {r_{j}-j} {N_{-}} = \cfrac {\sum_{j=1}^{N_{+}}r_{j} \quad - N_{+}\cdot (N_{+}+1)/2 } {N_{+}\cdot N_{-}} = AUC

具体来讲是:

  1. 首先把所有样本按照模型预测得分score排序依次用rank表示它们
  2. 如最大score的样本,rank=n(其中n=N+M,N为负样本数,M为正样本数),其次为n-1
  3. 然后把所有正样本的rank想加,再减去两个正样本组合的情况
  4. 得到所有样本中有多少对正类样本的score大于负类样本的score,然后再除以M\times N
AUC = \frac {\sum_{i\in (positive \ class)}rank_i - \frac {M(M+1)}{2}} {M\times N}

auc 代码参考

3)基于排序的指标

1.MAP

  • AP(average precision):对不同召回率点进行平均,是“顺序敏感的recall” 。在一次检索排序结果中,正样本有r个,排序很重要,每个位置有不同权重 。r_{j}是第j个正样本的排序位置
AP = \frac {1} {r} \sum_{i=1}^{r}\frac {i} {r_{j}}   \qquad \qquad 与下图公式等效
AP表示
  • MAP(Mean average precision) 是对所有用户AP取平均 参考

2.NDCG

  • G(Gain):列表中item的相关性分数(根据场景定义) Gain=r(i)

  • CG(Cumulative Gain):累积增益,对K个item收益累加 CG@K=\sum_{i=1}^{K}r(i)

  • DCG(Discounted Cumulative Gain):折扣累积增益。考虑位置因素,不同位置进行对数折扣

DCG@K = \sum_{i=1}^{K}\frac {r(i)} {\log_2 {(i+1)}}
  • NDCG(Normalized Discounted Cumulative Gain)

对一个用户对推荐列表可以计算DCG,但不同用户评判不同,需要归一化才可以比较。IDCG(最优排序的DCG,如正样本都排在前面) 。 NDCG@K = \frac {DCG@K} {IDCG}

3.MRR

  • MRR(Mean Reciprocal Rank): MRR = \frac {1}{Q} \sum_{i=1}^{Q}\frac{1}{rank_i}
  • Q是用户的个数,rank_i是对于第i个用户,推荐列表中第一个在ground-truth结果中的item所在的排列位置。
  • 举例:有三个用户,推荐列表中正例的最小rank值分别为3,2,1,那么MRR=(1 + 0.5 + 0.33) / 3 = 0.61

4)其它指标

1.Coverage

覆盖率最简单的定义是,推荐系统能够推荐出来的物品占总物品的比例。覆盖率越高表明模型能够针对更多的item产生推荐,从而促进长尾效应的挖掘。

2.HR

  • Hit rate,在top-K推荐中,HR是一种常用的衡量召回率的指标.分母是所有的测试集合,分子式每个用户top-K推荐列表中属于测试集合的个数的总和。
  • 分母是所有的测试集合,分子式每个用户top-K推荐列表中属于测试集合的个数的总和。
  • 举例:三个用户在测试集中的商品个数分别是10,12,8,模型得到的top-10推荐列表中,分别有6个,5个,4个在测试集中,那么此时HR的值是 (6+5+4)/(10+12+8) = 0.5。参考
HR@K = \frac {Number\ of \ hits} {Number\ of\ tests }

3. ARHR

ARHR(Average Reciprocal Hit Rank)也是目前Top-N推荐中十分流行的指标,它是一种加权版本的HR,它衡量一个item被推荐的强度。

二、在线评价

1.A/B Test