其他分享
首页 > 其他分享> > 【无标题】矩阵分解

【无标题】矩阵分解

作者:互联网

一、矩阵算法概述
        原本在使用各种APP的时候觉得推荐算法是一个神奇的东西,恰巧要做手厅用户的前人千面,所以利用协同过滤做了手厅的基于产品的推荐模型,发现出来的产品推荐很接近,更充满好奇心,所以有了接下来各种推荐算法的学习。在各种资料中,发现了基于矩阵分解的推荐系统,学习了它的原理之后,发现矩阵算法对于推荐的效果更好且更好运用。接下来介绍矩阵分解的原理。
矩阵分解(Matrix Factorization, MF),下面简称MF,矩阵算法就是,将用户和产品矩阵中的数据,分解成两个矩阵(用User矩阵和Item矩阵),两个矩阵相乘得到的结果就是预测评分。当我们要计算第i 个用户对第j 个item的预测评分时),我们就可以用User矩阵的第i行和Item矩阵的第j 列做内积,这个内积的值就是预测评分了。对于某个用户进行推荐时,我们把他的用户向量和所有item向量做内积,然后按内积从大到小排序,取出前K 个item,过滤掉历史item后推荐给用户。
        那MF是如何从评分矩阵中分解出User矩阵和Item矩阵的呢?简单来说,MF把User矩阵和Item矩阵作为未知量,用它们表示出每个用户对每个item的预测评分,然后通过最小化预测评分跟已知实际评分的差异,学习出User矩阵和Item矩阵。

二、矩阵算法推导公式
        矩阵分解是指一个矩阵分解成两个或者多个矩阵的乘积。对于评分矩阵记为R(m×n),分解成两个矩阵P(m×k)和Q(k×n),我们要使得矩阵P(m×k)和Q(k×n)的乘积能够还原原始的矩阵R(m×n)。

                                 

其中,矩阵P(m×k)表示的是m个用户与k个主题之间的关系,而矩阵Q(k×n)表示的是k个主题与n个商品之间的关系。
        那么接下来的问题是如何求解矩阵Pm×kPm×k和Qk×nQk×n的每一个元素,可以将这个问题转化成机器学习中的回归问题进行求解。
        损失函数
        可以使用原始的评分矩阵Rm×nRm×n与重新构建的评分矩阵Rm×nRm×n之间的误差的平方作为损失函数,即:

   

最终,求解所有有评分项的损失值和的最小值。

        

损失函数的求解,可以通过梯度下降法求解,求解损失函数的负梯度:
根据负梯度的方向更新变量:

通过迭代,直到算法最终收敛。为了能够有较好的泛化能力,为了防止过拟合,会在损失函数中加入正则项,以对参数进行约束,加入L2正则的损失函数为:

求解损失函数的负梯度:

 

根据负梯度的方向更新变量:

 通过迭代,直到算法最终收敛。
 

标签:Item,评分,矩阵,无标题,item,算法,分解,User
来源: https://blog.csdn.net/weixin_52420802/article/details/122527530