Avant de poster ici j'ai écumé beaucoup de pages alors soyez indulgents.
J'ai un problème de classification binaire que je traite grâce à une forêt aléatoire (la régression logistique ne donne pas de bons résultats).
Ayant un évènement d'intérêt avec une fréquence d'apparition basse j'utilise une méthode d'undersampling de la classe majoritaire.
J'utilise la fonction "train" du package "caret" pour construire une forêt avec des paramètres optimaux (grâce à des analyses précédentes j'en ai déduit que 200 arbres étaient suffisants). C'est lorsque je veux tester le modèle ainsi obtenu que cela se corse, mon AUC sur l'échantillon d'apprentissage tourne autour de 0.97 (complètement improbable) et celui du test autour de 0.65, il a manifestement un problème dans le calcul de l'AUC mais impossible de comprendre où (puisqu'on voit lors de l’exécution de la fonction train que ROC est environ égal à 0.65 ce que je veux).
En espérant m'être exprimée de façon claire et correcte.
Voici mon code :
Code : Tout sélectionner
set.seed(12345)
train_control <- trainControl(method="boot", number=20, sampling = "down", classProbs = TRUE, summaryFunction = twoClassSummary,savePredictions=TRUE)
RFmodel <- train(as.factor(app[,1]) ~ .,data= app, method = "rf", ntree=200, tuneLength = 5,trControl = train_contro, metric= "ROC", importance = TRUE)
print(RFmodel)
print(RFmodel$finalModel)
# échantillon d'apprentisage
Probs_app <- predict(RFmodel, app[, -1], type = "prob")
ROC_app <- roc(response = app[,1], predictor = Probs_app$EVENT, levels = rev(levels(app[,1])))
auc(ROC_app)
plot(ROC_app)
# échantillon de test
Probs_test <- predict(RFmodel, test[, -1], type = "prob")
ROC_test <- roc(response = test[,1], predictor = Probs_test$EVENT, levels = rev(levels(test[,1])))
auc(ROC_test)
lines(ROC_test, col = "red")
Merci d'avance