【读书笔记】《推荐系统(recommender systems An introduction)》第二章 协同过滤推荐

输入:“用户—物品”评分矩阵
输出:(1)用户对某个物品喜欢程度的评分;(2)对于用户,n个推荐的物品列表

1. 基于用户的最近邻推荐(user-based cf)

算法基本假设:(1)如果用户过去有相似的偏好,那么他们未来也会有相似的偏好;(2)用户的偏好不随时间变化而变化

用户相似度计算:user-based cf中pearson相关系数比较好;item-based cf中余弦相似度比较好。学术界在相似度方面有较为深入的研究,例如:很多领域都存在一些所有人都喜欢的物品(热门物品),让两个用户对有争议的物品达成共识、比对热门物品达成共识更有价值,Breese提出“反用户频率”(iuf)来表示。

用户近邻的选择方法:(1)固定某个相似度阈值;(2)固定某个近邻数阈值

2. 基于物品额最近邻推荐(item-based cf)

算法基本假设:用户喜欢某个物品,那么也喜欢和这个物品相似的物品

当用户量比较大的时候,user-based cf需要计算相似用户,这个计算代价就很大;而且,当数据发生变化的时候,之前计算出的用户之间的相似度,也不稳定。相反,item-based cf,计算item之间的关系,比较适合离线计算,而且计算出的物品之间的相似度,当数据变化的时候,结果更加稳定。

当计算量实在太大的时候,如果一定要处理,可以采取“二次采样”的方法,即只选择数据的某个子集。

3. 关于评分

“用户—物品”矩阵,联结用户和物品的是用户对物品的评分。可以分为显示评分和隐式评分。显示评分的问题主要在于用户需要额外付出。收集显示评分也并不是太困难,关键要有一小部分“早起培育者”先提供出来一些评分(有心理学的依据)。对于些领域,例如:个性化在线电台,隐式反馈比现实反馈效果更好。

如果评分很少、或者没有评分,就是数据稀疏问题。是否可以利用一些别的信息,如:用户的自然属性。对于用户没有行为的物品,可否有缺省值?冷启动问题是数据稀疏问题的一个特例。

4. 更多的模型和方法

协同过滤推荐可以分为基于记忆的方法和机遇模型的方法。前者将所有数据记忆到存储体中。后者,(离线)做数据降维,抽象出特征,运行时直接用特征。

(1)矩阵分解方法
SVD(基础),LSA,LSI。都是降维的方法。至于计算item之间的相似度、user之间的相似度、相似度度量选择等等,和经典的CF没啥两样。
主成分分析方法。

(2)关联规则挖掘
啤酒尿布。
在热门电影领域,关联规则挖掘的效果比较好。给用户推荐web页面的场景,关联规则效果也不错。

(3)基于概率分析的方法
将推荐问题转成分类问题。例如:用户给item的打分可以是1--5分,对于新物品、以及当前用户,给物品分到五个类别中,分别对应着1–5分。个人感觉,这种方法的作用就是为学术界发文章,在实际中很难使用。

5. 近年来实际的方法和系统

slope one预测
google reader的预测方法(之一)。思路挺有意思的,就是用与当前用户有关的用户(与当前用户在某个物品上都打了分--分高分低无所谓)对某个物品的评分情况,来预测当前用户对于这个物品的评分情况。直觉上不见得会make sense,即便是make sense,也远不如CF那么sense。不过算法很适合并行化。且Google也是用Map reduce来做的。

google reader实际上是一个混合推荐系统。既包括了离线计算,也包括了在线的用户行为挖掘。

6. 讨论和小结

目前找不到一种推荐方法在所有系统和数据集上面都优秀的。所以推荐系统还要“具体问题具体分析”,多尝试。CF方法要求用户有一定的规模,太小规模,效果不可预测。

完。

你可能感兴趣的:(机器学习,NLP)