基于Spark-ALS的协同过滤算法推荐
1.协同过滤介绍
协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术。
协同过滤吸引人的地方就在于它只需要输入一系列用户/产品的交互记录,协同过滤算法能够根据这些交互记录知道哪些产品之间比较相似(因为相同的用户与它们发生了交互)以及哪些用户之间比较相似,然后可以作出新的推荐。
交互记录分为“显式”反馈(例如在购物网站上进行评分)和“隐式”反馈(例如用户访问了一个产品的页面但是没有对产品评分)。
2.显示反馈与隐式反馈
推荐系统依赖不同类型的输入数据,最方便的是高质量的显式反馈数据,它们包含用户对感兴趣商品明确的评价。例如,收集的用户对电影评价的星星等级数据。但是显式反馈数据不一定总是找得到,因此推荐系统可以从更丰富的隐式反馈信息中推测用户的偏好。
隐式反馈类型包括购买历史、浏览历史、搜索模式甚至鼠标动作。例如,购买同一个作者许多书的用户可能喜欢这个作者。
许多研究都集中在处理显式反馈,然而在很多应用场景下,应用程序重点关注隐式反馈数据。因为可能用户不愿意评价商品或者由于系统限制我们不能收集显式反馈数据。在隐式模型中,一旦用户允许收集可用的数据,在客户端并不需要额外的显式数据。
3.协同过滤的常用算法——交替最小二乘(ALS)
在矩阵分解(matrix factorization)中使用的一种算法。有一个稀疏矩阵,假设这个矩阵是低阶的,可以分解成两个小矩阵相乘。然后交替对两个小矩阵使用最小二乘法,算出这两个小矩阵,就可以估算出稀疏矩阵缺失的值。
算法内容
矩阵分解模型
用户对物品的打分行为可