Spark ALS算法理解

ALS(交替最小二乘法)是Spark推荐系统中用于求解模型最优解的算法,属于基于模型的协同过滤。它通过矩阵分解补全用户-物品矩阵,估计未知评分。相比SVD,ALS更适用于大规模数据,具有高度并行化特性,适用于稀疏矩阵,减少存储空间需求。ALS处理显性和隐性反馈,提供用户和物品推荐。

ALS算法
ALS的意思是交替最小二乘法(Alternating Least Squares),它只是是一种优化算法的名字,被用在求解spark中所提供的推荐系统模型的最优解。spark中协同过滤的文档中一开始就说了,这是一个基于模型的协同过滤(model-based CF),其实它是一种近几年推荐系统界大火的隐语义模型中的一种。隐语义模型又叫潜在因素模型,它试图通过数量相对少的未被观察到的底层原因,来解释大量用户和产品之间可观察到的交互。操作起来就是通过降维的方法来补全用户-物品矩阵,对矩阵中没有出现的值进行估计。基于这种思想的早期推荐系统常用的一种方法是SVD(奇异值分解)。该方法在矩阵分解之前需要先把评分矩阵R缺失值补全,补全之后稀疏矩阵R表示成稠密矩阵R',然后将R’分解成如下形式:

R' = U^{T}SV

然后再选取U中的K列和V中的S行作为隐特征的个数,达到降维的目的。K的选取通常用启发式策略。

这种方法有两个缺点,第一是补全成稠密矩阵之后需要耗费巨大的存储空间,在实际中,用户对物品的行为信息何止千万,对这样的稠密矩阵的存储是不现实的;第二,SVD的计算复杂度很高,更不用说这样的大规模稠密矩阵了。所以关于SVD的研究很多都是在小数据集上进行的。

隐语义模型也是基于矩阵分解的,但是和SVD不同,它是把原始矩阵分解成两个矩阵相乘而不是三个。

A = XY^{T}

 现在的问题就变成了确定X和Y ,我们把X叫做用户因子矩阵,Y叫做物品因子矩阵。通常上式不能达到精确相等的程度,我们要做的就是要最小化他们之间的差距,从而又变成了一个最优化问题。求解最优化问题我们很容易就想到了随机梯度下降,其中有一种方法就是这样,通过优化如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值