我正在为多类分类建立一个可调的随机森林模型。我得到了以下结果:0.9921996测试准确性:0.992237664我在这个网站上看到了一个与此相关的问题,共同的答案似乎是数据集必须很小,你的模型很幸运,但在我的例子中,我有大约300 K的训练数据点和100 k的测试数据点,我的类也很均衡。
> 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))发布于 2017-05-07 23:18:20
差别是1e-4阶,没有错,它是一个规则的,统计误差(结果的方差)。没什么好担心的。这意味着差约为0.0001 * 100,000 =10个样本. 100k中的10个样本。
https://stackoverflow.com/questions/43836714
复制相似问题