spark.mllib
import org.apache.spark.mllib.recommendation.{ALS,MatrixFactorizationModel,Rating}
----------------------------------------
ALS:最小二乘法
求解矩阵分解问题的最优化方法。
其实,就是补充二维矩阵中缺失的打分。
输入:显性数据-train,隐形数据-trainImplicit()
输出:MatrixFactorizationModel矩阵分解模型,
train参数:
•numBlocks 是用于并行化计算的分块个数 (设置为-1,为自动配置)。
•ratings:RDD[Rating]
•rank 是模型中隐语义因子的个数。
•iterations 是迭代的次数。
•lambda 是ALS的正则化参数。
•implicitPrefs 决定了是用显性反馈ALS的版本还是用适用隐性反馈数据集的版本。
•alpha 是一个针对于隐性反馈 ALS 版本的参数,这个参数决定了偏好行为强度的基准。
训练模型
ALS.train(ratings,rank,numIterations,lambda,(alpha))
------------------------------------------
MatrixFactorizationModel矩阵分解模型
该模型将用户因子和物品因子分别保存在一个(id,factor)对类型的RDD中。
分别称作userFeatures和productFeatures.各因子factor的类型是Array[Double].
可以保存在分布式文件系统上。
方法:
predict(userid,productid),返回值是预测评分
recommendProducts(userid,numProducts),给一个给定的用户推荐前numProducts个产品
计算给定用户对某个物品的预计评级: 从用户因子矩阵取相应的行和物品因子矩阵取列,然后计算点积即可。
------------------------------------------
Rating:评分类
每个对象都包含一个用户id,一个产品id和一个评分。
要求:每个id都是一个32位的整型值。