La forêt au hasard sur un de très gros fichiers
J'ai un grand jeu de données dans R (1M+ rangées de 6 colonnes) que je veux utiliser pour former une forêt aléatoire (à l'aide de la randomForest
package) pour la régression fins. Malheureusement, je reçois un Error in matrix(0, n, n) : too many elements specified
d'erreur lorsque vous essayez de faire la même chose à la fois et ne peut pas allouer suffisamment de mémoire genre d'erreurs lors de l'exécution sur un sous-ensemble de données -- jusqu'à 10,000 ou alors observations.
De voir qu'il n'y a aucune chance que je peux ajouter plus de RAM sur ma machine et forêts aléatoires sont très appropriés pour le type de processus que je suis en train de modèle, j'aimerais vraiment faire ce travail.
Toute suggestion ou une solution de contournement idées sont très appréciées.
- Courir avec
proximity = FALSE
que joran proposé et nous dire si cela fonctionne. - Un moyen relativement simple autour de votre problème serait de sous-ensemble de votre matrice d'entrée. Toutes les données ne sera probablement pas vous donner un meilleur modèle que celui avec un sous-ensemble de taille 10K x 10K.
- Avez-vous un look à la bibliothèque(h2o) ? Qui fonctionne OK pour les très gros problèmes, voir r-bloggers.com/benchmarking-random-forest-implementations
Vous devez vous connecter pour publier un commentaire.
Vous êtes susceptible de demander
randomForest
pour créer de la proximité de la matrice des données, qui, si vous pensez à ce sujet, sera incroyablement de taille: 1 m x 1 millions de dollars. Une matrice de cette taille serait nécessaire, peu importe comment petit vous définissezsampsize
. En effet, il suffit de Googler le message d'erreur semble le confirmer, comme l'auteur du package les états que le seul endroit dans le code source complet oùn,n)
la retrouve dans le calcul de la proximité de la matrice.Mais il est difficile d'aider de plus en plus, étant donné que vous avez fourni aucun détail concernant le code que vous utilisez.
keep.forest=F
résultats dans un 14MB résultat, tandis queproximity=FALSE
fait pas de différence dans ou en dehors: le résultat était de 232 MB.keep.forest = FALSE
permettra certainement de réduire considérablement la taille de l'objet.randomForest
: c'est à l'aiderandomForest
viacaret
. À un certain moment, il a voulu allouer 21 GO, en supposant que l'OP était en cours d'exécutionrandomForest
directement, et non une question.Je recommanderais le
bigrf
package dans R, car il est conçu pour le type de problème que vous avez rencontré (c'est à dire, le manque de suffisamment de RAM). Malheureusement, à cette époque,bigrf
a été retiré de CRAN, mais elle est toujours disponible dans les archives (cf. réponse: Ne pouvez pas installer bigrf paquet).Une autre approche pourrait impliquer combinant RFs basés sur différentes données d'entraînement, mais les résultats pourraient être considérés comme dénués de sens (voir réponse: Combinant les forêts aléatoires construits avec différents ensembles d'apprentissage dans la R pour plus de détails). La modification mentionnée dans le dernier post a fonctionné pour moi, mais la combinaison de la RFs j'ai couru étaient parfois mieux, parfois pire par rapport à l'utilisation d'un seul RF (YMMV).
bigrf
paquet est censé s'occuper de régressions. finzi.psych.upenn.edu/library/bigrf/html/bigrf-package.html