共计 806 个字符,预计需要花费 3 分钟才能阅读完成。
最近在极客时间上买了一个推荐三十六式的课程,作为一个推荐系统方面的新手,在这个课程上还是可以学习不少推荐方面的知识,今天在看到BPR的时候给出了AUC在衡量推荐结果指标这块的分析。乍一看AUC还可以干这事,至少之前是没想过的,以前都是使用ROC或者AUC来衡量监督学习的好坏,现在还可以用来衡量推荐算法的好坏。
要分析这个就要从AUC的数学方面去理解这个概念了
AUC—排序衡量标准
auc和roc之前会被经常用于监督训练的指标测试,衡量一个模型的好坏,auc的英文就是area under currency ,但是更加直白的解释就是衡量当前的得到的排序结果是不是最好的,如果AUC值一直趋近于1那么现在的排序的结果非常好,如果是0.5那么真的很糟糕,如果接近于0那么你就是完美的把所有的结果排错了,那么你只要将之前的结果加一个负号重新排序就好了。
在这里主要介绍的是个性化推荐的评价,那么对于电商推荐来说主要是对用户的推荐评价
AUC用于推荐算法排序结果衡量
- 首先获取每一个用户推荐的商品结果,这其中包含了商品以及对商品的打分
- 将推荐的结果按照商品的评分降序排列
- 训练模型和测试集时间区间一定要不一样(这是常识。。),使用测试时间范围内的数据给之前推荐的结果打一个标签,如果用户在测试时间内消费了推荐的商品,那么给这个商品记录打一个1,表示为正样本,否则为0就是负样本
- 然后给每一个样本加上一个排序的值,假设当前给用户推荐了50个商品,那么排名第一的商品给它一个50的值,依此递减。
- 最后使用以下这个公式来计算最终的AUC值
$$AUC=\frac{\sum_{i=1}^{n}r_i-\frac{M*(M+1)}{2}}{M*N}$$
上述的公式中M表示正样本的个数,N表示负样本的个数,\(r_i\)就是前面给出的排名值,按照上述的计算规则就可以计算出一个用户的AUC值,如果要衡量整个推荐的好坏,可以计算所有的用户的AUC平均值
正文完
请博主喝杯咖啡吧!