预测 R /SparkR 中的新值和准确性
Predict new Value in R /SparkR and accuracy
我正在使用 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 的新值及其准确度是多少。
正如数据块所说,我试图做这样的事情,但我认为这不是我想要的,在错误中我得到的值是 -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 中(最好)有一种方法可以很好地估计新值?
首先,您了解了 Spark(R) 线性模型与 R 等工具提供的局部线性模型之间的区别。一般来说,这是近似值(通常使用 [=10= 的某些变体实现)之间的区别]) 与精确解析解。虽然进一步的保证了最佳解决方案,但在大型数据集上使用通常会很昂贵。前者扩展性很好,但仅提供较弱的保证,并且高度依赖于输入参数。
一般情况下,当你使用梯度下降时,你必须调整模型参数。在 SparkR 和线性回归(高斯模型)的情况下,这些是:
- alpha - 弹性网混合参数
- lambda - 正则化参数
- 求解器 - 用于训练模型的精确算法
选择求解器后,还需要调整其余参数,通常使用 hyperparameter optimization 的一些变体。不幸的是,没有通用的方法,很大程度上取决于特定的数据集。
另请参阅:
我正在使用 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 的新值及其准确度是多少。
正如数据块所说,我试图做这样的事情,但我认为这不是我想要的,在错误中我得到的值是 -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 中(最好)有一种方法可以很好地估计新值?
首先,您了解了 Spark(R) 线性模型与 R 等工具提供的局部线性模型之间的区别。一般来说,这是近似值(通常使用 [=10= 的某些变体实现)之间的区别]) 与精确解析解。虽然进一步的保证了最佳解决方案,但在大型数据集上使用通常会很昂贵。前者扩展性很好,但仅提供较弱的保证,并且高度依赖于输入参数。
一般情况下,当你使用梯度下降时,你必须调整模型参数。在 SparkR 和线性回归(高斯模型)的情况下,这些是:
- alpha - 弹性网混合参数
- lambda - 正则化参数
- 求解器 - 用于训练模型的精确算法
选择求解器后,还需要调整其余参数,通常使用 hyperparameter optimization 的一些变体。不幸的是,没有通用的方法,很大程度上取决于特定的数据集。
另请参阅: