< 上一个 | 内容 | 下一个 >

3.3.2 分类

协同过滤主要有下面两种算法:

基于用户的协同过滤算法(UserCF):推荐和用户兴趣相似的其他用户喜欢的产品。基于物品的协同过滤算法(ItemCF):给用户推荐和他之前喜欢的物品相似的物品。

image

“人以群分”的基于用户的协同过滤 “物以类聚”的基于物品的协同过滤

3.3 两种协同过滤算法对比

UserCF 算法主要包括两个步骤:

1)找到和目标用户兴趣相似的集合

2)找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

上面的两个步骤中,第一个步骤里面,我们会基于前面给出的相似性度量的方法找出与目标用户兴趣相似的用户,而第二个步骤里面,如何基于相似用户喜欢的物品来对目标用户进行推荐呢?这个要依赖于目标用户对相似用户喜欢的物品的一个喜好程度,那么如何衡量这个程度大小呢?为了更好理解上面的两个步骤,下面拿一个具体的例子把两个步骤具体化。

以下图为例,此例将会用于本文各种算法中


image

3.4 用户对物品喜爱程度打分

给用户推荐物品的过程可以形象化为一个猜测用户对商品进行打分的任务,上面表格里面是 5 个用户对于 5 件物品的一个打分情况,就可以理解为用户对物品的喜欢程度。

应用 UserCF 算法的两个步骤:

首先根据前面的这些打分情况(或者说已有的用户向量)计算一下 Alice 和用户 1234 的相似程度, 找出与 Alice 最相似的 n 个用户

根据这n 个用户对物品 5 的评分情况和与 Alice 的相似程度会猜测出 Alice 对物品 5

的评分, 如果评分比较高的话, 就把物品 5 推荐给用户 Alice, 否则不推荐。

关于第一个步骤, 上面已经给出了计算两个用户相似性的方法, 这里不再过多赘述, 这里主要解决第二个问题, 如何产生最终结果的预测。

最终结果的预测:

根据上面的几种方法, 我们可以计算出向量之间的相似程度, 也就是可以计算出 Alice 和其他用户的相近程度, 这时候我们就可以选出与 Alice 最相近的前 n 个用户,基于他们对物品 5 的评价猜测出 Alice 的打分值.

协同过滤

基于物品的协同过滤(ItemCF)的基本思想是预先根据所有用户的历史偏好数据计算

物品之间的相似性,然后把与用户喜欢的物品相类似的物品推荐给用户。比如物品a c 非常相似,因为喜欢 a 的用户同时也喜欢 c,而用户 A 喜欢 a,所以把 c 推荐给用户 AItemCF 算法并不利用物品的内容属性计算物品之间的相似度,主要通过分析用户的行为记录计算物品之间的相似度,该算法认为,物品 a 和物品 c 具有很大的相似度是因为喜欢物品 a 的用户大都喜欢物品 c

基于物品的协同过滤算法主要步骤:

根据物品的相似度和用户的历史行为给用户生成推荐列表(购买了该商品的用户也经常购买的其他商品)

基于物品的协同过滤算法和基于用户的协同过滤算法很像, 所以我们这里直接还是拿上面图 3.4 那个例子来看。

如果想知道 Alice 对物品 5 打多少分,基于物品的协同过滤算法会这么做:

首先计算一下物品 5 和物品 1234 之间的相似性(它们也是向量的形式, 每一列的值就是它们的向量表示, 因为 ItemCF 认为物品 a 和物品 c 具有很大的相似度是因为喜欢物品 a 的用户大都喜欢物品 c, 所以就可以基于每个用户对该物品的打分或者说喜欢程度来向量化物品);

找出与物品 5 最相近的 n 个物品;

根据 Alice 对最相近的 n 个物品的打分去计算对物品 5 的打分情况。