赞
踩
ALS是交替最小二乘(alternating least squares)的简称。在机器学习中,ALS特指使用交替最小二乘求解的一个协同推荐算法。它通过观察到的所有用户给商品的打分,来推断每个用户的喜好并向用户推荐适合的商品。举个例子,我们看下面一个8*8的用户打分矩阵
3.1 基于 ALS 的协同过滤算法的改进和优化 在实际的生产环境中,推荐系统往往涉及大量的用户和物品。以 GroupLens 研究小组提供的 MovieLens 开源数据集为例,中等数据量大小的 ratings.bat 文 件中涵盖了 71567 个用户对 10681 部电影的 10000054 条评分数据。如果使用矩 阵的形式表示的话,每一行代表不同的用户,每一列代表不同的电影,矩阵的每一 个元素为用户对电影的评分,那么这个矩阵的存储将产生大量的内存开销;并且, 用户评分过的电影数量往往很小,导致评分矩阵具有相当高的稀疏度,这都给用户 或电影相似度的计算带来不小的困难,最终的推荐效果难以令人满意。矩阵分解的 出现则为稀疏性问题提供了一个不错的解决思路。 3.1.1 矩阵分解与交替最小二乘法 以电影推荐系统为例,假设在推荐系统中有 m 个用户,n 部电影,以用户为 行,电影为列,用户对电影的真实评分作为矩阵的每一个元素,可以得到用户评分 矩阵
。矩阵分解的核心思想可以通过公式(3-1)进行概括:
ALS
指使用交替最小二乘求解的一个协同推荐算法。
每一行代表一个用户(u1,u2,…,u8),
每一列代表一个商品(v1,v2,…,v8),
用户的打分为1-9
分。
这个矩阵只显示了观察到的打分,我们需要推测没有观察到的打分。
ALS
的核心就是这样一个假设:打分矩阵是近似低秩的。换句话说,就是一个m*n
的打分矩阵可以由分解的两个小矩阵U(m*k)
和V(k*n)
的乘积来近似,即 A=UVT,k<=m,n 。这就是ALS
的矩阵分解方法。
这样我们把系统的自由度从O(mn)
降到了O((m+n)k)
。
低维空间的选取。
这个低维空间要能够很好的区分事物,那么就需要一个明确的可量化目标,这就是重构误差。
在ALS
中我们使用 F范数 来量化重构误差,就是每个元素重构误差的平方和。这里存在一个问题,我们只观察到部分打分,A
中的大量未知元是我们想推断的,所以这个重构误差是包含未知数的。
解决方案很简单:只计算已知打分的重构误差。
ALS
算法实现于org.apache.spark.ml.recommendation.ALS.scala
文件中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。