Comment éviter le sur-ajustement dans une forêt aléatoire?

11
  1. Je veux éviter le sur-ajustement dans une forêt aléatoire. À cet égard, j'ai l'intention d'utiliser mtry, nodesize et maxnodes etc. Pourriez-vous s'il vous plaît m'aider à choisir des valeurs pour ces paramètres? J'utilise R.

  2. Aussi, si possible, dites-moi comment je peux utiliser la validation croisée k-fold pour la forêt aléatoire (en R).

Arun
la source

Réponses:

7

Par rapport à d'autres modèles, les forêts aléatoires sont moins susceptibles de sur-équiper, mais c'est toujours quelque chose que vous voulez faire un effort explicite pour éviter. Le réglage des paramètres du modèle est certainement un élément pour éviter le sur-ajustement, mais ce n'est pas le seul. En fait, je dirais que vos fonctionnalités d'entraînement sont plus susceptibles de conduire à un sur-ajustement que les paramètres du modèle, en particulier avec des forêts aléatoires. Je pense donc que la clé est vraiment d'avoir une méthode fiable pour évaluer votre modèle pour vérifier le sur-ajustement plus que toute autre chose, ce qui nous amène à votre deuxième question.

Comme évoqué ci-dessus, l'exécution de la validation croisée vous permettra d'éviter le sur-ajustement. Le choix de votre meilleur modèle en fonction des résultats de CV conduira à un modèle qui n'a pas de sur-ajustement, ce qui n'est pas nécessairement le cas pour quelque chose comme une erreur hors du sac. Le moyen le plus simple d'exécuter CV dans R est avec le caretpackage. Un exemple simple est ci-dessous:

> library(caret)
> 
> data(iris)
> 
> tr <- trainControl(method = "cv", number = 5)
> 
> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Cross-Validated (5 fold) 

Summary of sample sizes: 120, 120, 120, 120, 120 

Resampling results across tuning parameters:

  mtry  Accuracy  Kappa  Accuracy SD  Kappa SD  
  2     0.96      0.94   0.04346135   0.06519202
  3     0.96      0.94   0.04346135   0.06519202
  4     0.96      0.94   0.04346135   0.06519202

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 2. 
David
la source
Merci beaucoup pour la réponse et les conseils. Vous voulez juste savoir à quel point l'utilisation d'un package de signe d'insertion pour la sélection de fonctionnalités est différente de la sélection de variables importantes à l'aide de l'algorithme randomForest?
Arun
Cela ressemble à une question différente à publier - les différences sont énormes étant donné que vous exécutez des choses comme la sélection de fonctions récursives en utilisant n'importe quel algorithme de votre choix dans le curseur.
David
@David Qu'entendez-vous par "ce qui n'est pas nécessairement le cas pour quelque chose comme une erreur hors du sac"? Voulez-vous dire que l'estimation hors du sac n'est pas un bon moyen d'éviter le sur-ajustement?
Pierre
5

@ xof6 est correct dans le sens où plus le modèle a de profondeur, plus il a tendance à sur-ajuster, mais je voulais ajouter quelques paramètres supplémentaires qui pourraient vous être utiles. Je ne sais pas quel package vous utilisez avec R et je ne connais pas du tout R, mais je pense qu'il doit y avoir des contreparties de ces paramètres implémentées.

Nombre d'arbres - Plus ce nombre est élevé, moins la forêt a de chances de se surcharger. Cela signifie que, comme chaque arbre de décision apprend un aspect des données de formation, vous avez plus d'options à choisir, pour ainsi dire. Nombre de fonctionnalités - Ce nombre constitue le nombre de fonctionnalités que chaque arbre apprend. Au fur et à mesure que ce nombre augmente, les arbres deviennent de plus en plus compliqués, ce sont donc des modèles d'apprentissage qui peuvent ne pas être présents dans les données de test. Il faudra un peu d'expérimentation pour trouver la bonne valeur, mais tel est l'apprentissage automatique. Expérimentez également avec la profondeur générale, comme nous l'avons mentionné!

moriara
la source
4

Voici un bon lien à ce sujet sur stackexchange /stats/111968/random-forest-how-to-handle-overfitting , mais mon expérience générale est que plus le modèle a de profondeur, plus il a tendance pour suréquiper.

0xF
la source
Cela a du sens avec un seul classificateur d'arbre. Cependant, j'ai lu sur ces forums que les forêts aléatoires sont protégées contre le sur-ajustement et que les arbres doivent être entièrement cultivés (c'est-à-dire la taille du nœud = 1 pour la classification).
Seanosapien
0

Je diminue toujours mtryjusqu'à ce que l'erreur sur l'ensemble de données du train augmente, puis je diminue la taille et la profondeur des nœuds jusqu'à ce que la différence entre l'erreur sur le train et l'ensemble de données cesse de diminuer

Qbik
la source