Pour autant que je l'ai vu, les opinions ont tendance à différer à ce sujet. Les meilleures pratiques dicteraient certainement l'utilisation de la validation croisée (surtout si l'on compare les RF avec d'autres algorithmes sur le même ensemble de données). D'un autre côté, la source d'origine indique que le fait que l'erreur OOB soit calculée pendant l'apprentissage du modèle est suffisant pour indiquer les performances de l'ensemble de test. Même Trevor Hastie, dans une conférence relativement récente, a déclaré que "les forêts aléatoires fournissent une validation croisée gratuite". Intuitivement, cela a du sens pour moi, si je m'entraîne et essaie d'améliorer un modèle RF sur un ensemble de données.
Quelqu'un peut-il expliquer les arguments pour et contre la nécessité d'une validation croisée avec des forêts aléatoires?
la source
Réponses:
Par défaut, la forêt aléatoire recueille les 2/3 des données pour la formation et le repos pour les tests de régression et près de 70% des données pour la formation et le repos pour les tests pendant la classification.Par principe, car elle randomise la sélection des variables lors de chaque division d'arbre, elle n'est pas sujette à l'overfit contrairement à Cependant, si vous souhaitez utiliser CV à l'aide de nfolds dans sklearn, vous pouvez toujours utiliser le concept d'ensemble de maintien tel que oob_score (hors sac) = True qui montre les performances du modèle avec ou sans CV. Donc, en résumé, utiliser oob_score = True avec ou sans nfolds peut lui-même dire si l'utilisation de CV est bonne pour vos données.En général, si votre cible suit une certaine distribution et que vous n'avez pas beaucoup de données d'observation avec vous, alors l'utilisation de CV ne donnera pas beaucoup d'amélioration.
la source
Une différence clé est que la validation croisée garantit que tous les échantillons apparaîtront dans les ensembles de formation et de test, de sorte que 100% de vos données seront utilisées à un moment donné pour la formation et les tests.
En fonction de la taille de votre jeu de données, le bootstrap, l'échantillonnage avec remplacement, qui se produit dans la forêt aléatoire ne garantira pas les divisions que les arbres voient contiendront toutes les instances. Si vous avez suffisamment d'arbres dans votre forêt, l'estimation OOB devrait converger asymptotiquement vers la meilleure valeur d'estimation OOB.
La précision des deux méthodes dépendra dans une certaine mesure des données, il peut donc être prudent de comparer les deux méthodes sur les données particulières que vous avez devant vous et de voir si les estimations CV et RF OOB donnent des valeurs similaires.
S'ils ne le font pas, alors il vaudrait la peine d'explorer de nouvelles estimations du taux d'erreur réel, peut-être par des valeurs beaucoup plus élevées de K dans CV.
la source
J'ai fait quelques tests sur un ensemble de données de 50k lignes, en utilisant
sklearn.RandomForestRegressor
.rf.oob_prediction_
J'obtiens des scores significativement différents - j'utilise un gini normalisé pour la métrique - selon que j'utilise (0,2927) ou un CV KFold (0,3258 pour 7 plis et 0,3236 pour 3 plis).Avec cela, il semble que votre argument à propos de "surtout si la comparaison des RF avec d'autres algorithmes sur le même ensemble de données" est une considération forte vers l'utilisation du CV manuel plutôt que de compter sur la prédiction OOB.
la source