美文网首页
Matrix Factorization推荐系统数学推理

Matrix Factorization推荐系统数学推理

作者: 崔吉龙 | 来源:发表于2019-03-11 19:48 被阅读0次

    问题描述

    我们知道Matrix Factorization系统关键是要把Matrix矩阵分解为两个矩阵因子W和U,但是怎么分解因子,是我们面对的主要问题,机器学习的目的就是要通过大量的原始数据,自己计算出最合适的W和U。这就是机器学习的意义所在。

    机器学习就是一种逼近

    那么我们逼近的是什么呢?
    \hat{R} 是W和U点乘的结果,但是这个\hat{R},并不是原始的R,和原始的R只是近似而已,所以我们称作R(hat)。我们希望我们学习到的R(hat)能够和R尽可能的相似。如何衡量他们之间的相似度,所以我们定义了一个loss函数J(平方差)

    J = \sum_{i,j\in \Omega}(r_{ij} - \hat{r}_{ij})^2=\sum_{i,j\in\Omega}(r_{ij}-w^T_{i}u_{j})^2

    其中\Omega是所有用户对商品投票的合集。
    r_{ij}是已经知道的用户i对商品j的投票值。
    w_i是用户i所有隐藏特征值,u_j是商品j的所有隐藏特征值。
    w_iu_j都是未知的,需要我们机器学习通过逼近法去尝试出来的。

    如何逼近如何尝试

    注意了,这里说的就是机器学习的核心思想,理解了这一点你在接下来的推理过程中才不会坐晕车。
    第1步,给w_iu_j分配随机数字,这个时候loss函数J一定非常大。
    第2步,我们修正w_iu_j的值,使J的值,变得小一点。
    我们只需要重复步骤2,就可以让J值,无限变小,期望能达到0。

    关键的第2步如何实现

    首先w_iu_j的值都是随机的,我们应该怎么变换呢,是让他们变大还是变小?是变大多少,还是变小多少?这个是有科学依据的。奥秘就在我们的loss函数J,首先保证是凸函数,就是说在loss函数对w_iu_j都是可导的,可导意味着在当前w_iu_j,都是有梯度的,梯度就表示了在这一点,我们向那个方向前进一小步,loss函数就会变少一点点。

    梯度除了能告诉我们的方向,还能告诉我们在当前这一点loss函数的变化率,这样我们就知道我们让w_i,u_j分别变化多少,不至于变化步骤太大,或者变化步骤太小,循序的变化。

    梯度公式

    我们对上面Loss函数J进行求导,可以得到J对w和J对u的倒数函数。上面我们说了,求倒数的目的是根据倒数确定我们应该怎么修正w和u的值。
    第一个我们看对w求导。

    \frac{\partial J}{\partial w_i} = 2 \sum_{j\in\Psi_i}(r_{ij} - w_i^Tu_j)(-u_j)

    在这个式子中:
    r_{ij} 是当前用户i对物品j的投票。
    w_i 是当前的值(刚开始是随机的值)。
    u_j 是当前的值(刚开始是随机的值)。
    这样我们就得到了一个Loss函数J对w的导函数,就能知道每一点处,J对w的变化率。因为每一个w其实都有j个特征向量,所以这里的j是表示用户对商品有投票的项。

    相关文章

      网友评论

          本文标题:Matrix Factorization推荐系统数学推理

          本文链接:https://www.haomeiwen.com/subject/kkuspqtx.html