协同过滤的实现步骤

协同过滤的实现算法

一、收集用户偏好及标准化处理ide

要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有不少方式向系统提供本身的偏好信息,并且不一样的应用也可能大不相同。idea

以上列举的用户行为都是比较通用的,推荐引擎设计人员能够根据本身应用的特色添加特殊的用户行为,并用他们表示用户对物品的喜爱。在通常应用中,咱们提取的用户行为通常都多于一种,关于如何组合这些不一样的用户行为,基本上有如下两种方式:spa

  • 将不一样的行为分组:通常能够分为“查看”和“购买”等等,而后基于不一样的行为,计算不一样的用户 / 物品类似度。好比:“购买了该图书的人还购买了 ...”,“查看了图书的人还查看了 ...
  • 根据不一样行为反映用户喜爱的程度将它们进行加权,获得用户对于物品的整体喜爱。通常来讲,显式的用户反馈比隐式的权值大,但比较稀疏,毕竟进行显示反馈的用户是少数;同时相对于“查看”,“购买”行为反映用户喜爱的程度更大,但这也因应用而异。

二、数据减噪和归一化设计

收集了用户行为数据,咱们还须要对数据进行必定的预处理,其中最核心的工做就是:减噪和归一化3d

  • 减噪:用户行为数据是用户在使用应用过程当中产生的,它可能存在大量的噪音和用户的误操做,咱们能够经过经典的数据挖掘算法过滤掉行为数据中的噪音,这样能够是咱们的分析更加精确。
  • 归一化:如前面讲到的,在计算用户对物品的喜爱程度时,可能须要对不一样的行为数据进行加权。但能够想象,不一样行为的数据取值可能相差很 大,好比,用户的查看数据必然比购买数据大的多,如何将各个行为的数据统一在一个相同的取值范围中,从而使得加权求和获得的整体喜爱更加精确,就须要咱们 进行归一化处理。最简单的归一化处理,就是将各种数据除以此类中的最大值,以保证归一化后的数据取值在 [0,1] 范围中。

进行的预处理后,根据不一样应用的行为分析方法,能够选择分组或者加权处理,以后咱们能够获得一个用户偏好的二维矩阵,一维是用户列表,另外一维是物品列表,值是用户对物品的偏好,通常是 [0,1] 或者 [-1, 1] 的浮点数值。blog

三、找到类似的用户或物品ci

当已经对用户行为进行分析获得用户喜爱后,咱们能够根据用户喜爱计算类似用户和物品,而后基于类似用户或者物品进行推荐,这就是最典型的 CF 的两个分支:基于用户的 CF 和基于物品的 CF。这两种方法都须要计算类似度。关于类似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近类似度越大。在推荐的场景中,在用  - 物品偏好的二维矩阵中,咱们能够将一个用户对全部物品的偏好做为一个向量来计算用户之间的类似度,或者将全部用户对某个物品的偏好做为一个向量来计算物品之间的类似度。数据挖掘

3.1 经常使用的类似度计算方法io

  • 欧几里德距离(Euclidean Distance
  • 皮尔逊相关系数(Pearson Correlation Coefficient
  • Tanimoto 系数(Tanimoto Coefficient

3.2 类似邻居的计算

  • 固定数量的邻居:K-neighborhoods 或者 Fix-size neighborhoods
  • 基于类似度门槛的邻居:Threshold-based neighborhoods

 

四、计算基于用户的协同过滤(User CF)

例子:

对于用户 A,根据用户的历史偏好,这里只计算获得一个邻居 - 用户 C,而后将用户 C 喜欢的物品 D 推荐给用户 A

 

五、计算基于物品的协同过滤(Item CF)

 例子:

对于物品 A,根据全部用户的历史偏好,喜欢物品 A 的用户都喜欢物品 C,得出物品 A 和物品 C 比较类似,而用户 C 喜欢物品 A,那么能够推断出用户 C 可能也喜欢物品 C

相关文章
相关标签/搜索