【基础】推荐系统常用评价指标Recall、NDCG、AUC、GAUC

2022-09-19 11:45:39 浏览数 (1)

本文主要和大家分享推荐系统中的常用评价指标,包括NDCG,Recall,AUC,GAUC等。

混淆矩阵用于反映预测和真实的对应样本数,例如TP反映预测为真的样本也是正样本的样本数。

正样本

负样本

预测为真

TP

FP

预测为假

FN

TN

公式表格太长可以左右滑动哦!

1. 召回阶段

1.1 Recall

召回率(Recall)是推荐系统在召回阶段常用的评价指标。在其他领域我们也经常会看到Recall作为评价指标,其含义为在正样本中有多少被预测为真

recall=frac{TP}{TP FN}

。那么在推荐系统中,我们通常可以通过

recall_u=frac{|R(u)cap T(u)|}{|T(u)|}

。其中u为用户,R(u)为模型预测出的需要推荐的item的集合,T(u)表示真实的测试集中被推荐的集合。对每一个用户求得recall后求平均就可以得到整个数据集上的recall。

1.2 Precision

Precision的含义为预测为真的样本中有多少为正样本

Prec=frac{TP}{TP FP}

。在推荐系统中可以计算为

Prec_u=frac{|R(u)cap T(u)|}{|T(u)|}

。对每个用户求得prec后求平均就可以得到整个数据集上的prec。

1.2 NDCG

这个评价指标名为Normalized Discounted cumulative gain直接翻译为归一化折损累计增益。它有一些前辈,我们先来介绍一下他的前辈们,然后再来介绍NDCG。

1.2.1 CG

cumulative gain(CG)可翻译为累积增益,该评价指标只考虑相关性而没有考虑位置的影响。其计算方式也比较简单,对搜索相关性进行求和,公式如下,在推荐系统中,

rel_i

表示第i个位置的item是否是用户喜欢的,喜欢为1,否则为0。CG只能反映总体情况,即反映该页面中推荐的所有item的总分是好是坏。

CG=sum_{i=1}^{p}{rel_i}

1.2.2 DCG

discounted CG简称为DCG,这对CG的问题,DCG的计算方式考虑了位置因素。例如,被推荐的item排在第1位和排在第10位,他们的影响力是不同的,肯定是第1位的影响力更大。因为用户进去第一眼就能看到第1位的item。计算公式如下,第1位不需要衰减,而随着位次不断靠后,其影响力也不断减弱。

DCG=rel_1 sum_{i=2}^{p}{frac{rel_i}{log_2 i}}

还有一种计算DCG常见的公式,如下式所示:

DCG=sum_{i=1}^{p}{frac{2^{rel_i}-1}{log_2(i 1)}}

1.2.3 NDCG

ok,千呼万唤始出来,终于来到我们的主角了。搜索结果,或者召回结果,推荐结果等,这些结果是一个集合,对于不同的关键词,或者不同的用户系统返回的结果数量是不同的。而上面的CG和DCG他们只是单纯的进行求和,无法进行不用用户之间的对比,因此需要对其进行标准化,从而诞生了NDCG。这里对DCG进行标准化的方式是对其处以IDCG,公式如下:

NDCG=frac{DCG}{IDCG}
IDCG=sum_{i=1}^{|REL|}{frac{2^{rel_i}-1}{log_2(i 1)}}

其中REL表示将原始的召回集合R按照得分从大到小排序后的集合,将排序后的集合计算DCG得到IDCG。标准化后得到的NDCG是一个相对值,从而使得即使不同的用户之间可以进行比较。IDCG表示的是召回的集合中的item用户都喜欢的最理想情况。所以IDCG中的分子部分其实都是1。

2. 排序阶段

2.1 AUC

AUC(area under Curve),是ROC曲线下的面积,具体概念这里不赘述了。AUC能反映模型的排序能力,他反应的是一个相对性,即item a排在item b之前的能力;但是它不反应绝对性,例如,0.9排在0.1前面和0.5排在0.1前面对他来说是一样的。推荐系统中AUC可以通过下式计算,其中R为推荐的item集合,

delta(x)

表示当x为true时,它为1;反之为0。

begin{aligned} operatorname{AUC}(R)_{n} &=frac{1}{|R|(n-|R|)} sum_{r in R} sum_{r^{prime} in({1, ldots, n} backslash R)} deltaleft(r < r^{prime}right) \ &=frac{n-frac{|R|-1}{2}-frac{1}{|R|} sum_{r in R} r}{n-|R|} end{aligned}

2.2 GAUC

AUC他是从总体上反应模型的性能,但是无法从更加个性化的角度进行分析。推荐系统本身是针对不同用户进行个性化推荐,因此有时候我们在进行分析的时候不能只看整体的AUC。GAUC是AUC的改进版,将样本进行分组后,在组内计算AUC。计算公式如下,其中w为每个分组中的对应的权重,可以是点击次数,观看时长,停留时间等。

G A U C=frac{sum_{g_{i}} w_{g_{i}} * A U C_{g_{i}}}{sum w_{g_{i}}}

这里举个栗子:(来源https://blog.csdn.net/hnu2012/article/details/87892368) 假设有两个模型A,B;有两个用户甲、乙; 表示正样本,-表示负样本,我们按照预测值从小到大排序后得到下表

模型A

甲-

乙-

模型B

甲-

乙-

则可以计算得到总体的AUC为:AUC(A)=0.833,AUC(B)=0.667。但是如果我们分人群的话,对于甲乙而言,两个模型是一样好的。大家可以自己计算一下分人群后的AUC。

2.4 LogLoss

通常还会计算一下LogLoss来进行对比,这里就不赘述了,LogLoss就是我们在训练模型用到的损失函数。

0 人点赞