最近想起总结一下常用的推荐指标了,觉得这也是最基础的知识点吧。不过这个也不是很全,只是将一些我认为基础的常用的进行了一下总结,后续在任务中遇到其他的再进行补充吧。
比如我们常听到的AUC, MAP(Mean Average Precison), HR(Hit Ratio),NDCG(Normalized Discounted Cumulative Gain),等。
这些内容, 这里就不整理了,这几个主要是评价二分类问题中模型的性能好坏, 我之前已经有非常详细的一篇文章进行梳理, 这里面最重要的就是AUC, 这个计算一定要会, 计算代码也得会手撸, 具体参考:
推荐系统之ROC和AUC详解
通过这两篇文章, 应该可以把ML里面常用的评估指标和损失函数给拎起来, 这里面分类的重点就是AUC, 这个面试一般必考。下面开始介绍另外一些指标, 下面这些,主要是衡量的推荐列表topK的评价了。
在top-k里面,HR是一种常用的衡量召回率的方式,也是很容易理解的一种排序方式。先看一下计算公式:
分母是所有测试集合, 分子表示每个用户top-K列表中属于测试集合的个数总和。举个简单的例子,三个用户在测试集中的商品个数分别是10,12,8,模型得到的top-10推荐列表中,分别有6个,5个,4个在测试集中,那么此时HR的值是(10+12+8)/(6+5+4)=0.5。
这一些关于精准率和召回率的内容我也早就已经写过,并且在文尾还进行了总结,大家可以去看看。
目标检测指标mAP详解
简写有点不太好记,翻译过来的中文是:归一化折损累计增益。叫起来很拗口也很不好记。但是接下来一步步的进行拆分就好记了很多。
1、累计增益(CG)
对于一个用户,模型会对这个用户的items进行一个预测,假设当前模型预测的items有p个,则CG就是将这p个预测分数进行相加,就是当前用户的累计增益:
上面就是CG,非常简单,就是相关分数整之和, 但是有个问题就是并没有考虑item的位置, 比如理想的排序结果是B3, B2, B1, 那么我最终推荐列表是B1, B3, B2, 对于CG来说, 是一样的。
2、折损累计收益(DCG)
为了解决每个推荐结果为止产生的影响,我们总是希望和用户相关性高的排在前面,相关性低的排在后面,显然,如果相关性低的结果排在靠前的位置会严重影响用户的体验,所以在CG的基础上引入位置影响因素,即DCG(Discounted Cumulative Gain),这里指的是对于排名靠后推荐结果的推荐效果进行“打折处理”。排序越往后, 价值就越低。
这个地方理解起来,就是对于所处位置进行了个加权, 权重大小是,排名越靠后,权重越小, 那么带有加权之后的CG就是:
这就是DCG, 在CG的基础上位置加权, 两个结论:
推荐结果的相关性越大,DCG越大
相关性好的排在推荐列表前面的话,推荐效果越好,DCG越大。
而NDCG的话,其实就是想让不同的用户推荐列表之间进行一个横向的评估。因为上面的DCG和CG, 目前都是用一个用户来说的, 看起来计算也非常简单, 但是如果多个用户的结果进行比较呢? 或者,如何得到最终的平均值呢? 这个就不能直接DCG平均了, 因为DCG里面的计算过程里面用到了整个的排序列表, 而这个排序列表,显然, 每个用户是不同的, 所以不能平等的简单相加除以用户总数, 所以NDCG的意思,就是先每个用户DCG归一化, 然后再所有用户求平均, 再简单点理解,就是每个用户DCG求平均的时候,需要加个权。 加权之后的DCG就是NDCG。
3、归一化折损累计增益(NDCG)
DCG仍然有不足之处,即不同的推荐的推荐列表之间,很难进行横向的评估,而我们评估一个推荐系统不可能仅使用一个用户的推荐列表及相应结果进行评估,而是对整个测试机中的用户及其推荐列表结果进行评估.那么不同的用户的推荐列表的评估分数就需要进行归一化,因为每个用户对于模型来说推荐的items各不相同,所以需要想去一个办法将它们根据自己的特性进行平等对比,这个时候就可以想到进行‘归一化’这样就可以横向对比了。
介绍NDCG之前还需要知道另一个概念,IDCG(Ideal DCG),指推荐系统为某一用户返回的最好推荐结果列表,即假设返回结果按照相关性排序,最相关的结果放在前面,此序列的DCG为IDCG.因此DCG的值介于(0,IDCG],故NDCG的值介于(0,1]。NDCG计算公式:
IDCG为理想情况下最大的DCG值:
其中∣ R E L ∣ |REL|∣REL∣表示,结果按照相关性从大到小的顺序排序, 取前p个结果组成的集合,即按照最优的方式排序。
写到这里就基本完事了,肯定不全,但是常用的我觉得是够了,希望能对大家产生帮助,对ML、DL、条推荐里面的常见的评估指标有一个直观的了解。(^_-)
参考:翻滚的小强