- 评估指标
1.1 准确度
1.1.1 打分系统
1.1.2 Top N推荐 - 覆盖率
- 多样性
3.1 基于内容
3.2 协同过滤
基于用户的协同过滤(user-based CF)
基于物品的协同过滤(item-based CF) - 对比
1.评估指标
推荐算法的内核在于更好的分发系统中的内容,尽量消除长尾效应,让每一份内容都得以展示,同时还要满足客户的需求。因此评估一个推荐算法的好坏主要有三个方面:准确度,覆盖率和多样性。
1.1准确度
1.1.1 打分系统
设为用户对商品i的实际评分,实际评分与预测评分的误差可以表示为:
1.1.2 Top N推荐
设R(u)为根据训练出的模型在测试用户集上的推荐,T(u)为测试用户集上的用户实际选择。准确率VS召回率:
1.2.覆盖率
表示对物品的发掘能力,推荐系统期望消除马太效应。比如商品推荐中,很多商品是综合排名很低的,只有少部分商品排在前头,大部分商品排在最后,导致用户看不到排在最后的商品,推荐系统希望能挖掘一些排名靠后的商品推荐给用户。
可以粗略的计算,如下第一式,但一般用熵来计算,如下第二式。
假如说有10种商品A1—A10,卖出去了五种(A1—A5),分别卖了30,5,6,9,3.粗略的计算覆盖为5/10。
但更准确的是计算P(A1)=30/53,P(A2)=5/53,其他类似,然后代入第二式,在五个概率址相等的时候,熵是最大的。
3.多样性
优秀的推荐系统能保证两两之间的差异性,使用户具有新鲜感。
而两件商品的差异性可以使用相似度来衡量,设S(i,j)表示物品i,j之间的相似度,多样性计算公式如下:
推荐系统主要的衡量标准就这三种。当然还有其他的,比如实时度,惊喜度等。
3.1 基于内容
基于内容的推荐指的是基于用户的历史浏览记录,推荐相似的物品,而无须考虑用户与用户之间的关系。常见的推荐有商品推荐,电影推荐,文章推荐。但一般用户与文本相关的的推荐上。
算法的步骤很简单:
1. 对每个物品(item)构建一个物品的属性资料(item profile)
2. 对每个用户(user)构建一个用户的喜好资料(user profile)
3. 计算用户的喜好资料与物品的属性资料的相似度(similarity)
相似性计算常用余弦相似性:
3.2 协同过滤
Neighborhood-based algorithm是一种基于近邻的推荐算法,根据对象的不同可以分为基于用户的协同过滤和基于物品的协同过滤。
基于用户的协同过滤(user-based CF)
它的核心思想是找到和目标用户兴趣相似的用户集合,然后给目标用户推荐这个集合的其他用户喜欢的产品。用户间的相似度可以使用余弦相似度计算。
算法步骤:
1. 建立用户-物品的倒排表
2. 用户与用户之间的共现矩阵C[A][B],表示拥护A,B喜欢相同物品的个数
3. 用户与用户之间的相似度矩阵W[A][B]
4. 用上面的相似度矩阵推荐与当前用户兴趣相似的用户喜欢的物品。
P(u,i)=.其中S(A,K)为和用户A最接近的k个用户;N(i)表示对物品i有正反馈的用户的集合;表示用户A,B的相似度;表示用户B对物品i的兴趣。
基于物品的协同过滤(item-based CF)
该算法的核心思想是:给用户推荐与他喜欢的物品相似度较高的商品。因此会计算物品间的相似度,然后根据物品的相似度和用户的历史行为生成推荐列表。
算法步骤与前类似:
1. 建立用户物品倒排表
2. 物品与物品之间的共现矩阵C[i][j],物品i和物品j共同被多少用户喜欢
3. 用户与用户之间的相似度矩阵W[i][j]
4. 用相似度矩阵给用户推荐与他喜欢的物品相似的其他物品
P(A,j)=
其中S(j,K)为和物品j最相似的前K个物品;N(A)为对用户A所喜欢的物品集合;为物品j,i之间的相似度;为用户A对物品i的兴趣。
4.对比
user-based CF:
适用于用户较少的场合,否则用户相似度矩阵的计算代价过大
用户的个性化兴趣不太明显的领域
用户有新行为,不易造成推荐结果的改变
item-based CF
适用于物品数明显少于用户数的场合,否则计算物品相似度矩阵的计算代价太大
适合长尾物品丰富,用户个性化需求较强的领域
协同过滤基于用户行为的推荐,因此对推荐内容无需先验知识,只需用户与商品关联矩阵即可,结构简单;但需要大量的显性,隐性用户行为。