# 个性化推荐算法 ## 基于人口的统计学推荐(Demographic-based Recommendation) 根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户,如图所示: ![](https://i.imgur.com/CfppT22.png) 从图中可以很清楚的看到,首先,系统对每个用户都有一个用户 Profile 的建模,其中包括用户的基本信息,例如用户的年龄,性别等等;然后,系统会根据用户的 Profile 计算用户的相似度,可以看到用户 A 的 Profile 和用户 C 一样,那么系统会认为用户 A 和 C 是相似用户,在推荐引擎中,可以称他们是“邻居”;最后,基于“邻居”用户群的喜好推荐给当前用户一些物品,图中将用户 A 喜欢的物品 A 推荐给用户 C。 ## 基于内容的推荐(Content-based Recommendation): 根据物品或内容的元数据,发现物品或内容的相关性,然后基于用户以前的喜好记录推荐给用户相似的物品,如图所示: ![](https://i.imgur.com/iXedIVA.png) 上图给出了基于内容推荐的一个典型的例子,电影推荐系统,首先我们需要对电影的元数据有一个建模,这里只简单的描述了一下电影的类型;然后通过电影的元数据发现电影间的相似度,因为类型都是“爱情,浪漫”电影 A 和 C 被认为是相似的电影(当然,只根据类型是不够的,要得到更好的推荐,我们还可以考虑电影的导演,演员等等);最后实现推荐,对于用户 A,他喜欢看电影 A,那么系统就可以给他推荐类似的电影 C。 ## 协同过滤算法 ### 简介 它根据用户的历史选择信息和相似性关系,收集与用户兴趣爱好相同的其他用户的评价信息来产生推荐。 通过计算用户间偏好的相似性,在相似用户的基础上自动的为目标用户进行过滤和筛选,其基本思想为具有相同或相似的价值观、思想观、知识水平和兴趣偏好的用户,其对信息的需求也是相似的。因此相对于传统的推荐方法,协同过滤技术体现出的一个显著的优势是能够推荐一些难以进行内容分析的项目 ### 分类 #### 基于项目的-协同过滤(Collaborative Filtering简称 CF) 根据所有用户对物品或者信息的评价,**发现物品和物品之间的相似度**,然后根据用户的历史偏好信息**将类似的物品推荐给该用户**,如图所示: ![](https://i.imgur.com/nM8YAje.png) 上图表明基于项目的协同过滤推荐的基本原理,用户A喜欢物品A和物品C,用户B喜欢物品A、物品B和物品C,用户C喜欢物品A,从这些用户的历史喜好中可以认为物品A与物品C比较类似,喜欢物品A的都喜欢物品C,基于这个判断用户C可能也喜欢物品C,所以推荐系统将物品C推荐给用户C。 基于项目的协同过滤推荐和基于内容的协同过滤推荐都是基于物品相似度预测推荐,只是相似度度量的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息。 总结: 一个人的口味是固定的,而人是群体的,不同的人虽然有细小的差异,但是整体是一致的,所以,根据用户喜欢的类别,可以判断哪些物品是相似的 #### 基于用户的协同过滤推荐(User-based Collaborative Filtering Recommendation) 基于用户的协同过滤推荐算法先使用统计技术**寻找与目标用户有相同喜好的邻居**,然后**根据目标用户的邻居的喜好产生向目标用户的推荐**。基本原理就是利用用户访问行为的相似性来互相推荐用户可能感兴趣的资源,如图所示: ![](https://i.imgur.com/ffMPcEW.png) 上图示意出基于用户的协同过滤推荐机制的基本原理,假设用户 A 喜欢物品 A、物品 C,用户 B 喜欢物品 B,用户 C 喜欢物品 A 、物品 C 和物品 D;从这些用户的历史喜好信息中,我们可以发现用户 A 和用户 C 的口味和偏好是比较类似的,同时用户 C 还喜欢物品 D,那么我们可以推断用户 A 可能也喜欢物品 D,因此可以将物品 D 推荐给用户 A。 基于用户的协同过滤推荐机制和基于人口统计学的推荐机制都是计算用户的相似度,并基于“邻居”用户群计算推荐,但它们所不同的是如何计算用户的相似度,基于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或者相似的口味和偏好。 #### 基于模型的协同过滤推荐(Model-based Collaborative Filtering Recommendation) 基于模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测推荐。 ## 参考文献 [入门级过滤算法介绍](https://blog.csdn.net/u012050154/article/details/52267712) 这篇博客配图讲解很好