协同过滤-Collaborative filtering

时间:2019-01-10
本文章向大家介绍协同过滤-Collaborative filtering,主要包括协同过滤-Collaborative filtering使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、协同过滤

协同过滤一般是在海量用户中发掘出一部分与目标用户特征比较类似的,在协同过滤中,这些用户与目标用户成为邻居,然后依据他们喜欢的其他东西组织成一个排序的目录推荐给目标用户

协同过滤要考虑:1.如何确定一个用户和目标用户相似;2.如何将邻居的喜好组织成一个排序目录

收集用户偏好:可通过用户行为判断偏好,如评分(传统星级评分制)、投票、转发、评论(用户情感)、点击、购买;同时也可对每个行为赋值,经过数据处理得到用户偏好

计算相似度:得到用户偏好后,可计算相似用户或物品,并进行推荐

基于用户的CF:通过用户对不同内容(物品)的行为,评测用户之间的相似度,找到“邻居”做出推荐,即给相似用户推荐其他用户喜欢的内容;依赖于当前用户相近用户群体的社会化行为,适用于用户量较少的场合(如果用户很多,计算用户的相似性矩阵代价较大),时效性强-用户个性化兴趣不太显著的场合,新加入的物品能很快进入推荐列表(一旦有用户对物品产生行为,就可将新物品推荐给和该用户兴趣相似的其他用户),可解释性弱,用户新的行为不一定导致推荐结果变化

基于物品的CF:基于用户对物品的偏好找到相似物品,然后根据用户历史偏好,推荐相似物品给用户。将所有用户对某个物品的偏好作为一个向量来计算物品间的相似度,并根据用户的历史偏好预测去预测当前用户还没有表示偏好的物品,最终计算得到一个排序的物品列表作为推荐;侧重于用户自身行为,适用于物品数较少(物品数明显少于用户数)的场合,长尾物品丰富-用户个性化需求强烈的场合,新加入用户能很快得到推荐(只要对一个物品产生行为),可解释性强,用户新的行为一定能导致推荐结果变化,但没有办法在不离线更新物品相似度表的情况下将新物品推荐给客户

二、Mahout协同过滤算法

Mahout是Hadoop家族用于机器学习的分布式计算框架,主要包括三类算法,即推荐算法、分类算法和聚类算法。Mahout推荐算法定义一套标准化的模型构建过程和调用过程,以基于用户的协同过滤算法为例;基于用户的协同过滤算法是被模块化的,通过4个模块进行统一的方法调用。首先创建数据模型,其次定义用户相似度算法(欧式距离相似度算法),接下来定义用户近邻算法(基于物品的协同过滤无此步骤),最后调用推荐算法完成计算过程

相似度算法:欧氏距离相似度、皮尔逊相似度、余弦相似度、spearman秩相关系数相似度、曼哈顿距离相似度、对数似然相似度

用户近邻算法:1.以个数计算,选出最近的前几个。2.以百分比计算,选出最近的前百分之几的数量

推荐算法:基于用户的推荐算法、基于物品的推荐算法、slopeone推荐算法、itemKNN推荐算法、SVD推荐算法、treecluster推荐算法