多维度协同过滤

一、摘要

在推荐系统的发展历程中,协同过滤算法有着很重要的影响。从根源上来理解该算法的 本质,可以从中看到社会关系的同质性现象——越相似的人喜欢的东西越相似。但是传统的 协同过滤算法中,进行相似度的计算时忽略了很多信息。对于推荐系统而言,其用户画像应 该是从多个维度来进行考量,单单使用一个数值来描述两个用户的相似度是不合理的。所以 基于该考虑,本文提出的是多维度协同过滤算法,从多个维度对用户之间的相似度进行考量。

二、问题提出

推荐系统是利用用户的相关信息进行分析处理从而为用户推荐有针对性商品的一个工 具。推荐系统的传统实现方法有协同过滤的方法,本文所要介绍的模型是在对同质性现象的 产生机制有了一些理解后,对协同过滤算法进行了一些改进。

三、同质性与协同过滤算法

3.1 同质性原理

在社会交往关系中,存在着同质性现象。早在很久之前,就有人观察到了社会中的同质 性现象。柏拉图曾经说过:“相似性带来友谊”,亚里士多德认为,人们喜欢与自己相似的人。 同质性的形成有两种机制:第一种是身份同质性,即具有相同社会阶层,财富和地位的人会 更趋向于相互联系;第二种是价值同质性,即用相同方式进行思考或喜欢相同东西人会更趋 向于相互联系。 基于第二种同质性机制,可以看出存在这种机制——喜欢相同东西的人会更趋向相互联 系。并且除此之外,人们可能因为相似进而产生联系,同时也有可能因为产生联系进而变得 相似。所以,对于相似的用户,除了他们共同喜欢的物品,他们也可能会喜欢另一个人的其 他物品。基于这种想法,有了推荐系统中的协同过滤算法。

3.2 协同过滤算法

协同过滤算法分为基于用户的协同过滤和基于物品的协同过滤,其内在思想是相似的, 所以接来下用基于用户的协同过滤算法来进行说明。User-User CF 是通过计算用户之间的相 似度进而预测用户对于一些商品的评分并排序,然后为用户进行推荐的。其关键在于用户之 间的相似度计算,它的实现方式是根据两个用户已有的对于所有物品的评分数据(允许有缺 失),通过相似度公式进行计算(Pearson 相关系数或余弦相似度)。之后通过用户之间的相 似度矩阵,为每个用户预测对商品的评分,由高到低将商品推荐给用户。

四、算法的改进与模型设计

4.1 改进思路

从基本的同质性现象开始,其产生是因为用户喜欢相同的东西。但是对于一个用户而言, 其画像应该是多维度的,每个用户会有多个不同的喜好,并且对于这些喜好有不同的比重。 对于两个不同的用户,他们可能在某一个喜好方向上十分相似,但其他喜好并不相似,在这 种情况下,如果用协同过滤简单的计算两用户的相似度会淡化其在同一方向上的共同喜好, 即忽略了有用的信息。所以在不同的喜好或类别分别计算用户之间的相似度是有必要的,从 而可以跟细粒度的分析用户相似关系。在相似度较大的维度上,用户之间可以提供较多的信 息,在相似度较小的维度上,则提供较少的信息。这样对于用户的评分预测也会更加精确。

4.2 模型设计

首先是模型中的各类参数:

  • 1. 可以用商品的标签全集作为所有的维度 N。
  • 2. 各个用户在各个维度下的占比矩阵。
  • 3. N 个用户相似度矩阵,每一个维度上都有一个相似度矩阵。
  • 4. 各个物品所属各个维度的矩阵(可以是用 0,1 填充的矩阵)。
  • 5. 各个用户与各个商品的评分矩阵。

对各个参数的计算方式:

  • 1. 每个商品都有一个或多个标签,所有标签的个数作为维度数 N。
  • 2. 根据每个用户的收藏商品,浏览商品以及购买过的商品的标签的比例可以得出该用 户在各个维度上的占比。
  • 3. 在每一个维度上都需要计算一个相似度矩阵。用于计算相似度的物品是属于该维度 的物品集合,使用这些物品的评分计算相似度。拿一个维度(运动装备)举例来说, 需要用到用户在跑步鞋,篮球鞋等,这些属于该维度的商品的评分来计算用户间的 相似度。对于相似度的计算公式,还是采用 Pearson 相关系数:

其中𝑅𝑖,𝑥代表的是用户 i 在 x 商品上的评分,𝑅𝑖 ̅代表的是用户 i 在𝐼𝑖𝑗上的平均评分。 𝐼𝑖𝑗的意义是在当前维度上,用户 i 和用户 j 共同评价过的,且属于该维度的商品集 合。

  • 4. 每个物品都有所属的类别标签,在所有维度上,将其所属的维度的位置的值设为 1, 其余值置 0。
  • 5. 通过用户为商品评分或者评论获得该评分矩阵的数据。 在做完这些前置工作之后,需要利用这些数据预测用户评分从而完成对用户的推荐。

下 面介绍的是对一个未评分商品预测用户的评分。 现在已有的是上面 5 个列举出来的数据,和一个用户 i 没有评分的商品 p。

  • 1) 首先得到该商品的标签,确定需要计算的多个维度。
  • 2) 得到对应维度的多个用户相似度矩阵。
  • 3) 对每一个相似度矩阵,都计算一次如下步骤:所有对商品 p 有过评分的用户,计算 加权平均和,权值为该用户与用户 i 的相似度。可以得到一个预测的评分值 x。
  • 4) 由于步骤 3 可以产生多个评分值 x,所以需要将步骤 3 产生的多个评分预测值进行 加权平均,其权值为用户在该维度的上的占比。最后得出的加权平均后的值为预测 用户 i 在商品 p 上的评分。 在得到评分后即可进行排序,进而为用户进行推荐。

4.3 模型的不足

虽然通过更细粒度的划分并计算用户相似度,但是该模型保留了之前模型的缺点:

  • 1. 数据的稀疏性问题。
  • 2. 相较于之前的模型,多个维度下的多个相似度矩阵会占用更多的内存空间。

(以上内容为自行设计,并未查证是否已经被提出过。)