协同过滤通常用于推荐系统,这些技术旨在填补用户和项目关联矩阵里面缺少的值。Spark目前实现基于模型的协同过滤,其中模型的用户和项目由一组小的潜在因素所描述,可用于预测缺少的值。Spark使用交替最小二乘法alternating least squares(ALS)算法来学习这些潜在因素。
1. ALS的参数
当使用ALSModel进行预测时,在训练模型期间,普遍会在测试数据集中遇到用户和/或项目不存在的情况。这一般出现在以下两种情型:
1. ALS的参数
- numBlocks:用户和项目将会被分区的块数,以便并行化计算(默认值为10)
- rank:模型中潜在因素的数值(默认值为10)
- maxIter:要运行的最大迭代次数(默认值为10)
- regParam:指定的正则化参数(默认值为1.0)
- implicitPrefs:是否使用隐式反馈(默认为false,使用显式反馈)
- alpha:当使用隐式反馈时,用于控制偏好观察的基线置信度(默认值为1.0)
- nonnegative:是否对最小二乘法使用非负约束 (默认值为false)
当使用ALSModel进行预测时,在训练模型期间,普遍会在测试数据集中遇到用户和/或项目不存在的情况。这一般出现在以下两种情型:
- 在生产环境中,对于没有评级历史的新用户或项目,和未经过训练的模型(这是“冷启动问题”)
- 在交叉验证期间,数据被拆分成训练集和评估集。当使用Spark的CrossValidator或TrainValidationSplit中的简单随机拆分时,评估集里面的用户和/或项目不在训练集里面是非常常见的