预测准确度
在过去,很多人将推荐准确度作为推荐系统唯一追求的指标,比如一个推荐系统预测一个用户将来会购买一本书,而最后用户买了,这样推荐的准确度很高。
但是,如果用户本来就准备买这本书,无论推荐与否,都会购买,那这个推荐系统,实际上并没有让用户购买更多的书。
没有帮助用户找到新的感兴趣的内容,没有帮内容生产者找到新用户,也没增加推荐系统的总成交量(姑且叫成交量)。
所以,预测准确度当然很重要,但推荐系统也要能扩展用户的视野,帮助他们发现那些他们可能会感兴趣,但却不那么容易发现的东西。同时,推荐系统还要能够把那些埋没在长尾中的内容推荐给可能会对它们感兴趣的用户。
预测准确度在不同研究方向中表现形式也不同,比如评分预测中,就是需要预测,该用户在将来看到一个他没有评过分的物品时,会给这个物品评多少分。
在评分预测中,预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算,如下式:
式子都很好理解,主要思想就是误差累加,RMSE因为使用了平方项的惩罚,对系统的评测更加苛刻。
除了评分预测,还有TopN推荐,TopN推荐就是给用户一个个性化的推荐列表。而TopN推荐的预测准确度一般通过准确率和召回率度量,如下式:
至于准确率和召回率,我在《浅谈机器学习基础》中有特别详细的讲解,还专门画了个图。而且在《浅谈自然语言处理基础》中,我还讲了F1测度,F1测度等于(准确率+召回率)/(2*准确率*召回率),F1测度越高越好,这样就给出了判定两个在准确度和召回率各有优势算法优劣的简单方法。除了F1测度,《浅谈机器学习基础》还提到了ROC曲线,用于协助决策。
其实TopN推荐要比评分预测更有价值,因为判断用户对内容是否感兴趣要比预测用户对内容的评价更有意义,而且现在新的产品,也已经很少用评分来收集用户反馈了。TopN更直接也更有效。
覆盖率
覆盖率描述一个推荐系统对长尾内容的发掘能力,也就是着力于达成前面的『推荐系统要让内容提供者的内容都能被推荐给对其感兴趣的用户』
先给一个最简单的覆盖率定义,就是对所有用户的推荐列表取并集,看看其是否覆盖率所有的内容,覆盖比例是多少。
但是上面的定义过于粗糙,为了更细致的描述推荐系统对长尾内容的发掘能力,我们选择统计所有用户的推荐列表中,不同物品出现次数的分布。
如果所有的物品都出现在推荐列表中,并且出现的次数差不多,那么推荐系统发掘长尾的能力就很好,那么如何度量这种定义下的覆盖率呢?
前面的文章不止一次的讲过熵,熵指混乱程度,熵最大的分布,就是各种物品出现的概率均匀,熵越小,就代表分布越集中,混乱程度越小。所以我们可以计算物品分布的熵值,并希望熵越大越好,熵越大指分布越平均,推荐系统也就更接近全覆盖,而不是只集中在少数热门的物品。熵的计算公式这里不给了,到处都是。