Spark 2.2.0 文档中文版 Collaborative Filtering 协同过滤 JAVA推荐系统
协同过滤常用于推荐系统,这项技术旨在填补 丢失的user-item关联矩阵 的条目,spark.ml目前支持基于模型的协同过滤(用一些丢失条目的潜在因素在描述用户和产品)。spark.ml使用ALS(交替最小二乘法)去学习这些潜在因素。在spark.ml中的实现有以下参数:
numBlocks:块的数量,user和item将被分成多少块,以并行计算。(默认10)
ranK:模型隐含因素的个数。(默认10)
maxIter:模型的最大迭代次数。(默认10)
regParam :ALS的正则化参数。(默认1.0)
implicitPrefs :使用显式反馈还是隐式反馈。(默认false,即显式反馈)
alpha:信心权重所应达到的基准线。(默认1.0)
nonnegative :是否使用非负数的约束。(默认false)
注意:基于dataFrame - API的ALS目前只支持整数型的userID和itemID,其他数字类型也支持,但是取值范围必须在整数之内。
显式反馈VS隐式反馈
标准的基于矩阵分解的协同过滤方法对待user-item矩阵的条目项 是显式地给出user对item的偏好,例如,用户给电影评级。
而现实生活中常见案例是只能有隐式反馈(例如:视图,点击鼠标,购买,喜欢,分享……)。在spark.ml中使用的方法是:对隐式反馈数据集的协同过滤。实际上,这种方法不是直接对数据矩阵进行建模,而是将数据视为代表用户行为意愿强度的数字(例如点击的次数或某人累积观看电影的时间)。然后,这些数字与观察到的用户偏好的置信水平相关,而不是给予项目的明确评级。 然后,该模型尝试找到可用于预测用户对项目的预期偏好的潜在因素。