构建企业级推荐系统:算法、工程实现与案例分析
上QQ阅读APP看书,第一时间看更新

6.1 矩阵分解推荐算法的核心思想

第4章中讲过,根据协同过滤推荐算法,用户的操作行为可以转化为如图6-1所示的用户行为矩阵。其中,Rij是用户i对标的物j的评分,如果是隐式反馈,值为0或者1(隐式反馈可以通过一定的策略转化为得分),本文主要用显式反馈(用户的真实评分)来讲解矩阵分解算法,对于隐式反馈,会在6.4.5节中专门讲解和说明。

图6-1 用户对标的物的操作行为矩阵

矩阵分解算法是将用户评分矩阵R分解为两个矩阵Un×k、Vk×m的乘积。

Rn×m=Uk*Vk×m

其中,Un×k代表用户特征矩阵,Vk×m代表标的物特征矩阵。

某个用户对某个标的物的评分,就可以采用矩阵Un×k对应的行(该用户的特征向量)与矩阵Vk×m对应的列(该标的物的特征向量)的乘积(内积)。有了用户对标的物的评分就很容易为用户做推荐了。具体可以采用如下方式。

首先将用户特征向量(u1,u2,…,uk)乘以标的物特征矩阵Vk×m,最终得到用户对每个标的物的评分(r1,r2,…,rm),如图6-2所示。

图6-2 为用户计算所有标的物评分

得到用户对标的物的评分(r1,r2,…,rm)后,从该评分中过滤掉用户已经操作过的标的物,并针对剩下的标的物得分做降序排列取topN推荐给用户。

矩阵分解算法的核心思想是将用户行为矩阵分解为两个低秩矩阵的乘积,通过分解,分别将用户和标的物嵌入到同一个k维的向量空间(k一般很小,几十到上百),用户向量和标的物向量的内积代表了用户对标的物的偏好度。所以,矩阵分解算法本质上也是一种嵌入方法(第9章介绍嵌入方法在推荐系统中的应用)。

我们称k维向量空间的每一个维度是隐因子(latent factor),之所以叫隐因子,是因为每个维度不具备与现实场景对应的具体可解释的含义,所以矩阵分解算法也是一类隐因子算法。这k个维度代表的是某种行为特性,但是这个行为特性又是无法用具体的特征解释的,从这点也可以看出,矩阵分解算法的可解释性不强,我们比较难以解释矩阵分解算法为什么这么推荐。

矩阵分解的目的是通过机器学习的手段将用户行为矩阵中缺失的数据(用户没有评分的元素)填补完整,最终达到可以为用户做推荐的目的。

讲完了矩阵分解算法的核心思路,那么如何利用机器学习算法来对矩阵进行分解呢?这就是下节要讲的主要内容。