《推荐系统实践》系统性地介绍了推荐系统这一领域,思路清晰,详细介绍了各个领域不同情景的推荐算法的应用,是一本很好的推荐系统入门书,尤其第二第三章的讲解比较细致。(Ps:书中插入的python代码有点生硬,读者可以直接忽略)
衡量推荐算法的指标
用户满意度
满意度是评测推荐系统最重要的指标,但是无法通过离线计算获得,只能通过用户调查或者在线实验。
预测准确度
对于TopN推荐(这里主要讨论TopN推荐),对于准确度的衡量有两个指标。R(u)是针对测试集,根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表。
- 召回率:表示用户喜欢的物品列表里被推荐系统推荐到的比例
Recall=∑u∈UR(u)⋂T(u)∑u∈U|T(u)| R e c a l l = ∑ u ∈ U R ( u ) ⋂ T ( u ) ∑ u ∈ U | T ( u ) |- 准确率:表示推荐系统推荐给用户的列表里用户喜欢该推荐的比例
Precision=∑u∈UR(u)⋂T(u)∑u∈U|R(u)| P r e c i s i o n = ∑ u ∈ U R ( u ) ⋂ T ( u ) ∑ u ∈ U | R ( u ) |覆盖率:述一个推荐系统对物品长尾的发掘能力。覆盖率 最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。假设系统的用户集合为U ,推荐系统给每个用户推荐一个长度为N的物品列表R(u) 。
Coverage=⋃u∈UR(u)|I| C o v e r a g e = ⋃ u ∈ U R ( u ) | I |多样性:多样性描述了推荐列表中物品两两之间的不相似性,与推荐的相似性是相对的。
新颖性:是指给用户推荐那些他们以前没有听说过的物品,给用户带来新颖感
惊喜度:区别于新颖性,如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。
信任度:指用户给推荐系统给出结果的信任,可以通过增加推荐系统的透明度(给出推荐理由)和考虑用户的社交网络(用户更信任他们的好友)来提升推荐系统的信任度。
实时性:表现在用户行为变化后,即使更新推荐列表;同时在新的物品加入系统,物品能够被推荐到用户。
健壮性:推荐系统能够抗攻击,推荐系统依赖用户行为,如果用户刻意造假用户行为,就会对推荐结果造成影响(如淘宝刷单强行将物品刷到热门,被推荐的概率大大增加)。增加健壮性的方法有:
- 使用代价比较高的用户行为赋予更高的权重,代价比较的高的行为造假率低。
- 使用数据前,进行攻击检测
推荐算法简介
当前业界用的最多的算法就是基于领域的推荐算法,包括基于用户的协同过滤和基于内容的系统过滤,当然还有一些其他算法,包括了基于图的推荐算法、基于内容的推荐算法、隐语义模型、利用标签推荐等等。
1. 基于用户的协同过滤
a.推荐思想
当一个用户A需要个性化推荐 时,可以先找到和他有相似兴趣的其他用户(这里的兴趣相似指两人感兴趣的物品重合度高),然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。
主要步骤包括:
- 找到和目标用户兴趣相似的用户集合(计算与当前用户兴趣相似度高的用户)
- 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
b.算法实现
给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v) 为用户v曾经有过正反馈的物品集合。那么u与v的相似度可以如下计算: