协调过滤算法之ALS

标签: 数据 算法 | 发表时间:2019-07-02 18:59 | 作者:标点符
出处:https://www.biaodianfu.com

ALS(alternating least squares)

ALS是交替最小二乘的简称。在机器学习中,ALS特指使用交替最小二乘求解的一个协同推荐算法。如:将用户(user)对商品(item)的评分矩阵分解成2个矩阵:

  • user对item 潜在因素的偏好矩阵(latent factor vector)
  • item潜在因素的偏好矩阵

假设有m个user和n个item,所以评分矩阵为R。ALS(alternating least squares)希望找到2个比较低纬度的矩阵(X和Y)来逼近这个评分矩阵R。

ALS的核心就是这样一个假设:打分矩阵是近似低秩的。换句话说,就是一个m*n的打分矩阵可以由分解的两个小矩阵U(m*k)和V(k*n)的乘积来近似。这就是ALS的矩阵分解方法。

为了让X和Y相乘能逼近R,因此我们需要最小化损失函数(loss function),因此需要最小化损失函数,在此定义为平方误差和(Mean square error, MSE)。

一般损失函数都会需要加入正则化项(Regularization item)来避免过拟合的问题,通常是用L2,所以目标函数会被修改为:

上面介绍了“最小二乘(最小平方误差)”,但是还没有讲清楚“交替”是怎么回事。因为X和Y都是未知的参数矩阵,因此我们需要用“交替固定参数”来对另一个参数求解。

先固定Y, 将loss function对X求偏导,使其导数等于0:

再固定X, 将loss function对Y求偏导,使其导数等于0:

既然是交替,就会有迭代的模式存在:

ALS-WR(alternating-least-squares with weighted-λ-regularization)

加权正则化交替最小二乘法。上文提到的模型适用于解决有明确评分矩阵的应用场景,然而很多情况下,用户没有明确反馈对商品的偏好,也就是没有直接打分,我们只能通过用户的某些行为来推断他对商品的偏好。比如,在电视节目的推荐的问题中,对电视节目收看次数或时长,这时我们可以推测次数越多看的时间越长,用户的偏好程度越高,但是对于没有收看的节目,可能是用户不知道该节目,或者没有途径获取节目,我们不能确定的推测用户不喜欢该节目,ALS-WR通过置信度权重来解决这些问题:对于更确信用户偏好的项赋予较大的权重,对于没有反馈的项赋予较小的权重。

损失函数为:

其中, $r_{ui}$表示原始量化值,比如观看电影的时间;α表示根据用户行为所增加的信任度

小结

在实际应用中,由于待分解的矩阵常常是非常稀疏的,与SVD相比,ALS能有效的解决过拟合问题。基于ALS的矩阵分解的协同过滤算法的可扩展性也优于SVD。与随机梯度下降的求解方式相比,一般情况下随机梯度下降比ALS速度快;但有两种情况ALS更优于随机梯度下降:

  • 当系统能够并行化时,ALS的扩展性优于随机梯度下降法。
  • ALS-WR能够有效的处理用户对商品的隐式反馈的数据

ALS算法的缺点在于:

  • 它是一个离线算法。
  • 无法准确评估新加入的用户或商品。这个问题也被称为冷启动问题。

参考链接:https://medium.com/@chih.sheng.huang821/%E7%9F%A9%E9%99%A3%E5%88%86%E8%A7%A3-matrix-factorization-%E4%BA%A4%E6%9B%BF%E6%9C%80%E5%B0%8F%E5%B9%B3%E6%96%B9%E6%B3%95-alternating-least-squares-2a71fd1393f7

The post 协调过滤算法之ALS appeared first on 标点符.

相关 [过滤 算法 als] 推荐:

协调过滤算法之ALS

- - 标点符
ALS是交替最小二乘的简称. 在机器学习中,ALS特指使用交替最小二乘求解的一个协同推荐算法. 如:将用户(user)对商品(item)的评分矩阵分解成2个矩阵:. user对item 潜在因素的偏好矩阵(latent factor vector). item潜在因素的偏好矩阵. 假设有m个user和n个item,所以评分矩阵为R.

ALS-WR算法原文译文

- - CSDN博客云计算推荐文章
经过3个晚上的翻译,终于把ALS-WR算法的介绍论文翻译完成. 此次翻译目的是加强对ALS-WR算法的理解和练习自己对专业性英文的能力,由于本人英文水平有限并且该算法使用到了多个高数甚至超越高数和线性代数的一些知识,所以如哪里翻译不对或理解有误,望英语强人,数学高人,算法牛人给个纠正,先于此谢过. 原文见:http://link.springer.com/chapter/10.1007%2F978-3-540-68880-8_32?LI=true#page-1,最好是看英文版的,因为该算法的主要精髓是在那几个数学公式上.

如何使用Spark ALS实现协同过滤

- - 鸟窝
转载自 JavaChen Blog,作者: Junez. 本文主要记录最近一段时间学习和实现Spark MLlib中的协同过滤的一些总结,希望对大家熟悉Spark ALS算法有所帮助. 【2016.06.12】Spark1.4.0中MatrixFactorizationModel提供了recommendForAll方法实现离线批量推荐,见 SPARK-3066.

【实践】Spark 协同过滤ALS之Item2Item相似度计算优化 - CSDN博客

- -
CF召回优化,自之前第一版自己实现的基于item的协同过滤算法. http://blog.csdn.net/dengxing1234/article/details/76122465,考虑到用户隐型评分的. 稀疏性问题,所以尝试用Spark ml包(非mllib)中的ALS算法的中间产物item的隐性向量,进行进一步item到item的余弦相似度计算.

协同过滤算法

- - CSDN博客推荐文章
今天要讲的主要内容是 协同过滤,即Collaborative Filtering,简称 CF.    关于协同过滤的一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那.    么通常的做法就是问问周围的朋友,看看最近有什么好的电影推荐. 在问的时候,都习惯于问跟自己口味差不.

[Java Web]敏感词过滤算法

- - CSDN博客推荐文章
DFA算法的原理可以参考 这里,简单来说就是通过Map构造出一颗敏感词树,树的每一条由根节点到叶子节点的路径构成一个敏感词,例如下图:. LOG.error("sensitiveWordMap 未初始化!");. LOG.error("敏感词库文件转码失败!");. LOG.error("敏感词库文件不存在!");.

推荐算法之基于用户的协同过滤算法

- - CSDN博客综合推荐文章
协同过滤是推荐算法中最基本的算法,主要分为基于用户的协同过滤算法和基于物品的协同过滤算法. 这篇文章主要介绍基于用户的协同过滤算法,简单来说,要给用户u作推荐,那么只要找出那些和u之前的行为类似的用户,即和u比较像的用户,把他们的行为推荐给用户u即可. 所以基于用户的系统过滤算法包括两个步骤:1)找到和目标用户兴趣相似的用户集合  2)找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户.

如何使用ALS计算获得item相似度 How to get similar item recommendations using ALS - Quora

- -
不幸的是,Spark ML不支持使用Matrix Factorization模型的item 相似性推荐. Spark不使用Matrix Factorization模型计算item相似度的原因只是该技术不计算item相似性,也不计算用户相似性矩阵. (MF会计算出结果用户因素和项目因素,但不会在这里详细介绍它.

为什么spark中只有ALS - 木白的菜园 - 博客园

- -
                                                                                                                                                                 --Ethan Rosenthal.