J'applique un algorithme de forêt aléatoire en tant que classificateur sur un ensemble de données de microréseaux qui sont divisés en deux groupes connus avec des milliers de fonctionnalités. Après l'exécution initiale, je regarde l'importance des fonctionnalités et réexécute l'algorithme d'arbre avec les fonctionnalités les plus importantes 5, 10 et 20. Je trouve que pour toutes les fonctionnalités, top 10 et 20, l'estimation OOB du taux d'erreur est de 1,19% alors que pour les 5 meilleures fonctionnalités, elle est de 0%. Cela me semble contre-intuitif, donc je me demandais si vous pouviez expliquer si je manque quelque chose ou si j'utilise la mauvaise métrique.
J'utilise le package randomForest dans R avec ntree = 1000, nodesize = 1 et mtry = sqrt (n)
la source
Réponses:
Il s'agit d'une sur-sélection de fonctionnalités et cela est assez connu - voir Ambroise & McLachlan 2002 . Le problème est basé sur le fait que la RF est trop intelligente et que le nombre d'objets est trop petit. Dans ce dernier cas, il est généralement assez facile de créer un attribut au hasard qui peut avoir une bonne corrélation avec la décision. Et lorsque le nombre d'attributs est important, vous pouvez être certain que certains d'entre eux totalement non pertinents seront de très bons prédicteurs, même assez pour former un cluster qui sera capable de recréer la décision à 100%, surtout lorsque l'énorme flexibilité de RF est considéré. Et donc, il devient évident que lorsqu'on lui demande de trouver le meilleur sous-ensemble possible d'attributs, la procédure FS trouve ce cluster.
Une solution (CV) est donnée dans A & McL, vous pouvez également tester notre approche du sujet, leL'algorithme de Boruta , qui étend essentiellement l'ensemble avec des «attributs fantômes» conçus pour être aléatoires par conception et compare leur importance RF à celle obtenue pour les attributs réels afin de juger lesquels d'entre eux sont en effet aléatoires et peuvent être supprimés; ceci est répliqué plusieurs fois pour être significatif. Boruta est plutôt destiné à une tâche un peu différente, mais pour autant que mes tests l'ont montré, l'ensemble résultant est exempt du problème de surcapacité FS.
la source
J'ai pensé ajouter une explication intuitive à ce modèle.
Dans chaque arbre de décision comprenant la forêt aléatoire, les données sont réparties de manière itérative selon des dimensions uniques. Surtout, cette procédure implique
1) en ne considérant qu'un petit sous-ensemble sélectionné au hasard de toutes les variables explicatives, et
2) sélectionner la variable explicative la plus fortement associée dans ce sous-ensemble de variables sélectionné au hasard pour diviser les données le long.
Par conséquent, la probabilité que les n variables les plus importantes soient sélectionnées à un nœud particulier diminue à mesure que le nombre de variables explicatives augmente. Par conséquent, si l'on ajoute un grand nombre de variables qui contribuent à peu ou pas de pouvoir explicatif, cela conduit automatiquement à une augmentation du taux d'erreur de la forêt. Et inversement, le choix des seules variables les plus importantes à inclure entraînera très probablement une baisse du taux d'erreur.
Les forêts aléatoires sont assez robustes pour cela et cela nécessite généralement un très grand ajout de ces paramètres de «bruit» pour réduire significativement les performances.
la source