【问题标题】:Why does spark-ml ALS model returns NaN and negative numbers predictions?为什么 spark-ml ALS 模型返回 NaN 和负数预测?
【发布时间】:2017-12-08 05:51:28
【问题描述】:

实际上,我正在尝试使用来自spark-mlALS 和隐式评级。

我注意到我训练的模型给出的一些预测是negativeNaN,这是为什么呢?

【问题讨论】:

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


【解决方案1】:

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

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

Python:

nonnegative=True

斯卡拉:

setNonnegative(true)

在创建 ALS 模型时,即:

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

非负矩阵分解(NMF或NNMF),也称为非负矩阵逼近,是多元分析和线性代数中的一组算法,其中一个矩阵V被分解为(通常)两个矩阵 WH所有三个矩阵都有非负元素的属性 [Ref. Wikipedia].

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

至于NaN 值,通常是由于拆分数据集,如果其中一个项目或用户不存在于训练集中并且仅存在于测试集中,则可能导致看不见的项目或用户。如果您交叉验证了您的培训,也可能会发生这种情况。就此而言,有几个 JIRA 标记为 resolved for 2.2 :

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

【讨论】:

    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2017-10-13
    • 2020-09-12
    • 1970-01-01
    • 2019-01-19
    • 2018-10-09
    相关资源
    最近更新 更多