协同过滤的实现算法
一、收集用户偏好及标准化处理ide
要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有不少方式向系统提供本身的偏好信息,并且不一样的应用也可能大不相同。idea
以上列举的用户行为都是比较通用的,推荐引擎设计人员能够根据本身应用的特色添加特殊的用户行为,并用他们表示用户对物品的喜爱。在通常应用中,咱们提取的用户行为通常都多于一种,关于如何组合这些不一样的用户行为,基本上有如下两种方式:spa
二、数据减噪和归一化设计
收集了用户行为数据,咱们还须要对数据进行必定的预处理,其中最核心的工做就是:减噪和归一化。3d
进行的预处理后,根据不一样应用的行为分析方法,能够选择分组或者加权处理,以后咱们能够获得一个用户偏好的二维矩阵,一维是用户列表,另外一维是物品列表,值是用户对物品的偏好,通常是 [0,1] 或者 [-1, 1] 的浮点数值。blog
三、找到类似的用户或物品ci
当已经对用户行为进行分析获得用户喜爱后,咱们能够根据用户喜爱计算类似用户和物品,而后基于类似用户或者物品进行推荐,这就是最典型的 CF 的两个分支:基于用户的 CF 和基于物品的 CF。这两种方法都须要计算类似度。关于类似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近类似度越大。在推荐的场景中,在用 户 - 物品偏好的二维矩阵中,咱们能够将一个用户对全部物品的偏好做为一个向量来计算用户之间的类似度,或者将全部用户对某个物品的偏好做为一个向量来计算物品之间的类似度。数据挖掘
3.1 经常使用的类似度计算方法io
3.2 类似邻居的计算
四、计算基于用户的协同过滤(User CF)
例子:
对于用户 A,根据用户的历史偏好,这里只计算获得一个邻居 - 用户 C,而后将用户 C 喜欢的物品 D 推荐给用户 A。
五、计算基于物品的协同过滤(Item CF)
例子:
对于物品 A,根据全部用户的历史偏好,喜欢物品 A 的用户都喜欢物品 C,得出物品 A 和物品 C 比较类似,而用户 C 喜欢物品 A,那么能够推断出用户 C 可能也喜欢物品 C。