预测R / SparkR中的新值和准确度

时间:2016-02-12 13:38:13

标签: r apache-spark glm predict sparkr

我正在使用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(最好)有一种方法可以准确估计新值吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

选择解算器后,必须调整剩余参数,通常使用hyperparameter optimization的某些变体。不幸的是,没有通用方法,很多方法取决于特定的数据集。

另见: