2017-05-07 32 views
0

マルチクラス分類用に調整されたランダムフォレストモデルを構築しています。 私は次の結果を得ています トレーニングの精度(AUC):0.9921996 試験精度(AUC):0.992237664 このウェブサイトではこれに関する質問がありましたが、データセットが小さくてモデルは 幸運しかし、私の場合は私は約30万トレーニングデータポイントと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です。何も心配する必要はありません。これは文字通り、差が100,000のうち約0.0001 * 100,000 = 10サンプル... 10サンプルであることを意味します。

+0

答えをありがとう。私はもう一つ質問しています。もしあなたが助けることができれば本当に感謝しています。トレーニングデータと一緒にテストデータを操作するのがよい方法かどうかを知りたかったのです。私は外れ値を取り除くことや、まれな出来事で因子レベルを修正することを操作することによって、そのようなもの –

関連する問題