Forêt aléatoire dans un cadre Big Data


8

J'ai un ensemble de données avec 5 818 446 lignes et 51 colonnes, dont 50 sont des prédicteurs. Ma réponse est quantitative, je suis donc intéressé par un modèle de régression. J'essaie d'adapter une forêt aléatoire à mes données en utilisant le package caret. Cependant, je n'ai pas assez de RAM pour le faire.

J'ai cherché des solutions à mon problème. En plus d'avoir un ordinateur plus puissant, il semble que je puisse utiliser l' ensachage pour résoudre mon problème. Par conséquent, mon idée est la suivante:

  1. Créer des partitions de formation et de test à partir de mon jeu de données d'origine

  2. Échantillon avec remplacement d'une petite partie de mon ensemble de données de train dans R (disons 1% de celui-ci, soit 58 185 lignes)

  3. Adapter une forêt aléatoire à cette petite partie des données

  4. Enregistrer le résultat du modèle

  5. Répétez les étapes 2 à 4 1000 fois

  6. Combinez ces 1 000 modèles obtenus aux étapes 2 à 5

Cependant, la forêt aléatoire elle-même utilise l'ensachage pour adapter le modèle aux données et donc je ne suis pas sûr si mon approche est correcte. J'ai donc quelques questions à vous poser:

i) Mon approche est-elle correcte? Je veux dire, comme je n'ai pas assez de RAM dans mon système, est-il correct d'adapter de nombreux modèles de forêt aléatoires différents à différents morceaux de données et de les combiner ensuite?

ii) En supposant que mon approche est correcte, 1% des données est une bonne règle empirique pour ma taille d'échantillon? Même avec 1% des données, j'ai encorenp.

iii) En supposant que mon approche est correcte, y a-t-il un certain nombre de réplications pour les modèles que je devrais utiliser? J'ai pensé à 1000 pour des raisons.


Étant donné que l'ensachage est une méthode pour générer chaque arbre de décision dans une forêt aléatoire, que diriez-vous de faire un seul DT pour 1%, puis de combiner les arbres ? Voila, une forêt aléatoire cuite à la maison. Ensuite, vous pouvez construire 1000 arbres ou plus et faire des combinaisons aléatoires d'arbres pour voir ce qui fonctionne le mieux sur vos données de test; bien que vous vous adaptiez à vos données de test, alors peut-être les prendre toutes et les exécuter.
Engineero

Oooh! Ou combinez-les tous avec une couche de sortie entièrement connectée, puis entraînez cette couche avec l1régularisation, ce qui réduit généralement les poids des composants insignifiants à presque presque zéro, de sorte que vous pouvez voir en inspectant les arbres que vous devez conserver.
Engineero

@Engineero La méthode que vous décrivez est généralement connue sous le nom d '"éviers de cuisine aléatoires": ajustez un grand nombre d'apprenants faibles pour former une représentation de base des caractéristiques originales (même des souches de décision), puis pesez les nœuds terminaux, peut-être avec une certaine régularisation des poids des nœuds . people.eecs.berkeley.edu/~brecht/kitchensinks.html
Sycorax dit de réintégrer Monica

1 / Je n'ai aucune connaissance définitive, donc je ne poste pas de réponse. Mais cette méthode devrait être bonne. Notez que le nombre d'échantillons dans chaque "lot" implique une limite supérieure sur la profondeur de chaque arbre, et donc la capacité de chaque arbre à ajuster les données, vous pouvez donc envisager un réglage sur 0,5%, 1%, 2%, 4 % (théoriquement) ... des données lors de la génération de chaque arbre. Le nombre d'arbres à utiliser est purement une question de savoir à quel moment la perte du modèle "plateaux"; ce choix n'a pas besoin d'être ajusté car la perte attendue est une fonction décroissante monotone deTpour des règles de notation appropriées et continues.
Sycorax dit Réintégrer Monica

2 / Pour plus d'informations sur le nombre d'arbres, voir ma réponse ici: stats.stackexchange.com/questions/348245/…
Sycorax dit

Réponses:


3

Cela ne répond pas à vos questions spécifiques, mais à la motivation derrière elles. Le bigRFpackage peut résoudre votre problème:

Il s'agit d'une implémentation R des algorithmes Random Forest de Leo Breiman et Adele Cutler pour la classification et la régression, avec des optimisations pour les performances et pour la gestion des ensembles de données trop volumineux pour être traités en mémoire.

Aussi:

Pour les grands ensembles de données, les données d'apprentissage, les calculs intermédiaires et certaines sorties (par exemple les matrices de proximité) peuvent être mises en cache sur le disque à l'aide d'objets "big.matrix". Cela permet de créer des forêts aléatoires sur des ensembles de données assez volumineux sans atteindre les limites de RAM, ce qui entraînera un échange excessif de mémoire virtuelle par le système d'exploitation.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.