Je voudrais ajouter mes deux cents à cela, car je pensais que les réponses existantes étaient incomplètes.
L'exécution de l'ACP peut être particulièrement utile avant d'entraîner une forêt aléatoire (ou LightGBM, ou toute autre méthode basée sur un arbre de décision) pour une raison particulière que j'ai illustrée dans l'image ci-dessous.
Fondamentalement, cela peut rendre le processus de recherche de la limite de décision parfaite beaucoup plus facile en alignant votre ensemble d'entraînement le long des directions avec la plus grande variance.
Les arbres de décision sont sensibles à la rotation des données, car la frontière de décision qu'ils créent est toujours verticale / horizontale (c'est-à-dire perpendiculaire à l'un des axes). Par conséquent, si vos données ressemblent à l'image de gauche, il faudra un arbre beaucoup plus grand pour séparer ces deux clusters (dans ce cas, il s'agit d'un arbre à 8 couches). Mais si vous alignez vos données le long de ses principaux composants (comme sur la photo de droite), vous pouvez obtenir une séparation parfaite avec une seule couche!
Bien sûr, tous les jeux de données ne sont pas distribués comme ceci, donc PCA peut ne pas toujours aider, mais il est toujours utile de l'essayer et de voir si c'est le cas. Et juste un rappel, n'oubliez pas de normaliser votre jeu de données à la variance unitaire avant d'effectuer l'ACP!
PS: En ce qui concerne la réduction de la dimensionnalité, je suis d'accord avec le reste des gens en ce que ce n'est généralement pas un problème aussi important pour les forêts aléatoires que pour les autres algorithmes. Mais cela pourrait aider à accélérer un peu votre entraînement. Le temps de formation de l'arbre de décision est O (n m log (m)), où n est le nombre d'instances de formation, m - nombre de dimensions. Et bien que les forêts aléatoires choisissent au hasard un sous-ensemble de dimensions pour chaque arbre à former, plus la fraction du nombre total de dimensions que vous choisissez est faible, plus vous devez former d'arbres pour obtenir de bonnes performances.
mtry
paramètre) pour construire chaque arbre. Il existe également une technique d'élimination des fonctionnalités récursives construite au-dessus de l'algorithme RF (voir le package varSelRF R et les références qu'il contient ). Il est cependant certainement possible d'ajouter un schéma initial de réduction des données, bien qu'il doive faire partie du processus de validation croisée. La question est donc: voulez-vous entrer une combinaison linéaire de vos fonctionnalités dans RF?