Utilisation de LASSO sur une forêt aléatoire

14

Je voudrais créer une forêt aléatoire en utilisant le processus suivant:

  • Construisez un arbre sur un échantillon aléatoire des données et des fonctionnalités en utilisant le gain d'informations pour déterminer les divisions
  • Terminer un nœud feuille s'il dépasse une profondeur prédéfinie OU toute scission entraînerait un nombre de feuilles inférieur à un minimum prédéfini
  • Plutôt que d'attribuer une étiquette de classe pour chaque arbre, attribuez la proportion de classes dans le nœud feuille
  • Arrêtez de construire des arbres après la construction d'un nombre prédéfini

Cela va à l'encontre du processus traditionnel de la forêt aléatoire de deux manières. Premièrement, il utilise des arbres élagués qui attribuent des proportions plutôt que des étiquettes de classe. Et deuxièmement, le critère d'arrêt est un nombre prédéterminé d'arbres plutôt qu'une estimation d'erreur hors du sac.

Ma question est la suivante:

Pour le processus ci-dessus qui génère N arbres, puis-je ajuster un modèle en utilisant la régression logistique avec la sélection LASSO? Quelqu'un a-t-il de l'expérience en ajustant un classificateur de forêt aléatoire et en post-traitement avec LASSO logistique?

Le cadre ISLE mentionne l'utilisation de LASSO comme étape de post-traitement pour les problèmes de régression mais pas les problèmes de classification. De plus, je n'obtiens aucun résultat utile lors de la recherche sur le "lasso de forêt aléatoire".

Zelazny7
la source
Le lasso est bon pour trouver / pondérer des fonctionnalités utiles lorsqu'il y en a beaucoup de qualité variable. Les arbres individuels dans votre forêt ne vont probablement pas être beaucoup mieux ou pires que les autres arbres, donc je ne pense pas que le lasso va vous aider beaucoup.
rrenaud
En échantillonnant une petite fraction sans remplacement et en limitant la profondeur des arbres, une plus grande diversité est introduite, donc je pense qu'une certaine forme de régularisation est justifiée.
Zelazny7
Pouvez-vous être plus précis sur la façon dont vous prévoyez d'adapter le modèle logistique? Quelles sont exactement les variables prédictives? Aussi - quelle est votre motivation pour le post-traitement? Si vous essayez de sélectionner des variables, il existe d'autres méthodes à considérer.
Alex Williams
En générant les prévisions de chaque arbre, un nouvel ensemble de données de prédicteurs est créé. Cet ensemble de données peut être utilisé dans la régression LASSO pour arriver à une combinaison clairsemée des prédictions d'arbre. La motivation est de produire des modèles plus concis et plus rapides en production.
Zelazny7
J'ai rencontré des problèmes similaires récemment, et j'ai trouvé dans l'article original de Friedman qu'il a conçu une fonction de perte spécialement pour les problèmes de classification binaire. J'espère que ce serait utile. D'ailleurs, avez-vous une idée de comment l'étendre aux problèmes de classification multi-classes? Ou quelle est votre approche des problèmes de classification multi-classes?
Quan

Réponses:

5

Cela ressemble un peu à un boost d'arbre dégradé. L'idée du boosting est de trouver la meilleure combinaison linéaire d'une classe de modèles. Si nous ajustons un arbre aux données, nous essayons de trouver l'arbre qui explique le mieux la variable de résultat. Si nous utilisons plutôt le boosting, nous essayons de trouver la meilleure combinaison linéaire d'arbres.

Cependant, en utilisant le boost, nous sommes un peu plus efficaces car nous n'avons pas de collection d'arbres aléatoires, mais nous essayons de construire de nouveaux arbres qui fonctionnent sur les exemples que nous ne pouvons pas encore bien prédire.

Pour en savoir plus à ce sujet, je suggère de lire le chapitre 10 des éléments de l'apprentissage statistique: http://statweb.stanford.edu/~tibs/ElemStatLearn/

Bien que ce ne soit pas une réponse complète à votre question, j'espère que cela vous aidera.

Sven
la source
3
Merci. Depuis que j'ai initialement posé cette question, je me suis familiarisé avec le package GBM de R. Mon processus consiste maintenant à construire un modèle GBM d'environ 10 000 arbres, puis à exécuter les 10 000 arbres via GLMnet pour effectuer une régression LASSO sur les arbres. Il en résulte un modèle GBM compressé avec peu ou pas de perte de performances (et parfois un boost).
Zelazny7
@ Zelazny7 Qu'en est-il des données d'exclusion / de test difficiles Est-ce que cela prédit bien?
josh
Oui, tous mes tests sont effectués sur une attente qui n'informe en rien le développement. Les performances ne se dégradent pas dans la plupart des cas. Parfois c'est un peu pire, parfois ça s'améliore même.
Zelazny7
1
@ Zelazny7 J'ai également utilisé la même procédure (lors de mon dernier emploi), avec les mêmes expériences.
Matthew Drury
Vous devez être sur quelque chose ... Hastie lui-même suggère de post-traiter des arbres de forêt aléatoire ou de booster en utilisant LASSO. Il a mentionné est dans cette vidéo à 30h10.
Jonathan