2017-05-07 118 views
0

我正在为多类别分类构建一个调整后的随机森林模型。 我收到以下结果 培训准确性(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)) 

回答

0

不同的是顺序1E-4,什么是错的,它是有规律的,统计误差(结果的差异)。完全不用担心。这实际上意味着差异大约为0.0001 * 100,000 = 10个样本... 10k个样本中的10个。

+0

感谢您的回答。我还有另外一个问题偏离这个问题。如果你能提供帮助,我会很感激。我想知道是否将训练数据与测试数据一起操作是一种很好的做法。通过操纵我的意思是删除异常值或修改因素水平与罕见的发生,东西这样 –