我正在使用SparkR,我需要知道如何预测它们的新价值和准确性。
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(最好)有一种方法可以准确估计新值吗?
答案 0 :(得分:1)
首先,您已了解Spark(R)线性模型与R等工具提供的局部线性模型之间的差异。通常,它是近似值之间的差异(通常使用Gradient Descent的某些变体实现)与精确的分析解决方案。虽然进一步保证了最佳解决方案,但在大型数据集上使用通常会很昂贵。前者可以很好地扩展,但只提供弱保证,并且可以高度依赖于输入参数。
通常,当您使用渐变下降时,您必须调整模型参数。在SparkR和线性回归(高斯模型)的情况下,这些是:
选择解算器后,必须调整剩余参数,通常使用hyperparameter optimization的某些变体。不幸的是,没有通用方法,很多方法取决于特定的数据集。
另见: