一、矩阵分解模型。
用户对物品的打分行为可以表示成一个评分矩阵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如下图所示:
二、交替最小二乘法(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。
相关推荐
基于Spark MLlib 的 ALS 算法实现的电影推荐系统,采用MovieLens数据集进行分析建模.zip 基于Spark MLlib 的 ALS 算法实现的电影推荐系统,采用MovieLens数据集进行分析建模.zip 基于Spark MLlib 的 ALS 算法实现的...
基于深度学习的监督学习源码+项目说明(使用梯度下降、ALS、LFM算法,使用AngularJS2生成前端框架,数据库为MongoDB,使用ElasticSearch作为搜索服务器,Redis作为缓存数据库,其中包括Spark的离线统计服务、Azkaban...
毕业设计 课程设计 项目开发 系统开发 Spark 机器学习 大数据 算法 源码 获导师指导并通过的高分毕业设计项目,也可作为课程设计和期末大作业 毕业设计 课程设计 项目开发 系统开发 Spark 机器学习 大数据 算法 源码...
Alternating Least Squares (ALS) 交替最小二乘法 (ALS) Anomaly Detection using Autoencoders 使用自动编码器进行异常检测 Understanding CNN Blocks - ResNet, Inception, Bottleneck etc. 了解CNN块 - ResNet...
1、资源内容:电影推荐系统,包括基于ALS、 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程思路清晰、注释明细,都经过测试运行成功,功能ok的情况下才上传的。 3、适用对象:...
数据流数据超过10万个评分1700多个电影标题1000多个用户目录结构用例用户将根据他们以前的评分从系统中获得电影推荐培训输入:用户,电影,评分用户输入:用户名/ ID 输出:电影ML算法:协同过滤(分析历史数据) ...
毕业设计--基于Django的电影推荐系统和论坛,采用协同过滤及als算法 ## 系统采用的技术 前端: bootstrap3 css 框架 后端: django 2.2.1 + sqlite3数据库 (MVC框架) 数据: python异步爬虫从豆瓣top250抓取数据,...
项目开发 系统设计 Spark 机器学习 大数据 算法 源码 项目开发 系统设计 Spark 机器学习 大数据 算法 源码 项目开发 系统设计 Spark 机器学习 大数据 算法 源码 项目开发 系统设计 Spark 机器学习 大数据 算法 源码 ...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,...基于Spark MLlib 的 ALS 算法的电影推荐系统源码+项目说明.zip
毕业设计 课程设计 项目开发 系统开发 Spark 机器学习 大数据 算法 源码 毕业设计 课程设计 项目开发 系统开发 Spark 机器学习 大数据 算法 源码 毕业设计 课程设计 项目开发 系统开发 Spark 机器学习 大数据 算法 ...
毕业设计 课程设计 项目开发 系统开发 Spark 机器学习 大数据 算法 源码 毕业设计 课程设计 项目开发 系统开发 Spark 机器学习 大数据 算法 源码 毕业设计 课程设计 项目开发 系统开发 Spark 机器学习 大数据 算法 ...
资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地...
交替最小二乘(ALS)学习算法用于底层后端实现。 该系统已针对来自音乐流开放源代码服务Audioscrobbler的数据进行了培训和测试。 音乐推荐系统 一种音乐推荐系统,可根据用户的收听历史向他们推荐新的音乐艺术家。 ...
所有代码都是用Python 3编写的,并使用OpenAI Gym的RL环境。高级技术使用Tensorflow实现神经网络。 This repository provides code, exercises and ... In addition to exercises and solution, each folder als
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
基于Spark+ALS矩阵分解的协同过滤算法音乐个性化推荐系统源码+详细文档+全部数据资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过...