首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ALS模型中RMSE的计算

ALS模型中RMSE的计算
EN

Stack Overflow用户
提问于 2016-07-07 03:42:04
回答 1查看 1.4K关注 0票数 4

我想在ALS模型中计算RMSE,我发现如下代码:

代码语言:javascript
复制
    val ratings = data.map(_.split(',') match {
      case Array(user,item,rate)
      =>
        Rating(user.toLong,item.toInt,rate.toFloat)
    })

    val ratingsDF= ratings.toDF

    val model = new ALS().setRank(3).setMaxIter(10).fit(ratingsDF)
    val predictions = model.transform(ratingsDF)
    val evaluator = new RegressionEvaluator().setMetricName("rmse").setLabelCol("rating").setPredictionCol("prediction")
    val rmse = evaluator.evaluate(predictions)
    System.out.println("Root-mean-square error = " + rose)

然而,我得到了"NaN“。我想知道我使用的方法是错误的还是数据本身的问题。如果代码出错,那么计算RMSE的正确方法是什么?我只找到这样的方法:

代码语言:javascript
复制
    var predictions = model.predict(usersProducts).map { case Rating(user, product, rate) =>        ((user, product), rate)    }
    val ratesAndPreds = ratings.map { case Rating(user, product, rate) =>      ((user, product), rate)    }.join(predictions) 
    val rmse= math.sqrt(ratesAndPreds.map { case ((user, product), (r1, r2)) =>      val err = (r1 - r2)      err * err    }.mean())println(s"RMSE = $rmse")

这里不能用这个。该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-03 15:52:12

这似乎是一个缺陷。有关更多信息,请看一下这个火花JIRA:https://issues.apache.org/jira/browse/SPARK-14489

当构建包含ALS估计器的Spark管道时,度量"rmse“、"mse”、"r2“和"mae”都返回NaN。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38237218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档