测试精度高于训练精度

时间:2017-05-07 21:05:17

标签: machine-learning random-forest auc

我正在建立一个用于多类分类的调谐随机森林模型。 我得到了以下结果 训练准确度(AUC):0.9921996 测试精度(AUC):0.992237664 我在这个网站上看到了一个与此相关的问题,常见的答案似乎是数据集必须很小而且你的模型很幸运 但就我而言,我有大约300k的训练数据点和100k测试数据点 我的班级也很平衡

> summary(train$Bucket)
         0   1 TO  30 121 TO 150 151 TO 180 181 TO 365   31 TO 60 366 TO 540 541 TO 730   61 TO 90 
    166034      32922       4168       4070      15268      23092       8794       6927      22559 
     730 +  91 TO 120 
     20311      11222 
> summary(test$Bucket)
         0   1 TO  30 121 TO 150 151 TO 180 181 TO 365   31 TO 60 366 TO 540 541 TO 730   61 TO 90 
     55344      10974       1389       1356       5090       7698       2932       2309       7520 
     730 +  91 TO 120 
      6770       3741 

模型是否可以很好地适应大型测试数据?如果我能做些什么来交叉验证我的模型确实非常合适,请回答。

我的完整代码

split = sample.split(Book2$Bucket,SplitRatio =0.75)
train = subset(Book2,split==T)
test = subset(Book2,split==F)
traintask <- makeClassifTask(data = train,target = "Bucket")
rf <- makeLearner("classif.randomForest")

params <- makeParamSet(makeIntegerParam("mtry",lower = 2,upper = 10),makeIntegerParam("nodesize",lower = 10,upper = 50)) 

#set validation strategy 
rdesc <- makeResampleDesc("CV",iters=5L) 

#set optimization technique 
ctrl <- makeTuneControlRandom(maxit = 5L)

#start tuning 

tune <- tuneParams(learner = rf ,task = traintask ,resampling = rdesc ,measures = list(acc) ,par.set = params ,control = ctrl ,show.info = T) 

rf.tree <- setHyperPars(rf, par.vals = tune$x)
tune$y

r<- train(rf.tree, traintask)
getLearnerModel(r)

testtask <- makeClassifTask(data = test,target = "Bucket")

rfpred <- predict(r, testtask)
performance(rfpred, measures = list(mmce, acc))

1 个答案:

答案 0 :(得分:0)

差异是1e-4阶,没有错,这是一个常规的统计误差(结果的方差)。没什么好担心的。这实际上意味着差异大约为0.0001 * 100,000 = 10个样本... 10个样本中的100个。