2017-07-27 152 views
0

我们使用ALS作为基于用户/点击数据通过Spark/Scala的推荐模型。交替最小二乘输入

该评级列是一个得分[0,1]

val als = new ALS() 
    .setImplicitPrefs(true) 
    .setRank(myrank) 
    .setRegParam(mylambda) 
    .setAlpha(myalpha) 
    .setMaxIter(numIter) 
    .setUserCol("myuseridx") 
    .setItemCol("myitemidx") 
    .setRatingCol("rating") 
val model = als.fit(training) 

我的问题是:必须为隐性模型输入数据在技术上包含所有用户的项目组合,即其还没有买的人?

回答

1

ALS通过固定用户或项目矩阵并使用最小二乘法求解它来解决推荐器问题。实质上,对于隐式数据集,这意味着所有未设置为1的项目都被视为零。所以你只需要包括积极的观察。

一些更多的讨论在这里: http://yifanhu.net/PUB/cf.pdf

+0

“不像明确的数据集,这里的模型应该采取的所有用户,项目偏好的输入,包括那些不涉及任何输入观测数据(从而暗示为零偏好)这是至关重要的,因为给定的观察结果本质上偏向于正面的偏好,因此不能很好地反映用户配置文件 但是,将所有用户项目值作为模型的输入引起严重的可伸缩性问题“ –

+0

是,这是正确的。正如我所提到的,即使您没有明确设置零点,模型也会将它们视为零。 – jamborta

+0

此引用来自:http://yifanhu.net/PUB/cf.pdf 但现在我记得hyperparameter alpha的目的是什么。我想你是对的。但是现在如果你不介意帮助我,我还有另外一个问题。我如何计算我的模型的AUC分数? 我有我的训练集的评分标签,如果我遵循不将零值置于RDD内的逻辑[评级],我很难理解如何计算我的TP - FP - TN - FN分数。 谢谢 –