推荐算法
推荐系统的核心问题是为用户推荐与其兴趣相似度比较高的商品。 此时需要一个函数f(x)来计算候选商品与用户之间的相似度,并向用户推荐相似度比较高的商品。为了能够预测出函数f(x),可以利用的历史数据主要有:用户的历史行为数据、与该用户相关的其他用户信息、商品之间的相似性、文本的描述等等。
假设集合C表示所有的用户,集合S表示所有需要推荐的商品。函数f表示商品x到用户
c之间的有效性的效用函数:
其中,R是一个全体的排序集合,对于每一个用户c∈C,希望从商品的集合中选择出商品,即s∈S,以使得应用函数f的值最大。
1 协同过滤算法
协同过滤算法是最基本的推荐算法,CF算法从用户的历史行为数据中挖掘出用户的兴趣,为用户推荐其感兴趣的项。 根据挖掘方法的不同,协同过滤算法可以分为基于用户的协同过滤算法和基于项的协同过滤算法。
1.1 算法概述
基于用户的协同过滤算法是基于一个这样的假设:跟你喜好相似的人喜欢的东西你也很有可能喜欢。所以基于用户的协同过滤的主要任务是找出用户的最近邻居,从而根据最近邻居的喜好做出未知项的评分预测。
- 用户评分:可以分为显性评分和隐性评分两种。显性评分就是直接给项目评分,隐性评分就是通过评价或者购买的行为给项目评分。
- 寻找最近邻居:这一步就是为了寻找与你距离最近的用户,测算距离一般采用三种算法,即皮尔森相关系数、余弦相似性和调整余弦相似性。
- 推荐:产生了最近邻居集合后,就根据这个集合对未知项进行评分预测。把评分最高的N个项推荐给用户。
这种算法存在性能上的瓶颈,当用户数越来越多的时候,寻找最近邻居的复杂度也会大幅度增加。因而这种算法不能满足即时推荐的要求,基于项的协同过滤就解决了这一问题。
基于项的协同过滤与基于用户的算法相似,只不过第二步改为计算项之间的相似度。由于项之间的相似度比较稳定,可以在线下进行,所以解决了基于用户的协调过滤存在的问题。
未完待续