【问题标题】:Predict new Value in R /SparkR and accuracy预测 R /SparkR 中的新值和准确性
【发布时间】:2016-02-12 13:38:13
【问题描述】:

我正在使用 SparkR,我需要知道如何预测它们的新价值和准确性。

这是输入,sample of data.csv

Classes ‘data.table’ and 'data.frame':  100 obs. of  8 variables:
 $ LINESET     : chr  "DG1000420" "DG1000420" "DG1000420" "DG1000420" ...
 $ TIMEINTERVAL: int  1383378600 1383394800 1383556800 1383679200 1383695400 1383718800 1383857400 1383873600 1383996000 1384269600 ...
 $ SmsIn       : num  77.4 76.6 99.2 63.7 10.7 ...
 $ SmsOut      : num  47.74 48.56 26.08 62.39 9.43 ...
 $ CallIn      : num  19.602 31.509 38.003 23.206 0.707 ...
 $ CallOut     : num  22.93 34.97 71.64 37.23 1.61 ...
 $ Internet    : num  435 502 363 465 295 ...
 $ ValueAmp    : num  39.8 32.9 81.4 94.3 54.2 ...

我的模特是

glm(ValueAmp~SmsIn+SmsOut+CallIn+CallOut+Internet+TIMEINTERVAL,data=Consumi,family="gaussian")

我想知道 ValueAmp 的新值和准确度。

正如databricks所说,我试图做这样的事情,但我认为这不是我想要的,在错误上我得到的值来自-30 / +40 是不是那么准确?

training<-createDataFrame(sqlContext,Consumi)
model <- glm(ValueAmp ~SmsIn+SmsOut+CallIn+CallOut+Internet,
             family = "gaussian", data =training)
summary(model)
preds<- predict(model,training)
errors <- select(
    preds, preds$label, preds$prediction, preds$LINESET,
    alias(preds$label - preds$prediction, "error"))

那么在 R 或 SparkR 中(最好)有一种方法可以准确地估计新值?

【问题讨论】:

    标签: r apache-spark glm predict sparkr


    【解决方案1】:

    首先,您了解 Spark(R) 线性模型和由 R 等工具提供的局部线性模型之间的区别。一般来说,它是近似值(通常使用Gradient Descent 的某些变体实现)与精确的解析解。虽然进一步的保证了最佳解决方案,但在大型数据集上使用通常代价高昂。前者的扩展性很好,但只能提供较弱的保证,并且可能高度依赖于输入参数。

    通常,当您使用梯度下降时,您必须调整模型参数。在 SparkR 和线性回归(高斯模型)的情况下,这些是:

    • alpha - 弹性网混合参数
    • lambda - 正则化参数
    • 求解器 - 用于训练模型的精确算法

    在您选择求解器后,必须调整剩余参数,通常使用hyperparameter optimization 的一些变体。不幸的是,没有通用的方法,而且很大程度上取决于特定的数据集。

    另见:

    【讨论】:

      猜你喜欢
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 2018-11-04
      • 2016-06-03
      • 2018-08-24
      • 2016-10-06
      • 1970-01-01
      相关资源
      最近更新 更多