介绍
推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。
常用的算法如下:
1. 规则模型 (Apriori算法)
2. 协同过滤 :仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法
协同过滤中的算法包括:1.基于邻域的方法 2.隐语义模型 3.基于图的随机游走算法
基于领域的方法应用最为广泛:包含基于用户的协同过滤以及基于物品的协同过滤算法
推荐系统评测指标
- 用户满意度
- 预测准确度
2.1 评分预测: 评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算
2.2 TopN推荐:一般通过准确率(precision)/召回率(recall)度
召回率:
准确率:
其中:R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表 - 覆盖率:覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。但是上面的定义过于粗略。覆盖率为100%的系统可以有无数的物品流行度分布。为了更细
致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布。如果所有的物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力就很好。
在信息论和经济学中有两个著名的指标可以用来定义覆盖率。第一个是信息熵,第二个指标是基尼系数(Gini Index) - 多样性:为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是对应的。假设 s(i,j) s ( i , j ) 定义了物品i和j之间的相似度,那么用户u的推荐列表R(u)的多样性定义如下:
而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:
- 新颖性: 新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖
- 惊喜度: 如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。目前并没有什么公认的惊喜度指标定义方式,这里只给出一种定性的度量方式。上面提到,令用户惊喜的推荐结果是和用户历史上喜欢的物品不相似,但用户却觉得满意的推荐。那么,定义惊喜度需要首先定义推荐结果和用户历史上喜欢的物品的相似度,其次需要定义用户对推荐结果的满意度。
- 信任度:这两个人可以看做两个推荐系统,尽管他们的推荐结果相同,但用
户却可能产生不同的反应,这就是因为用户对他们有不同的信任度。 - 实时性:推荐系统的实时性包括两个方面。首先,推荐系统需要实时地更新推荐列表来满足用户新的行为变化。实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。这主要考验了推荐系统处理物品冷启动的能力。
- 健壮性:健壮性(即robust,鲁棒性)指标衡量了一个推荐系统抗击作弊的能力。
- 商业目标:很多时候,网站评测推荐系统更加注重网站的商业目标是否达成,而商业目标和网站的盈利模式是息息相关的。
规则模型(Apriori算法)
- 找出所有频繁项集,频繁性大于等于最小支持度
- 根据频繁项集产生强关联规则,并满足最小支持度和最小置信度
支持度 (X=>Y) = (包含X和Y的记录数)/(数据集记录总数)
置信度(X=>Y) = (包含X和Y的记录数)/(数据集包含X的记录数)
频繁定理:频繁项集的非空子集必须是频繁的。
协同过滤
基本步骤:
1. 收集用户偏好信息
2. 寻找相似商品或用户
3. 推荐
基于用户的协同过滤
步骤:
(1) 找到和目标用户兴趣相似的用户集合。
(2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
用户间相似度计算
相似度函数s :皮尔孫相关系数/余弦相似度
暴力方式:两两用户计算相似度
问题:复杂度O(|U|*|U|) ,很多用户之间没有对相同的物品产生过行为。
换一种思路:首先计算出|N(u) 交 N(v)| !=0 的用户对(u,v) ,再对这种情况除以分母
方法:建立物品到用户的倒排表,每个物品保存访问过的用户列表。
令C[u][v]=|N(u) 交 N(v)|。若u, v 同时 in K个物品的倒排表,C[u][v]=K。
可以扫描倒排表中每个物品对应的用户列表,将用户列表中的两两用户对应的C[u][v]加1,最终就可以得到所有用户之间不为0的C[u][v]。
推荐
得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的
物品。如下的公式度量了UserCF算法中用户u对物品i的感兴趣程度.
其中,S(u, K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合, wuv w u v 是用户u和用户v的兴趣相似度, rvi r v i 代表用户v对物品i的兴趣,因为使用的是单一行为的隐反馈数据,所以所有的