协同过滤算法可以大致分为 3 种 base:
- 基于用户或基于物品的协同过滤(可见数据挖掘算法初窥门庭--协同过滤)
- 基于矩阵分解的协同过滤(ALS)
- 基于图的协同过滤
目前 spark 1.6.1 只提供 ALS 一种推荐算法
##ALS
ALS 是基于矩阵分解的协同过滤算法。其基本思想是通过矩阵分解的过程,交替使用最小二乘法计算,填充稀疏的 users-products-rating 矩阵。
- 类:pyspark.mllib.recommendation.Rating
ALS 使用的输入数据集结构(用户,物品,评分)三元组
- 类 pyspark.mllib.recommendation.ALS
- 方法:
train(ratings, rank, iterations=5, lambda_=0.01, blocks=-1, nonnegative=False, seed=None)
通过给定的用户-物品-评分训练集训练 ALS 模型。- ratings:训练数据集,(用户,物品,评分)rating 元组的集合。
- rank:将评分矩阵分解为两个指定 rank 的小矩阵的乘积。
- iterations:迭代次数,默认 5
- blocks:计算时使用分区数,默认和训练集一致
- 方法:
trainImplicit(ratings, rank, iterations=5, lambda_=0.01, blocks=-1, alpha=0.01, nonnegative=False, seed=None)
通过隐含的用户-物品-偏好(无具体评分)训练集训练 ALS 模型- ratings:训练数据集,(用户,物品,评分)rating 元组的集合。
- rank:将评分矩阵分解为两个指定 rank 的小矩阵的乘积。
- iterations:迭代次数,默认 5
- blocks:计算时使用分区数,默认和训练集一致
- 方法:
-
类 pyspark.mllib.recommendation.MatrixFactorizationModel
通过 ALS 训练得到的矩阵分解模型- 方法:
predict(user, product)
预测指定用户对指定物品的评分 - 方法:
predictAll(user_product)
返回输入用户-物品对的评分列表 - 方法:
productFeatures()
返回一个包含元组的 RDD,每个元组第一个元素是物品,第二个元素是和这个物品相关的物品列表 - 方法:
recommendProducts(user, num)
为指定 user 推荐 top num 个物品,按照预测评分逆序排列 - 方法:
recommendProductsForUsers(num)
为所有用户推荐 top num 个物品 - 方法:
recommendUsers(product, num)
为指定物品推荐 top num 个用户 - 方法:
recommendUsersForProducts(num)
为所有物品推荐 top num 个用户 - 方法:
userFeatures()
返回一个包含元组的 RDD,每个元组第一个元素是用户,第二个元素是和这个用户相关的用户列表
- 方法:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于