Apache spark 使用trainImplicit实现推荐系统

Apache spark 使用trainImplicit实现推荐系统,apache-spark,apache-spark-mllib,Apache Spark,Apache Spark Mllib,假设我有一个用户购买产品的数据库(没有评级或类似的东西),我想为他们推荐其他产品。我使用的是ATL.trainImplicit,其中培训数据的格式如下: [Rating(user=2, product=23053, rating=1.0), Rating(user=2, product=2078, rating=1.0), Rating(user=3, product=23, rating=1.0)] 因此,训练数据集中的所有评分始终为1 预测评级给出的最小值-0.6和最大评级1.85是否正常

假设我有一个用户购买产品的数据库(没有评级或类似的东西),我想为他们推荐其他产品。我使用的是
ATL.trainImplicit
,其中培训数据的格式如下:

[Rating(user=2, product=23053, rating=1.0),
Rating(user=2, product=2078, rating=1.0),
Rating(user=3, product=23, rating=1.0)]
因此,训练数据集中的所有评分始终为1


预测评级给出的最小值
-0.6
和最大评级
1.85
是否正常?我希望在0和1之间。是的,这是正常的。ALS的隐式版本本质上是试图重建二元偏好矩阵
P
(而不是显式评级矩阵
R
)。在这种情况下,“评级”被视为置信水平-评级越高,二元偏好
p(ij)
应重建为
1
,而不是
0

然而,ALS基本上解决了(加权)最小二乘回归问题,以找到重建矩阵
p
的用户和项目因子矩阵。因此,预测值不能保证在[0,1]范围内(尽管在实践中它们通常接近该范围)。将这些预测解释为“不透明”值就足够了,其中值越高,用户购买该产品的可能性就越大。这就足够按预测分数对推荐产品进行排序了


(注意项目或用户相似度通常使用因子向量之间的余弦相似度计算,因此这些分数将位于[-1,1]。该计算在Spark中不直接可用,但可以自己进行)。

是的,这是正常的。ALS的隐式版本本质上是试图重建二元偏好矩阵
P
(而不是显式评级矩阵
R
)。在这种情况下,“评级”被视为置信水平-评级越高,二元偏好
p(ij)
应重建为
1
,而不是
0

然而,ALS基本上解决了(加权)最小二乘回归问题,以找到重建矩阵
p
的用户和项目因子矩阵。因此,预测值不能保证在[0,1]范围内(尽管在实践中它们通常接近该范围)。将这些预测解释为“不透明”值就足够了,其中值越高,用户购买该产品的可能性就越大。这就足够按预测分数对推荐产品进行排序了


(注意项目或用户相似度通常使用因子向量之间的余弦相似度计算,因此这些分数将位于[-1,1]。该计算在Spark中不直接可用,但可以自己完成)。

您的用户只购买一次产品?所有这些都是一次?您的用户只购买一次产品?所有人都一次?