Une forêt aléatoire avec plusieurs sorties serait-elle possible / pratique?

17
  1. Les forêts aléatoires (RF) sont une méthode compétitive de modélisation / extraction de données.

  2. Un modèle RF a une sortie - la variable sortie / prédiction.

  3. L'approche naïve de la modélisation de plusieurs sorties avec des RF serait de construire une RF pour chaque variable de sortie. Nous avons donc N modèles indépendants, et lorsqu'il existe une corrélation entre les variables de sortie, nous aurons une structure de modèle redondante / en double. Cela pourrait être très coûteux, en effet. De plus, en règle générale, plus de variables de modèle impliquent un modèle plus ajusté (moins de généralisation). Je ne sais pas si cela s'applique ici, mais c'est probablement le cas.

En principe, nous pourrions avoir un RF avec plusieurs sorties. La variable de prédiction est désormais un vecteur (n-tuple). Les nœuds de décision dans chaque arbre de décision divisent maintenant l'ensemble des vecteurs cible / prédiction sur la base d'un vecteur de seuil, je suppose que ce seuil est considéré comme un plan dans l'espace à n dimensions et que, par conséquent, nous pouvons déterminer de quel côté du seuil vecteur chacun des vecteurs cibles est activé.

La valeur de prédiction optimale pour chaque côté du fractionnement de décision est la moyenne (centroïde) calculée pour les vecteurs de chaque côté.

Trouver le point de partage optimal lorsque vous travaillez avec des variables uniques est trivial et rapide / efficace sur le plan des calculs. Pour un n-tuple, nous ne pouvons pas trouver le fractionnement optimal (ou du moins il devient impossible à calculer à mesure que N augmente), mais nous pouvons être en mesure de trouver un fractionnement presque optimal en utilisant une méthode de type Monte Carlo (ou un hybride de Monte Carlo et local traversée de gradient).

Est-ce que cela fonctionnerait réellement? Autrement dit, pourrait-il simplement cartographier les paires d'entraînement sans généraliser? Cette technique existe-t-elle déjà sous un nom différent?

Vous voudrez peut-être aussi examiner comment cela se rapporte aux réseaux neuronaux tels que les machines Boltzmann restreintes (RBM) et les réseaux de croyances profondes.

redcalx
la source
La recherche sur «forêt aléatoire à étiquettes multiples» montre que cela a même été fait de plusieurs manières distinctes; de toute façon, j'ai joué avec cette approche à plusieurs binaires-rfs dans la recherche d'informations musicales et ça fonctionnait plutôt bien.
1
Je vous suggère cet article . Ils font quelque chose de très proche de ce que vous avez décrit.
Dmitry Laptev
2
Cela existe déjà dans le package Party et dans certains autres packages (langage R).
Jase

Réponses:

8

Plusieurs arbres de décision en sortie (et donc des forêts aléatoires) ont été développés et publiés. Pierre Guertz distribue un package pour cela ( télécharger). Voir aussi Segal et Xiao, Forêts aléatoires multivariées, Exploration de données WIREs Knowl Discov 2011 1 80–87, DOI: 10.1002 / widm.12 Je pense que la dernière version de Scikit-learn prend également en charge cela. Une bonne revue de l'état de l'art peut être trouvée dans la thèse de Henrik Linusson intitulée "LES FORÊTS ALÉATOIRES À SORTIES MULTIPLES". La méthode la plus simple pour effectuer les choix de division à chaque nœud consiste à choisir au hasard UNE des variables de sortie, puis à suivre l'approche habituelle de la forêt aléatoire pour choisir une division. D'autres méthodes basées sur une somme pondérée du score d'information mutuelle pour chaque caractéristique d'entrée et variable de sortie ont été développées, mais elles sont assez coûteuses par rapport à l'approche aléatoire.

Tom Dietterich
la source
-1

Comme indiqué ici :

Tous les classificateurs de scikit-learn effectuent une classification multiclasse prête à l'emploi.

Et cela inclut Random Forest.

La page: http://scikit-learn.org/stable/modules/tree.html#tree-multioutput contient également de nombreuses références sur ce sujet.

0asa
la source
8
Pour être clair; la question concerne la régression multi- sorties .
redcalx
Désolé pour le retard dans ma réponse, mais il semble que scikit-learn propose également une régression multi-sorties, par exemple: scikit-learn.org/stable/auto_examples/tree/… Et dans tous les cas, il existe une stratégie qui consiste à en ajuster une régresseur par cible. Il s'agit d'une stratégie simple pour étendre les régresseurs qui ne prennent pas en charge nativement la régression multicible : scikit-learn.org/stable/modules/generated/… HTH
0asa