Press "Enter" to skip to content

十分钟入门机器学习 – 讲透ALS推荐算法

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

一、业务背景

 

推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。

 

平台运用推荐系统,进行精准流量分发,让用户更快速的获取心仪商品,平台也因此更具有粘性,流量、点击率、联络/购买率形成正向循环。

 

在平台运营初期,我们推荐场景是猜你喜欢、推荐物件推送、热门推荐,选用的算法为余弦相似算法。

 

余弦相似算法,即将用户标签化,与商品标签比对,得到余弦相似值,通过值降序排序,将对应商品推荐给适当用户。实践中,我们发现其有天然弱势:用户-商品在低稀疏场景下,无法进行有效的媒合,同时无法进行模型调优,天花板明显。

 

在探究了业内主流平台:58同城、NETFLIX、AirBnb,我们明确了新的推荐算法方向:基于协同过滤的推荐算法!

 

二、技术调研

 

协同过滤:(collaborative filtering)是一种在推荐系统中广泛使用的技术。 该技术通过分析用户或者事物之间的相似性(“协同”),来预测用户可能感兴趣的内容并将此内容推荐给用户。

 

协同过滤广义划分为三种,我们通过一则简单范例,来快速了解:

 

 

第一种:基于用户的协同过滤若A用户对影视剧《天龙八部》、《大话西游》、《将夜》高评分,D用户对影视剧《将夜》高评分。那幺,我们认定A与D用户归属一类,就可以将A用户高评分的《天龙八部》、《大话西游》作品推荐给D用户。

 

 

第二种:基于商品的协同过滤若《将夜》、《大话西游》、《天龙八部》同属仙侠影视剧,归属一类。用户D看过《将夜》,我们就可以将《大话西游》、《天龙八部》作品对用户D进行推荐。

 

看到这里,小伙伴可能会问了,那第三种是什幺呢?

 

切入正题: 第三种:基于用户-商品的协同过滤 将用户归类,与商品归类一并纳入协同考虑,得到我们的预测结果。此模型算法简称: 协同过滤ALS推荐算法 。

 

三、协同过滤ALS介绍

 

协同过滤ALS:对稀疏矩阵进行模型分解,评估缺失项的值,从而得到基本的训练模型。在协同过滤分类方面,ALS算法属于User-Item CF(Collaborative Filtering),兼顾User和Item项,也称为混合CF。

 

这里我们通过范例,让大家快速了解:

 

 

ALS建模推导过程:按照8-2原则,由训练数据集合P1,推导出测试集合P2ˇ,如若P2ˇ≈P2,则证明得到最佳模型。

 

 

通过最佳模型预测值,order by score desc limit N,获取前项作推荐

 

接下来,我们简单了解下ALS算法核心:

 

 

注:图示user1与movie1评分0.88,即1 * 0.9 + 0.1 * (-0.2)

 

现实生活中,users集往往上百千万,items集合也有万计,这样评分矩阵百千万-万计,推导千亿级矩阵运算量极大。

 

因此,我们使用最小交替二阶乘运算,users-items矩阵,转为users-K与K-items两个小矩阵相乘。

 

ALS推荐算法核心:基于潜在因子模型的最小二乘算法 & 矩阵分解降低计算复杂度

 

四、协同过滤ALS实践

 

业务场景:

 

每日推荐笋盘列表,之前余弦算法获取数据,在流程不变情况下,应用协同过滤ALS算法

 

 

注:图源安居客(侵删),我司业务场景与其类似,仅供参考

 

业务流程:

 

 

记录用户详细浏览记录

 

进行业务加权,得到userId – postId – score三维数组

 

通过机器学习ALS建模,预测userId与全物件评分

 

基于推荐和规则,推荐笋盘

 

 

基于Spark的ALS推荐算法代码详见: 传送门

 

实践结论:

 

 

 

通过喜好与ALS推荐物件对比,发现两者存在较强相似度,大机会被用户点阅

 

ALS推荐相较于余弦集合,七日日均点击比率及联络比率,均有 20% 左右成长

 

 

五、经验分享

 

实践经验:

 

业务数据长尾效应,对数据源要做适当清洗

 

模型调整:useritem仅支持int类型、显性与隐性评级设定

 

推荐结果集,再结合余弦、embeding做规划优化效果更佳

 

本文从业务推荐背景切入,将推荐算法由余弦相似重构为ALS建模,效果良好,因此将ALS算法,以及实践结果和经验分享给大家。

 

同时,推荐系统视平台大小不同,从特征提取,模型矫正,架构优化(离线、在线、实时)等多维度都需要深入挖掘,才能得到更好的推荐效果。

 

机器学习之ALS算法犹如一把钥匙,打开了我对技术新世界的大门,让我看到基于数学的矩阵分解,与业务的推荐场景能够如此完美契合,希望大家可以保持探索欲,秉承技术热忱,发现更多精彩!

 

参考资料:

 

《Collaborative Filtering – RDD-based API》|Spark

 

《Spark ALS API Reference》|Spark

 

《PySpark Collaborative Filtering with ALS》 |Snehal Nair

 

《Embedding技术在房产推荐中的应用》|58同城

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注