插入:对相同数据的不同RMSE

时间:2014-08-07 18:28:40

标签: r r-caret

我想,我的问题很奇怪。当我使用RMSE度量来通过train函数进行最佳模型选择时,我从相同数据的自己的函数中获得了不同的RMSE值。这个问题在哪里?我的功能是否有效?

library(caret)
library(car)
library(nnet)


data(oil)
ztest=fattyAcids[c(81:96),]

fit<-list(r1=c(1:80)) 
pred<-list(r1=c(81:96)) 
ctrl <- trainControl(method = "LGOCV",index=fit,indexOut=pred)



model <- train(Palmitic~Stearic+Oleic+Linoleic+Linolenic+Eicosanoic, 
               fattyAcids, 
               method='nnet', 
               linout=TRUE, 
               trace=F,
               maxit=10000,
               skip=F,
               metric="RMSE",

               tuneGrid=expand.grid(.size=c(10,11,12,9),.decay=c(0.005,0.001,0.01)),
               trControl = ctrl,
               preProcess = c("range"))
model
forecast <- predict(model, ztest)

Blad<-function(zmienna,prognoza){

  RMSE<-((sum((zmienna-prognoza)^2))/length(zmienna))^(1/2)

  estymatory <- c(RMSE)
  names(estymatory) <-c('RMSE') 
  estymatory
}
Blad(ztest$Palmitic,forecast)

1 个答案:

答案 0 :(得分:2)

train输出中显示的重新采样估算值是使用行81:96计算的。一旦train找出正确的调整参数设置,它就会使用所有数据(1:96)进行重新设置。该数据的模型用于进行新的预测。

出于这个原因,模型性能

> getTrainPerf(model)
  TrainRMSE TrainRsquared method
1 0.9230175     0.8364212   nnet

比其他预测更糟糕:

> Blad(ztest$Palmitic,forecast)
     RMSE 
0.3355387 

forecast中的预测是从包含相同数据点的模型创建的,这就是它看起来更好的原因。

最大