J'ai remarqué qu'il existe quelques implémentations de forêt aléatoire telles que ALGLIB, Waffles et certains packages R tels que randomForest
. Quelqu'un peut-il me dire si ces bibliothèques sont hautement optimisées? Sont-ils fondamentalement équivalents aux forêts aléatoires décrites dans Les éléments de l’apprentissage statistique ou ont-ils été complétés de nombreuses astuces?
J'espère que cette question est assez spécifique. Pour illustrer le type de réponse que je recherche, si quelqu'un me demandait si le progiciel d'algèbre linéaire BLAS était hautement optimisé, je dirais qu'il était extrêmement optimisé et qu'il ne valait surtout pas la peine d'être amélioré, sauf dans des applications très spécialisées.
random-forest
algorithms
model-evaluation
Henry B.
la source
la source
Réponses:
(Mise à jour du 6 IX 2015 avec les suggestions des commentaires, également faite en CW)
Il existe deux nouveaux packages intéressants pour R qui sont plutôt bien optimisés pour certaines conditions:
Autres implémentations RF:
Le papier Ranger présente certaines comparaisons vitesse / mémoire, mais il n’existe pas de référence complète.
la source
Autant que je sache, la version R de randomForest appelle le même code Fortran que la version d'origine. De plus, il est trivial de paralléliser la fonction randomForest. C'est en fait l'un des exemples fournis dans la documentation foreach .
Étant donné que les forêts aléatoires sont embarrassantes en parallèle, la plus grande optimisation que vous puissiez faire est de les exécuter en parallèle. Après cela, je ne pense pas que l'algorithme ait un fruit à portée de main, mais je peux me tromper.
Le seul problème est que vous perdez l'estimation d'erreur hors du sac dans la forêt combinée, mais il existe probablement un moyen simple de la calculer (j'aimerais en fait savoir comment faire cela).
la source
Le ELSII utilisé forêt d'arbres décisionnels (voir par exemple référence 3 p.591), qui est une implémentation R du Breiman et Cutler Code Fortran de Salford. Le code de Andy Liaw est en C.
Il existe une autre implémentation de RF proposée dans le package de parti (en C), qui repose sur R / Lapack, qui dépend de BLAS (voir
/include/R_ext/Lapack.h
dans votre répertoire de base R).En ce qui concerne l'ensachage, il ne devrait pas être trop difficile de le mettre en parallèle, mais je laisserai aux utilisateurs plus spécialisés le soin de répondre à cet aspect.
la source
L'équipe à l'origine de randomJungle affirme que l'ordre de grandeur est plus rapide que l'implémentation de R randomForest et qu'il utilise moins de mémoire en ordre. Un paquet pour randomJungle est en cours de développement pour R mais je ne peux pas encore le construire.
https://r-forge.r-project.org/projects/rjungler/
la source
Pour l' implémentation en Javascript, passez par cette démo.
Si vous êtes comme un enfant qui a faim d'un chocolat, voici votre chocolat de forêt aléatoire http://cs.stanford.edu/people/karpathy/svmjs/demo/demoforest.html
la source