Questions pratiques sur le réglage des forêts aléatoires

65

Mes questions concernent les forêts aléatoires. Le concept de ce beau classificateur est clair pour moi, mais il reste encore beaucoup de questions pratiques d'utilisation. Malheureusement, je n’ai trouvé aucun guide pratique sur la RF (j’ai cherché quelque chose comme "Un guide pratique pour la formation de machines Boltzman restreintes" de Geoffrey Hinton, mais pour Random Forests!

Comment peut-on accorder RF dans la pratique?

Est-il vrai qu'un plus grand nombre d'arbres est toujours meilleur? Existe-t-il une limite raisonnable (sauf la capacité comp. Bien sûr) pour un nombre croissant d’arbres et comment l’estimer pour un jeu de données donné?

Qu'en est-il de la profondeur des arbres? Comment choisir le raisonnable? Est-il judicieux d'expérimenter des arbres de différentes longueurs dans une même forêt et quelles sont les directives à suivre?

Existe-t-il d’autres paramètres intéressants à prendre en compte lors de la formation RF? Algos pour la construction d'arbres individuels peut être?

Quand ils disent que les RF résistent à l'overfitting, comment est-ce vrai?

J'apprécierai toutes les réponses et / ou liens vers des guides ou des articles que j'ai peut-être manqués pendant ma recherche.

Izhak
la source
Pour plus d’optimisation des performances, voir aussi SO: "Comment améliorer les performances de randomForest"
smci

Réponses:

43

Je ne suis pas un personnage faisant autorité, alors considérez ces brèves notes de praticiens:

Plus il y a d'arbres, mieux c'est pour les rendements décroissants. Les arbres plus profonds sont presque toujours plus susceptibles de nécessiter plus d’arbres pour des performances similaires.

Les deux points ci-dessus résultent directement du compromis biais-variance. Les arbres plus profonds réduisent le biais; plus d'arbres réduit la variance.

L'hyper-paramètre le plus important est le nombre de fonctionnalités à tester pour chaque division. Plus il y a de fonctionnalités inutiles, plus vous devriez essayer de fonctionnalités. Cela doit être réglé. Vous pouvez en quelque sorte l'accorder via des estimations hors bande si vous souhaitez simplement connaître votre performance sur vos données d'entraînement et qu'il n'y a pas de jumelage (~ mesures répétées). Même s’il s’agit du paramètre le plus important, son optimum est toujours assez proche des valeurs par défaut suggérées d’origine (sqrt (p) ou (p / 3) pour la classification / régression).

Des recherches assez récentes montrent qu'il n'est même pas nécessaire de faire des recherches fractionnées exhaustives dans une fonctionnalité pour obtenir de bonnes performances. Essayez simplement quelques points de coupe pour chaque fonction sélectionnée et passez à autre chose. Cela rend la formation encore plus rapide. (~ Forêts / Arbres Extrêmement Aléatoires).

Karea Parkes
la source
Quelques autres remarques: en pratique, je confirme généralement la convergence en comparant les prédictions d'une moitié des arbres à l'autre. En ce qui concerne la suralimentation, cela dépend davantage de ce que vous essayez de généraliser. Ils ne vont pas faire trop si vous vous entraînez sur un échantillon représentatif, mais c'est rarement ainsi que cela fonctionne.
Shea Parkes
Vos «arbres profonds = mieux, tout le reste est-il constant» est-il vrai pour des données extrêmement bruyantes avec des structures de dépendance qui changent avec le temps, dans lesquelles les relations linéaires sont les plus robustes pour ne pas changer entre le jeu d'apprentissage et le jeu de tests?
Jase
Je pouvais voir le potentiel pour que les arbres moins profonds soient meilleurs si vous vous retrouviez dans une situation où vous ne devriez apprendre que des relations superficielles, mais j'aimerais vraiment utiliser des preuves empiriques pour le prouver (et n'avoir pas le temps de travailler dessus). Si vous croyez ou avez la preuve que les relations linéaires sont les plus résilientes, alors je considérerais fortement quelque chose qui ne soit pas basé sur des arbres. Peut-être que les réseaux de neurones avec des couches de saut?
Shea Parkes
Disons que vous avez un jeu de données avec 3 fonctionnalités pertinentes et 100 fonctionnalités qui sont du bruit blanc et 50 points de données. Mais vous ne savez pas quels sont les bruits blancs et ceux qui sont pertinents à l’avance, vous savez simplement que vos données sont si bruyantes que c’est le cas. Il est clair que les arbres extrêmement profonds avec un grand nombre mtrysont préférables, aucune preuve ou preuve empirique n’est nécessaire pour le savoir.
Jase
22
  • Nombre d'arbres : le plus gros est le mieux: oui. Une façon d'évaluer et de savoir quand arrêter est de surveiller votre taux d'erreur lors de la construction de votre forêt (ou de tout autre critère d'évaluation que vous pourriez utiliser) et de détecter le moment où elle converge. Vous pouvez le faire sur l'ensemble d'apprentissage lui-même ou, le cas échéant, sur un ensemble de tests indépendant. En outre, il convient de noter que le nombre de nœuds de test dans vos arborescences est limité par le nombre d’objets. Par conséquent, si vous avez beaucoup de variables et pas autant d’objets de formation, une forêt plus grande sera vivement recommandée afin d’augmenter le nombre de nœuds. chances d'évaluer tous les descripteurs au moins une fois dans votre forêt.

  • Profondeur des arbres : il existe plusieurs façons de contrôler la profondeur de vos arbres (limiter la profondeur maximale, limiter le nombre de nœuds, limiter le nombre d'objets à diviser, arrêter de scinder si la scission n'améliore pas suffisamment l'ajustement, ... ). La plupart du temps, il est recommandé d'élaguer (limiter la profondeur des) arbres si vous avez affaire à des données bruitées. Enfin, vous pouvez utiliser vos arbres entièrement développés pour calculer les performances des arbres plus courts, ceux-ci constituant un "sous-ensemble" des arbres pleinement développés.

  • Nombre de fonctionnalités à tester sur chaque nœud : pour valider votre expérience avec une large gamme de valeurs (y compris celles recommandées), vous devez obtenir une courbe de performance et pouvoir identifier le maximum en indiquant la valeur optimale pour ce paramètre. + Shea Parkes répond.

  • Shea Parkes a mentionné les Extra-Trees, voici l'article original décrivant en détail la méthode: http://orbi.ulg.ac.be/bitstream/2268/9357/1/geurts-mlj-advance.pdf

0asa
la source