为什么spark-ml ALS模型会返回NaN和负数预测?

时间:2017-07-04 17:19:53

标签: apache-spark pyspark apache-spark-mllib

实际上,我尝试使用来自ALS的{​​{1}}隐式评级。

我注意到我训练过的模型给出的一些预测是spark-mlnegative,为什么会这样?

negative value

1 个答案:

答案 0 :(得分:4)

Apache Spark提供了一个在ALS上强制非负约束的选项。

因此,要删除这些负值,您只需要设置:

<强>的Python:

nonnegative=True

Scala:

setNonnegative(true)

创建ALS模型时,即:

>>> als = ALS(rank=10, maxIter=5, seed=0, nonnegative=True)

<强>非负矩阵因子(NMF或NNMF),也称为非负矩阵近似是在多变量分析和线性代数的一组算法,其中一个矩阵的 V 被分解为(通常)两个矩阵 W H ,其中属性,即所有三个矩阵都具有非负元素 [Ref。 Wikipedia]。

如果您想了解更多有关NMF的信息,我建议您阅读以下文章:

对于NaN值,通常是由于分割数据集导致看不见的项目或用户(如果其中一个不存在于训练集中)以及测试集中存在的问题。如果您通过验证培训,也可能发生这种情况。就此而言,有两个标记为已解决的JIRA为2.2:

最新版本允许您设置创建模型时使用的冷启动策略。