2017-05-07 5 views
0

Je suis en train de construire un modèle de forêt aléatoire ajusté pour la classification multiclasse. Je reçois les résultats suivants Exactitude de l'entraînement (AUC): 0.9921996 Exactitude des tests (AUC): 0.992237664 J'ai vu une question à ce sujet sur ce site et la réponse commune semble être que l'ensemble de données doit être petit et votre modèle a obtenu la chance Mais dans mon cas j'ai environ 300k points de données de formation et 100k points de données de test également mes cours sont bien équilibréesLa précision des tests dépasse la précision de l'entraînement

> 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 

est-il possible pour un modèle pour adapter ce puits sur une grande quantité de données de test? S'il vous plaît répondez si je peux faire quelque chose à vérifier que mon modèle est vraiment très bien.

Mon code complet

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)) 

Répondre

0

La différence est de 1E-4 l'ordre, rien ne va pas, il est une erreur régulière, statistique (variance du résultat). Pas d'inquiétudes à avoir. Cela signifie littéralement qu'une différence est d'environ 0,0001 * 100 000 = 10 échantillons ... 10 échantillons sur 100k.

+0

Merci pour la réponse. J'ai une autre question offtopic à celui-ci. J'apprécierais vraiment si vous pouvez aider. Je voulais savoir si c'est une bonne pratique de manipuler des données de test avec des données d'entraînement. En manipulant je veux dire supprimer les valeurs aberrantes ou modifier les niveaux de facteurs avec des occurrences rares, Stuff comme ça –