推荐系统算法(二)


降维方法能够同时提高近邻方法的质量和效率。尤其是在稀疏矩阵中,即当两个用户共同评价过的物品很少,也能够计算其低维潜在向量之间的距离。由于降维能够根据潜在因子提供稠密的低维表示。因此,这种模型被称为潜在因子模型。包括:

(1)创建数据的降维表示可以基于行的潜在因子也可以基于列的潜在因子。换句话说,对数据的降维表示是将物品的维度或用户的维度压缩成潜在因子。这种降维表示能够缓解基于近邻模型中由于稀疏性带来的问题。依据被压缩因子的不同维度,降维表示既能用于基于用户的近邻算法,也能用于基于物品的近邻算法。

(2)对行空间和列空间的潜在表示是同时确定的。在不使用基于近邻的方法时,这种潜在表示被用于重建整个评分矩阵。

为了便于讨论,以基于用户的协同过滤方法为例。基于用户的协同过滤方法的基本思想是利用主成分分析法将m×n的矩阵R转化到更低维的空间中。得到的矩阵R是一个m×d的矩阵,且dn。因此,代表用户评分的每一个(稀疏的)n维向量被转化为低维的d维向量。而且,在原始评分向量不同,每一个d维向量都是完全确定的。当表示每位用户的d维向量都确定之后,我们就用降维后的向量来计算目标用户和其他用户的相似度。在降维表示上的相似度计算更具有健壮性,因为新的低维向量是完全确定的。而且由于低维向量维度较低,相似度的计算也更加高效。在低维空间中,简单的余弦或点积就足以计算相似度。

问题: 如何计算每个数据的低维表示?
(1)类SVD方法;(2)类PCA方法

这里以类SVD方法为例,做出解释说明。

第一步,填充m×n不完全矩阵R中的未知项。方法:(1)以对应行的平均值(即对应用户的平均评分)作为未知项的估值。(2)用列的平均值(即对应物品的平均评分)作为估值。结果表示为Rf.

第二步,计算n×n的物品相似度矩阵SS=RfTRfS为半正定的。

为了确定SVD的控制基向量,我们对相似度举证S施行如下的对角化:S=PΔPT

这里,P是一个n×n的矩阵,其列包含S的正交特征向量。Δ是一个对角矩阵,其对角线上是S的非负特征向量。令Pdn×d的矩阵,仅包含P的最大的d个特征向量对应的列。那么,矩阵之积RfRd就是Rf的低维表示。注意,由于Rfm×n的矩阵,Pdn×d的矩阵,所以降维表示RfRd的维度为m×d。因此这时m个用户每个都能够在d维空间内表示。这样的表示被用于决定每位用户的同组群体。

处理偏差

注意,矩阵Rf是由不完全矩阵R以行或列的均值填入未知项得到的。此方法会引起偏差的。

下表为12个用户对3部电影的评分(1~7),假设使用PCA降维,需要估计协方差矩阵。假设未知值用列的均值代替。

显然,《Gladiator》和《Nero》之间的关联度非常高,因为在已有的用户评分中,它们的评分结果非常相似。《Godfather》和《Gladiator》之间的关联似乎不是很明显。但是,有很多用户没有对《Nero》做出评分。由于《Nero》的平均得分为(1+7+1+7)/4=4,所以这些未知评分被4给代替。这些新项的加入明显降低了《Gladiator》和《Nero》之间的协方差。然而新添加的项对《Godfather》和《Gladiator》之间的协方差没有影响。填上未知评分后,3部电影中每对电影的协方差估计如下:

根据上面的统计,《Godfather》和《Gladiator》之间的协方差大于《Gladiator》和《Nero》之间的协方差。这看上去貌似不怎么对,因为在原始表中,《Gladiator》和《Nero》的评分在两者都已知的评价中是一样的。因此,《Gladiator》和《Nero》之间的协方差应该更高。这个偏差可能是因为平均值填充未知项导致的。矩阵中未知项的比例越大,平均填充技术的偏差越大。

(1) 极大似然估计

概念重构法提出使用概率技术,比如EM算法来估计协方差矩阵。假设数据符合生成模型,即把已知项看成是生成模型的输出。对协方差矩阵的估计可以看作是生成模型参数估计的一部分。

方法:计算协方差矩阵的最大似然估计。每对物品之间的协方差仅使用已知项进行估计。也就是,用户在某对物品上做出评价,其协方差可计算,但当没有用户在一对物品上做出共同评价时,协方差被估计为0。使用这种方法,得到的协方差矩阵为:

这种情况下,立刻可以看出《Gladiator》和《Nero》之间的协方差几乎是《Godfather》和《Gladiator》之间的协方差的3倍。而且,《Nero》的方差几乎是原始估计的3倍,并是所有电影中最大的。这个例子说明修正偏差在某些情况中可以有非常明显的效果。矩阵中未知项的比例越大,平均填充技术的偏差就越大。因此,改良的方法只利用已知项计算协方差。虽然这种方法并不总是有效,但是它比平均填充更加高级。降维后的n×d的基矩阵Pd通过选择协方差矩阵的前d个特征向量计算得到。

(2) 不完全数据的直接矩阵分解

上面所提方法的不足:无法解决评分矩阵过度稀疏的问题。

方法:矩阵分解法

未完待续。。。

参考文献:
Charu C. Aggarwal 著, 推荐系统原理与实践

10-03 21:38