美文网首页
ALS推荐算法

ALS推荐算法

作者: 春田花花z | 来源:发表于2019-04-18 14:55 被阅读0次

简要描述:

  • ALS是交替最小二乘(alternating least squares)的简称。在机器学习的范畴中,ALS特指使用交替最小二乘求解的一个协同推荐算法。它通过观察到的所有用户给产品的打分,来推断每个用户的喜好并向用户推荐适合的产品。不过ALS无法准确评估新加入的用户或商品。这个问题也被称为Cold Start问题。

举例如下:

  • ALS推荐算法是基于矩形分解的一种方法。先看看矩阵分解的含义。

  • 我们拿电影推荐作为例子。推荐所使用的数据可以抽象成一个[m,n]的矩阵R,R的每一行代表m个用户对所有电影的评分,n列代表每部电影对应的得分。R是个稀疏矩阵,一个用户只是对所有电影中的一小部分看过,有评分。通过矩阵分解方法,我可以把这个低秩的矩阵,分解成两个小矩阵的点乘。公式如下:


    image.png
  • 矩阵R(评分为1、2、3、4、5):


    image.png
  • 我把矩阵分解之后,就变成了下面两个小矩阵(F是隐藏特征):


    image.png

    (用户的特征)


    image.png
    (电影的特征)
  • 分解之后的矩阵,变成了根据特征数决定维数的向量。这种求出的向量作为用户的特征,用在推荐上,被成为隐藏特征或者隐藏因子。

  • 为什么进行矩阵分解呢?因为推荐使用的矩阵不仅是稀疏的而且往往是低秩的。矩阵分解相当于进行了特征提取或者数据的降维。

  • 为了求出两个分解后的矩阵,我可以产生两个维度一样的随机矩阵U和V,点乘之后得到同样m行n列的矩阵R1. 这一步我已经得到两个[m,n]的矩阵,其中一个是反映用户的真实喜好的数据,矩阵R。另一份只是一个近似数据,矩阵R1。我可以找到一个公式来衡量,两个同阶的矩阵的相似程度:


    image.png

这是一个损失函数,我的目的就是让这个函数的值最小化,使得我构造的矩阵能够最接近原始矩阵。

ALS算法参数(基于java):

  • 关键代码:
MatrixFactorizationModel model = ALS.train(ratings, rank, iterations,lambda);
  • 解释:
  1. ratings:训练集,数据格式:(用户id 物品id 评分 )


    image.png
  2. rank:矩阵分解时对应的低维的维数,即特征向量维数或者说特征数。如果这个值太小拟合的就会不够,误差就很大;如果这个值很大,就会导致模型大泛化能力较差。这个值会影响矩阵分解的性能,越大则算法运行的时间和占用的内存可能会越多。通常需要进行调参,一般可以取10-200之间的数。
  3. iterations:在矩阵分解用交替最小二乘法求解时,进行迭代的最大次数。这个值取决于评分矩阵的维度,以及评分矩阵的系数程度。一般来说,不需要太大,比如5-20次即可。
  4. lambda:正则因子。lambda也是和rank一样的,如果设置很大就可以防止过拟合问题,如果设置很小,其实可以理解为直接设置为0,那么就不会有防止过拟合的功能了;怎么设置呢?可以从0.0001 ,0.0003,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10这样每次大概3倍的设置,先大概看下哪个值效果比较好,然后在那个比较好的值(比如说0.01)前后再设置一个范围,比如(0.003,0.3)之间,间隔设置小点,即0.003,0.005,0.007,0.009,0.011等等等。
  • 调优:
    需要引入均方根误差(RMSE):均方根误差是用来衡量观测值同真值之间的偏差。

  • 用途:预测评分和推荐物品或者用户等。

  1. 预测用户对物品的评分
predict(int user, int product)
  1. 预测用户集对物品集的评分
predict(JavaPairRDD<Integer, Integer> usersProducts)
  1. 推荐用户k个物品
recommendProducts(final int user, int num)
  1. 对物品推荐k个用户
recommendUsers(final int product, int num)
  1. 对所有用户推荐物品,物品数量取前k个
recommendProductsForUsers(int num)
  1. 对所有物品推荐用户,用户数量取前k个
recommendUsersForProducts(int num)

相关文章

  • 协同过滤-ALS算法

    ALS算法应用场景 ALS属于数据挖掘,可以做推荐系统,比如电影推荐,商品推荐,广告推荐等. 原理就是给各个指标,...

  • implicit 库 ALS 算法分析

    implicit 库 ALS 算法分析 ALS 算法 推荐模型基于“隐式反馈数据集的协同过滤”一文中描述的算法,其...

  • ALS推荐算法

    简要描述: ALS是交替最小二乘(alternating least squares)的简称。在机器学习的范畴中,...

  • 推荐系统 - ALS算法

    ALS简介 ALS算法中文翻译为 交替最小二乘法,其是一种矩阵分解算法;使用两个矩阵拟合用户 - 商品评分矩阵;为...

  • 总结

    1.ALS 2.基于ALS算法的改进 3.实验结果分析 4.结论 1.ALS 1.1ALS算法的基本思想 ALS(...

  • 推荐系统9:MF推荐

    1.LFM推荐 思路和ALS算法类似,区别在于,ALS利用坐标下降法,LFM利用梯度下降法假设: 评分矩阵??,?...

  • pyspark协同过滤算法(ALS)

    ALS:Alternating Least Square,交替最小二乘法,用于推荐系统 算法原理 假设有一矩阵R,...

  • 推荐系统 —— 实践 Spark ALS算法

    这里就不啰嗦了,直接贴代码,然后拿来运行就可以看到结果了,不过请注意该代码是基于 movelens 数据,所以想要...

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

    一、算法描述 ALS ( Alternating Least Squares ) ,交叉最小二乘法。 1.原理 问...

  • SparkMLlib ALS算法

    本次试验使用movieLens数据集的一千万行评分数据进行训练和预测,每个用户取预测评分最高的Top10存入HBa...

网友评论

      本文标题:ALS推荐算法

      本文链接:https://www.haomeiwen.com/subject/xpqtgqtx.html