矩阵分解模型(1):ALS学习算法

ALS算法理解   ALS算法全称为交替最小二乘法(Alternating Least Squares),是一种基于协同过滤思想的矩阵分解算法。其亮点之一就在于优化参数时使用了交替最小二乘法,而非常规的SGD或者是MBGD,这一点就决定了ALS算法可以进行分布式并行计算,因此其被收录于Spark的Mlib以及ML库中。下面将详细介绍这一算法: 一、隐语义模型 1.基本思想 在当前大数据环境下如果构建 用户-物品 共现矩阵其肯定是十分稀疏的,发生交互的用户和物品一定是少数,因此传统的矩阵分解方法(例如SVD)不再适用。 用 阅读详情

一、矩阵分解模型。

用户对物品的打分行为可以表示成一个评分矩阵A(m*n),表示m个用户对n各物品的打分情况。如下图所示:


其中,A(i,j)表示用户user i对物品item j的打分。但是,用户不会对所以物品打分,图中?表示用户没有打分的情况,所以这个矩阵A很多元素都是空的,我们称其为“缺失值(missing value)”。在推荐系统中,我们希望得到用户对所有物品的打分情况,如果用户没有对一个物品打分,那么就需要预测用户是否会对该物品打分,以及会打多少分。这就是所谓的“矩阵补全(填空)”。

ALS 的核心就是下面这个假设:打分矩阵A是近似低秩的。换句话说,一个 的打分矩阵 A 可以用两个小矩阵和的乘积来近似:。这样我们就把整个系统的自由度从一下降到了。我们接下来就聊聊为什么 ALS 的低秩假设是合理的。世上万千事物,人们的喜好各不相同。但描述一个人的喜好经常是在一个抽象的低维空间上进行的,并不需要把其喜欢的事物一一列出。举个例子,我喜欢看略带黑色幽默的警匪电影,那么大家根据这个描述就知道我大概会喜欢昆汀的《低俗小说》、《落水狗》和韦家辉的《一个字头的诞生》。这些电影都符合我对自己喜好的描述,也就是说他们在这个抽象的低维空间的投影和我的喜好相似。再抽象一些,把人们的喜好和电影的特征都投到这个低维空间,一个人的喜好映射到了一个低维向量,一个电影的特征变成了纬度相同的向量,那么这个人和这个电影的相似度就可以表述成这两个向量之间的内积。 我们把打分理解成相似度,那么“打分矩阵A(m*n)”就可以由“用户喜好特征矩阵U(m*k)”和“产品特征矩阵V(n*k)”的乘积来近似了。矩阵U、矩阵V如下图所示:


U V

二、交替最小二乘法(ALS)。

矩阵分解模型的损失函数为:



有了损失函数之后,下面就开始谈优化方法了,通常的优化方法分为两种:交叉最小二乘法(alternative least squares)和随机梯度下降法(stochastic gradient descent)。本文使用交叉最小二乘法(ALS)来最优化损失函数。算法的思想就是:我们先随机生成然后固定它求解,再固定求解,这样交替进行下去,直到取得最优解min(C)。因为每步迭代都会降低误差,并且误差是有下界的,所以 ALS 一定会收敛。但由于问题是非凸的,ALS 并不保证会收敛到全局最优解。但在实际应用中,ALS 对初始点不是很敏感,是不是全局最优解造成的影响并不大。

算法的执行步骤:

1、先随机生成一个。一般可以取0值或者全局均值。

2、固定(即:认为是已知的常量),来求解。

此时,损失函数为:

由于C中只有Vj一个未知变量,因此C的最优化问题转化为最小二乘问题,用最小二乘法求解Vj的最优解:

固定j(j=1,2,......,n),则:C的导数


令,得到:


即:


令,,则:

按照上式依次计算v1,v2,......,vn,从而得到。

3、固定(即:认为是已知的量),来求解。

此时,损失函数为:

同理,用步骤2中类似的方法,可以计算ui的值:

令,得到:


即:


令,,则:



依照上式依次计算u1,u2,......,um,从而得到。

4、循环执行步骤2、3,直到损失函数C的值收敛(或者设置一个迭代次数N,迭代执行步骤2、3 N次后停止)。这样,就得到了C最优解对应的矩阵U、V。

地址:http://blog.youkuaiyun.com/oucpowerman/article/details/49847979

推荐系统 | 基础推荐模型 | 矩阵分解模型 | 隐语义模型 | PyTorch实现 矩阵分解 | 隐语义模型 | PyTorch实现 阅读详情

相关推荐

深入理解Spark ML:基于ALS矩阵分解的协同过滤算法与源码分析

http://blog.youkuaiyun.com/u011239443/article/details/51752904随着互联网的迅猛发展,为了满足人们在繁多的信息中获取自己需要内容的需求,个性化推荐应用而生。协同过滤推荐是其中运用最为成功的技术之一。其中,基于用户的最近邻法根据相似用户的评分来预测当前用户的评分。然而,在用户数量以及用户评分不足的情况下,该方法存在冷启动和数据稀疏的问题。为了解决这两个问题,业界提出了提出了基于项的最近邻法,利用项之间相似性稳定的特点可以离线计算相似性,降低了在线计算量,提高了推

3万+

ALS算法介绍(协同过滤算法介绍)

目录一、ALS算法概括二、ALS算法原理及运用(1)、协同过滤(2)、ALS算法工作原理(3)、ALS算法输入的参数三、代码实现 一、ALS算法概括 1、ALS算法用来补全用户评分矩阵。由于用户评分矩阵比较稀疏,将用户评分矩阵进行分解,变成V和U的乘积。通过求得V和U两个小的矩阵来补全用户评分矩阵。 2、ALS算法使用交替最小二乘法来进行求解 3、ALS分为显示反馈和隐式反馈两种。显示反馈是指用户有明确的评分。对于商品推荐来说,大部分是通过用户的行为,获取隐式反馈的评分。隐式反馈评分矩阵需要进行处理,如果有

qq_42448606的博客 2万+

推荐系统之ALS算法详解

ALS算法是2008年以来,用的比较多的协同过滤算法。它已经集成到Spark的Mllib库中,使用起来比较方便。 从协同过滤的分类来说,ALS算法属于User-Item CF,也叫做混合CF。它同时考虑了User和Item两个方面。 用户和商品的关系,可以抽象为如下的三元组:<User,Item,Rating>。其中,Rating是用户对商品的评分,表征用户对该商品的喜好程度。 ALS...

GFDGFHSDS的博客 1万+

机器学习(十四)——协同过滤的ALS算法(2)、主成分分析

机器学习(十四)——协同过滤的ALS算法(2)、主成分分析

antkillerfarm的专栏 2万+

推荐算法——矩阵分解

矩阵分解;SVD;ALS;SGD

weixin_43876625的博客 1万+

ALS算法--交替最小二乘算法

算法概述: ALS是交替最小二乘(alternating least squares)的简称。在机器学习中,ALS特指使用交替最小二乘求解的一个协同推荐算法。它通过观察到的所有用户给商品的打分,来推断每个用户的喜好并向用户推荐适合的商品。比如下图: 这个矩阵的每一行代表一个用户(u1,u2,u3)、每一列代表一个商品(v1,v2,v3)、用户的打分为1-5分。这个矩阵只显示了观察...

Diana的博客 9624

张量分解 | CP / Tucker / BTD(1)

……

u013669912的博客 1287

3.8 矩阵分解算法详解:ALS、SVD,推荐系统中的降维技术

矩阵分解原理:将大矩阵分解为小矩阵两种方法:SVD和ALS选择原则:根据数据规模选择实际应用:Spark MLlib等工具。

yonggeit的博客 3417

【推荐系统入门到项目实战】(三):矩阵分解和ALS算法

矩阵分解(MF)是一种隐语义模型,它通过隐类别匹配用户和item来做推荐。User矩阵和Item矩阵,User矩阵每一行代表一个用户的向量,Item矩阵的每一列代表一个item的向量。将User矩阵和Item矩阵的维度降低到隐类别个数的维度。根据用户的行为,矩阵分解又可以分为显式矩阵分解和隐式矩阵在显式MF中,用户向量和物品向量的内积拟合的是用户对物品的实际评分在隐式MF中,用户向量和物品向量的内积拟合的是用户对物品的偏好(0或1),拟合的强度由置信度控制,置信度又由行为的强度决定。

阿里云专家博主、数据科学领域优质创作者、统计er在读 2万+

【矩阵分解】优化方法-交替最小二乘ALS(Alternating Least Squares)

需要清楚,这里的ALS是求解的方法,类似SGD,前面将的SVD、Funk-SVD等方法,是构造了不同的损失函数。那么损失函数怎么求解得到参数解?ALS可以达到这一目的。

凝眸伏笔的博客 6232

矩阵分解ALS-交替最小二乘法

ALS(alternating least squares) ALS是交替最小二乘的简称。在机器学习中,ALS特指使用交替最小二乘求解的一个协同推荐算法。如:将用户(user)对商品(item)的评分矩阵分解成2个矩阵: 把原来的矩阵拆分成: 如何从评分矩阵中分解出User矩阵和Item矩阵, 只有左侧的评分矩阵R是已知的 User矩阵和Item矩阵是未知 学习出User矩阵和Item矩阵,使得User矩阵*Item矩阵与评分矩阵中已知的评分差异最小 => 最优化问题 我们最终的目的是使求得的

s_daqing的博客 4243

[矩阵分解]基于隐式反馈的矩阵分解ALS(spark实现)

目录 一、ALS模型 1、模型定义 2、参数求解 3、推荐计算 二、pyspark实现ALS模型 三、矩阵分解模型与协同过滤模型比较 一、ALS模型 1、模型定义 用户u对商品i的偏好: 其中,在隐式反馈中无法获取用户对商品明确的评分,在视频推荐场景中rui表示为视频观看的时长比例,在商品推荐场景中rui表示为对商品点击次数等。 用户的隐...

woniu201411的博客 5929

Spark---ALS推荐算法

Spark——ALS推荐算法推荐算法介绍协同过滤式推荐的优缺点ALS推荐算法的介绍用户对产品项目的评分稀疏矩阵(Sparse Matrix)的问题矩阵分解(Matrix Factorization)数据下载环境说明在IPython Notebook中运行推荐程序首先启动所有虚拟机并启动Hadoop集群Cluster切换至IPython Notebook工作目录并在Hadoop YARN-clien...

Tubby的博客 6139

【推荐系统算法实战】 ALS 矩阵分解算法

##一、算法描述 ALS ( Alternating Least Squares ) ,交叉最小二乘法。 ###1.原理 ####问题描述 ALS的矩阵分解算法常应用于推荐系统中,将用户(user)对商品(item)的评分矩阵,分解为用户对商品隐含特征的偏好矩阵,和商品在隐含特征上的映射矩阵。 与传统的矩阵分解SVD方法来分解矩阵 R(R∈Rm×nR\in \mathbb{R}^{m\ti...

AI天才研究院 9896

推荐算法-矩阵分解(Matrix Factorization,MF)

常用的推荐算法 基于协同过滤的推荐算法是主流思想之一; 基于模型与基于领域的推荐算法之间的区别为:基于领域的协同过滤是将用户的数据读入到内存中进行运算,也称为基于内存的协同过滤(Memory-based)。数据量少的情况下,可以在线实时推荐;基于模型的推荐(Model-based),采用机器学习的方式,分成训练集和测试集。离线训练时间比较长,但训练完成后,推荐过程比较快。 隐语义模型是指通过挖掘用户与物品之间的隐含联系,从而对用户进行推荐。 一、矩阵分解是什么? 如上表所示,是一个user-item的评

Huangxin_Yu的博客 8288

基于ALS算法的简易在线推荐系统

继前期完成广义线性模型的在线流式机器学习的代码后,我们对spark的mllib中的推荐系统这一部分比较感兴趣,因为推荐系统这一部分在现实生活中也非常实用,尤其是基于地理位置的在线推荐系统目前非常火热,很多商业软件如大众点评,淘点点等都希望能根据用户以往的一些行为和当前所处的地理位置给用户做出最佳的推荐,给用户带来意想不到的惊喜。 在推荐系统领域,目前市面上中文的参考书并不多,我们主要学习了目前就

zhangyuming010的专栏 1万+
上一篇: 【Spark Mllib】决策树,随机森林——预测森林植被类型
下一篇: Spark RDD、DataFrame和DataSet的区别
Next__One
博客等级 码龄9年 14粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值