推荐系统是在日常生活中非常常见的一种算法.几乎每个大型网站都能找到推荐算法的身影,比如说购物网站推荐可能喜欢的商品,视频网站推荐可能喜欢的视频等等.可以说推荐算法是应用场景最多,最有商业价值的算法之一.

目前主流的推荐算法分为基于内容的推荐和协同过滤推荐两种.基于内容的推荐一般依赖于自然语言处理NLP的一些知识,通过挖掘文本的TF-IDF特征向量,来得到用户的偏好,进而做推荐。这类推荐算法可以找到用户独特的小众喜好,而且还有较好的解释性。协调过滤推荐是通过概率的方式计算出用户最可能喜欢的产品,从而进行推荐,这也是目前主流的推荐方式.本文主要介绍协同过滤算法.

基于用户(User-based)的协同过滤

基于用户的协同过滤算法,主要为以下两步:

  1. 找到和目标用户兴趣相似的用户集.
  2. 找到这个用户集中用户最喜欢的物品推荐给用户.

对于第一步找到和目标用户兴趣相似的用户集,我们可以根据用户历史的浏览及使用记录,生成一个用户向量,然后计算所有用户两两之间的余弦相似度:

\cos ( \theta ) = \frac { A \cdot B } { \| A \| \| B \| }

这样我们就得到了任意用户的兴趣相似的用户集.

基于物品(Item-based)的协同过滤

当用户数量较多时,计算所有用户两两之间的余弦相似度,可能会非常困难,于是有了基于物品的协同过滤.

  1. 计算物品之间的相似度.
  2. 根据物品的相似度和用户的历史行为给用户生成推荐列表.

以项目为基础的协同过滤不用考虑用户间的差别,所以精度比较差。但是却不需要用户的历史数据,于物品来讲,它们之间的相似性要稳定很多.

基于模型(Model- based)的协同过滤

以用户为基础的协同过滤和以物品为基础的协同过滤系统称为以记忆为基础的协同过滤技术,他们都是根据用户或者商品的数据预先将推荐内容计算好的,因为数据会有更新,所以一般会每天重新计算一次.正因为数据是预先计算的,所以难以响应及时结果.由此发展出了以模型为基础的协同过滤(Model-based Collaborative Filtering).

以模型为基础的协同过滤先用历史数据得到一个模型,再用此模型进行预测。于是我们的机器学习算法有了用武之地.可用于协同过滤的模型非常多,可以利用关联算法算法找到关联最大的物品进行推荐,可以利用聚类算法找到同类物品进行推荐,可以用回归算法判断用户对某物品的喜爱程度,甚至直接用分类算法预测用户是否喜爱某物品,以及使用SVD,神经网络,图模型等等的协同过滤算法.

posted @ 2018-08-17 11:39:03
评论加载中...

发表评论