mllib协同过滤 java实现_协同过滤(ALS)算法介绍及Spark MLlib调用实例(Scala/Java/Python)...

本文介绍了Spark MLlib中的协同过滤算法,特别是ALS(交替最小二乘法)在推荐系统的应用。详细说明了如何使用Java、Scala和Python进行模型训练,并通过均方根误差评估模型性能。
摘要由CSDN通过智能技术生成

协同过滤

算法介绍:

协同过滤常被用于推荐系统。这类技术目标在于填充“用户-商品”联系矩阵中的缺失项。Spark.ml目前支持基于模型的协同过滤,其中用户和商品以少量的潜在因子来描述,用以预测缺失项。Spark.ml使用交替最小二乘(ALS)算法来学习这些潜在因子。

*注意基于DataFrame的ALS接口目前仅支持整数型的用户和商品编号。

显式与隐式反馈

基于矩阵分解的协同过滤的标准方法中,“用户-商品”矩阵中的条目是用户给予商品的显式偏好,例如,用户给电影评级。然而在现实世界中使用时,我们常常只能访问隐式反馈(如意见、点击、购买、喜欢以及分享等),在spark.ml中我们使用“隐式反馈数据集的协同过滤“来处理这类数据。本质上来说它不是直接对评分矩阵进行建模,而是将数据当作数值来看待,这些数值代表用户行为的观察值(如点击次数,用户观看一部电影的持续时间)。这些数值被用来衡量用户偏好观察值的置信水平,而不是显式地给商品一个评分。然后,模型用来寻找可以用来预测用户对商品预期偏好的潜在因子。

正则化参数

我们调整正则化参数regParam来解决用户在更新用户因子时产生新评分或者商品更新商品因子时收到的新评分带来的最小二乘问题。这个方法叫做“ALS-WR”它降低regParam对数据集规模的依赖,所以我们可以将从部分子集中学习到的最佳参数应用到整个数据集中时获得同样的性能。

参数:

alpha:

类型:双精度型。

含义:隐式偏好中的alpha参数(非负)。

checkpointInterval:

类型:整数型。

含义:设置检查点间隔(>=1),或不设置检查点(-1)。

implicitPrefs:

类型:布尔型。

含义:特征列名。

itemCol:

类型:字符串型。

含义:商品编号列名。

maxIter:

类型:整数型。

含义:迭代次数(>=0)。

nonnegative:

类型:布尔型。

含义:是否需要非负约束。

numItemBlocks:

类型:整数型。

含义:商品数目(正数)。

numUserBlocks:

类型:整数型。

含义:用户数目(正数)。

predictionCol:

类型:字符串型。

含义:预测结果列名。

rank:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值