-->

AI内参_73_070_推荐系统评测之一传统线下评测

你好,我是洪亮杰。

今天我和你分享的主题是推荐系统评测之一,传统线下评测。

上周我们讨论了意义算法,介绍了UCP算法和汤普森采样。

这周我们来回归到一个更加传统的差距,那就是如何评测推荐系统这个话题非常重要,牵涉到如何持续对一个推荐系统进行评价。

今天能够提高推荐系统的精度。

今天我们来看一看推荐系统的线下评测。

在过去的十年里,随着net f illix大奖赛的举行,很多研究人员和工程人员往往把推荐系统的模型学习简化为对用户评分的一种估计。

同时在模型上面来说,对用户物品评分矩阵进行分解,成为了一种主流的差法。

在这样的场景下,如何对模型进行评测,进而简简单直直观的办法就是衡评评分的准确性。

换句话说,也就是看我们预测的评分和真实评分之间有多大的差距。

那么有哪些方法可以用来衡量两个数值之间的差异呢?在期来学习习中,一个经常使用的测度叫均方差或MSE.有时候我们也会使用它的根号后的结果,叫做方差或RMSEMSE,是这么定义的。

首先如果我们知道一个用户i和物品j的真实平分假设叫YIJ.那么我们的一个估计值是ZIJMSE计算的,就是YIJ和ZIJ的差值。

然后取平方平方以后的结果肯定是一个正数。

也就是说这样做的好处是整个计算不会出现负数。

我们的估计值比真实值小了,或者大了MSE都可以处理。

当我们对于每个用户和物品都计算了这个差值以后,再对所有的差值的平方取一个平均值,就得到了我们所要的MSE.从计算上来讲,RMSE就是在MSE的基础上再取一个根号。

我们在很多实际应用中,往往使用RMSE来汇报模型的评测结果。

同时RMSE也经常用在大多数的学术论文中。

但这个评测有没有什么问题呢?答案是RMSE其实存在很多问题。

首先我们从刚才描述的计算过程中可以看到,RMSE需要取一个平均值,就是对所有用户在所有物品上评分误差的估计的平均。

那么如果一个用户在数据集里面对很多物品进行了评分,这个用户误差的贡献就会在最后的平均值里占很大一部分。

也就是说最后的差值大部分都用于描述这些评分比较多的用户了。

上述情况存在一个弊端,如果我们得到了一个比较好的RMSE数值,往往很可能是牺牲了大部分用户的评分结果。

而对于少部分的高频用户的评分结果有提高,说的更加直白一些,那就是RMSE.小的模型并不代表整个推荐系统的质量得到了提高,这是RMSE很容易带来困惑的地方。

Rmse的另外一个问题就是这个指标并没有反映真实的应用场景,什么意思呢?真实的应用场景。

我们往往是从一大堆物品中选择出一个物品,然后进行交互。

在这样的流程下,物品单独的评分其实并不是最重要的。

更进一步说,就算一个推荐系统能够比较准确的预测评分,也不能证明这个推荐系统能够在真实的场景中表现优异。

当研究人员意识到RMSE的问题后,不少人就开始回归到问题的本质。

究竟什么样的评测更能反映推荐系统在真实场景中的表现呢?很多人很自然的就想到了搜索。

我们来回忆一下,搜索的结果是根据某个查询关键词,然后搜索引擎返回一系列文档结果。

在这样的场景中,如果我们来和推荐进行对比,就会发现这里面最大的区别仅仅是有没有一个查询关键词。

所以我们其实可以把搜索一些指标移植到推荐中来使用。

比如我们在搜索中讲过的基于二元相关度的指标,下面简单回顾一下这个指标。

什么叫二元相关度呢?简单说来就是针对某一个查询关键字而言,整个测试集里的每一个文档都有一个,要么相关,要么不相关的标签。

在这样的情况下,不存在百分比的相关度。

而每个文档针对不同的关键字有不同的相关信息。

假定某个系统针对某个关键字从测试数据集中提取一定量的文档。

而不是返回所有文档。

我们就可以根据这个提取的文档子集来定义一系列的指标。

有两个定义,在二元相关度上的指标,成为了很多其他重要指标的基石。

一个叫精度precision.也就是说,在提取了的文档中,究竟有多少是相关的,另一个叫召回recall.也就是说,在所有相关的文档中有多少是提取出来了的。

精度和召回的相同点在于分子都是既被提取出来又相关的文档数目。

这两个指标的不同之处则是他们的分母。

精度的分母是所有提取了的文档数目,而召回的分母则是所有相关的文档数目。

如果我们返回所有的文档,精度和召回都成为一,也就是说在这样的情况下是没有意义的。

因此我们注意到这两个指标其实都假定提取的文档数目,相比于全集而言,是相对比较小的子集。

我们其实就可以利用精读和召回来评测推荐系统。

然而这有一个问题,那就是对于搜索而言,相关度大多数时候是通过人工标注的,但这个对于推荐系统来说是不可能的。

因为推荐的结果对于每个人来说都是不一样的,所以没法针对所有人来进行统一的人工标注。

一种折中的方法就是使用用户的回馈信息。

在这里,因为我们需要二元信息,所以可以使用像用户的点击信息或者购买信息来作为二元的相关度。

也就是说,如果用户点击了某个物品,那我们就认为是相关的。

反之则是不相关。

顺着这个思路下去,其实我们就可以计算类似于NDCG等更加复杂的指标。

只不过我们需要自己去定义相关信息,利用排序的思路来评测。

推荐系统已经成为了目前推荐系统线下评测的一个标准指标。

今天我们为你讲了如何评测推荐系统的好坏。

今天的重点是线下评测的两类指标,我们一起来回顾一下要点。

第一,我们聊了聊非常通用的RMSE的评测方法,而且指出这类方法的缺陷。

第二,我们介绍了怎么把搜索里的评测方法给移植到推荐中,最后给你留一个思考题,基于排序的评测有什么致命的问题吗?欢迎你给我留言,和我一起讨论。