2016-02-12 43 views
1

我正在使用SparkR,我需要知道如何预测它们的新值和准确性。预测R/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

首先您已经理解了Spark®线性模型与由工具(如R)提供的局部线性模型之间的区别。一般而言,它是一个近似值(通常使用Gradient Descent的某个变体实现)与精确值解决方案。虽然进一步保证最佳解决方案,但在大型数据集上使用通常费用昂贵。前者的规模很好,但只提供弱保证,并且可以高度依赖于输入参数。

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

  • α - 弹性净混合参数
  • 拉姆达 - 正则化参数
  • 求解器 - 精确算法被用于训练模型

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

参见:

+0

清除一如既往地感谢。 – DanieleO