梯度下降与矩阵分解实例解析

一、SGD的一个例子说明

  下图是我目前得到的一个评分文件,3列的含义分别是UID:User ID,IID:Item ID,score:用户评分.可以看到一共有3个用户,4个物品.

  他们可以构成一个3 * 4的评分矩阵矩阵.我现在取k=2,要把它们分解成为一个32的P矩阵和一个24的Q矩阵.

  首先初始化P和Q矩阵,一般都用符合正态分布的随机数X~N(0,1)来填充矩阵.

  现在我计算u=1时的∂L/∂Pu,取λ的值为1 首先计算u=1,i=1这个评分记录带来的梯度分量,即u=1,i=1时的的值,这时

然后计算u=1,i=2这个评分带来的梯度分量:

所以,u=1时的梯度为

刚才提到的迭代公式: p_u=p_u-η ∂L/∂Pu,其中η表示学习率,就是平时我们说的梯度下降时的步长,取η=0.05 于是有

可见,通过这一次对于p_1的梯度下降, p_1对应的向量从随机产生的

我们来验证一下这个变化是否是的预估的值更加准确了 原来对于R_11的估计误差为

新的对于R_11的估计误差为

  确实比原来有提升.按照上述步骤分别更新所有P矩阵中的p_i,然后用更新好的P矩阵,用公式(4)中的方法更新Q,再用更新好的Q第二次更新P.这种迭代方法最终可以使得|R-PQ|的值缩小,当|R-PQ|在下一轮迭代的过程中不再变小时,我们就认为在当前的学习率η下,P,Q已经得到了局部最优解.

二、加速梯度下降

  通过逐步减小参与计算的数据量加速(类似SPFA对贝尔曼算法的优化)

  在上面的介绍中我们可以看到整个的迭代都是矩阵Q和矩阵P不断变化,使得P*Q的结果接近R的过程。对于某些用户和物品节点而言,这些点的K维向量很快就收敛到了我们的目标值,即对于这些用户节点而言,

  对于某些点,误差值在迭代开始没几轮的时候就达到了目标范围,这个某些点提前结束迭代的功能对于物品节点也成立.这些点可以不用参加之后的迭代。

  通过图计算可以实现,比如spark就带有这些功能。

时间: 2024-11-14 12:47:52

梯度下降与矩阵分解实例解析的相关文章

梯度下降的矩阵分解公式推导

目标函数是要最小化C: 求其梯度: 梯度下降求最小值:

Matlab梯度下降解决评分矩阵分解

for iter = 1:num_iters %梯度下降 用户向量 for i = 1:m %返回有0有1 是逻辑值 ratedIndex1 = R_training(i,:)~=0 ; %U(i,:) * V' 第i个用户分别对每个电影的评分 %sumVec1 第i个用户分别对每个电影的评分 减去真实值 sumVec1 = ratedIndex1 .* (U(i,:) * V' - R_training(i,:)); product1 = sumVec1 * V; derivative1 =

【干货】AI 实践者需要掌握的10大深度学习方法:反向传播、迁移学习、梯度下降……

过去10年,人们对机器学习的兴趣激增.几乎每天,你都可以在各种各样的计算机科学课程.行业会议.华尔街日报等等看到有关机器学习的讨论.在所有关于机器学习的讨论中,许多人把机器学习能做的事情和他们希望机器学习做的事情混为一谈.从根本上讲,机器学习是使用算法从原始数据中提取信息,并在某种类型的模型中表示这些信息.我们使用这个模型来推断还没有建模的其他数据. 神经网络是机器学习的一种模型,它们至少有50年历史了.神经网络的基本单元是节点(node),基本上是受哺乳动物大脑中的生物神经元启发.神经元之间的

推荐系统-基于矩阵分解的LFM模型

这里我想给大家介绍另外一种推荐系统,这种算法叫做潜在因子(Latent Factor)算法.这种算法是在NetFlix(没错,就是用大数据捧火<纸牌屋>的那家公司)的推荐算法竞赛中获奖的算法,最早被应用于电影推荐中.这种算法在实际应用中比现在排名第一的 @邰原朗 所介绍的算法误差(RMSE)会小不少,效率更高.我下面仅利用基础的矩阵知识来介绍下这种算法. 这种算法的思想是这样:每个用户(user)都有自己的偏好,比如A喜欢带有小清新的.吉他伴奏的.王菲等元素(latent factor),如果

再谈矩阵分解在推荐系统中的应用

本文将简单介绍下最近学习到的矩阵分解方法. (1)PureSvd 矩阵分解的核心是将一个非常稀疏的评分矩阵分解为两个矩阵,一个表示user的特性,一个表示item的特性,将两个矩阵中各取一行和一列向量做内积就可以得到对应评分. 那么如何将一个矩阵分解为两个矩阵就是唯一的问题了.说到这里大家就可能想起了在线代和数值分析中学到的各种矩阵分解方法,QR,Jordan,三角分解,SVD... 这里说说svd分解. svd是将一个任意实矩阵分解为三个矩阵U,S,V,其中,U,V是两个正交矩阵,称为左右奇异

实例解析如何运用好网页上一些空白

  空白,在网页上主要是指除图形,文字内容之外的空间.网页中的空白虽没有像山水画中"计白当黑"的那么浪漫,但他在引导用户视觉和创造流畅的视觉感受方面却是至关重要的. 设计的原则:"页面设计的主要目标是视觉认知和清楚易读.这些目标必须通过和谐的排印.有效地利用图画和空白空间,有节制的利用(字行)来完成- -多次重复,在视觉上形成必然联系可以引导视线和帮助读者快速浏览.设计中,留出大量空白空间作为空白表现领域,使标题"突出",大的图画得到视觉上的延伸.&quo

机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

版权声明:    本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言:    上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公开课,在verycd可下载,可惜没有翻译.不过还是可以看.另外一个是prml-pattern r

进阶隐式矩阵分解——探讨如何实现更快的算法

本文由北邮@爱可可-爱生活 老师推荐,阿里云组织翻译. 以下为译文: 阶隐式矩阵分解   前不久我发布了一个Python版本的隐式交替最小二乘矩阵分解算法(代码),虽然其速度不慢:但是本着精益求精的精神,本文将围绕Conjugate Gradient(共轭梯度)方法来探讨更快的算法.  在隐式反馈数据集协作过滤(Collaborative Filtering for Implicit Feedback Datasets)中描述的算法由于极强的扩展性,因此十分流行.不但Spark mllib中的隐

浅谈矩阵分解在推荐系统中的应用

推荐系统是当下越来越热的一个研究问题,无论在学术界还是在工业界都有很多优秀的人才参与其中.近几年举办的推荐系统比赛更是一次又一次地把推荐系统的研究推向了高潮,比如几年前的Neflix百万大奖赛,KDD CUP 2011的音乐推荐比赛,去年的百度电影推荐竞赛,还有最近的阿里巴巴大数据竞赛.这些比赛对推荐系统的发展都起到了很大的推动作用,使我们有机会接触到真实的工业界数据.我们利用这些数据可以更好地学习掌握推荐系统,这些数据网上很多,大家可以到网上下载. 推荐系统在工业领域中取得了巨大的成功,尤其是