Je suis assez nouveau dans l'apprentissage automatique, les techniques CART et autres, et j'espère que ma naïveté n'est pas trop évidente.
Comment Random Forest gère-t-il les structures de données multi-niveaux / hiérarchiques (par exemple lorsque l'interaction entre niveaux est intéressante)?
C'est-à-dire, des ensembles de données avec des unités d'analyse à plusieurs niveaux hiérarchiques ( par exemple , les élèves imbriqués dans les écoles, avec des données sur les élèves et les écoles).
À titre d'exemple, considérons un ensemble de données à plusieurs niveaux avec des individus au premier niveau ( par exemple , avec des données sur le comportement électoral, la démographie, etc.) imbriqués dans les pays au deuxième niveau (avec des données au niveau national; par exemple , la population):
ID voted age female country population
1 1 19 1 1 53.01
2 1 23 0 1 53.01
3 0 43 1 1 53.01
4 1 27 1 1 53.01
5 0 67 0 1 53.01
6 1 34 1 2 47.54
7 0 54 1 2 47.54
8 0 22 1 2 47.54
9 0 78 0 2 47.54
10 1 52 0 2 47.54
Disons que voted
c'est la réponse / variable dépendante et les autres sont des variables prédictives / indépendantes. Dans ces types de cas, les marges et les effets marginaux d'une variable (dépendance partielle) pour une variable de niveau supérieur ( par exemple , population
) pour différentes variables de niveau individuel, etc., pourraient être très intéressants. Dans un cas similaire à celui-ci, glm
c'est bien sûr plus approprié - mais quand il y a beaucoup de variables, interactions et / ou valeurs manquantes, et / ou jeux de données à très grande échelle, etc., ce glm
n'est pas si fiable.
Sous-questions: Random Forest peut-il gérer explicitement ce type de structure de données d'une manière ou d'une autre? S'il est utilisé indépendamment, quel type de biais introduit-il? Si la forêt aléatoire n'est pas appropriée, existe-t-il une autre méthode de type ensemble?
(Question La forêt aléatoire sur les données groupées est peut-être similaire, mais n'y répond pas vraiment.)
la source
Réponses:
Les forêts aléatoires fonctionneraient bien, mais vous devez être très prudent lorsque vous réglez les hyperparamètres (surtout si vous voulez une mesure réaliste des performances de généralisation). Les estimations d'erreur OOB traditionnelles seront très optimistes car il y a un «jumelage» rampant dans vos données.
Pour obtenir des estimations de réglage et de généralisation appropriées, vous devez comprendre quelles sont les caractéristiques de toutes les nouvelles données que vous prévoyez rencontrer. Si vous souhaitez extrapoler à de nouveaux pays, vous devrez configurer une sorte de réglage basé sur le rééchantillonnage (comme la validation croisée k) qui effectue un échantillonnage stratifié par pays.
Vous devez également faire attention à la façon dont vous encodez les données dans une forêt aléatoire. Il semble que ce
country
soit une variable catégorielle. Le saisir sous forme numérique serait un peu difficile, mais pas sans espoir (surtout si vous avez commandé les identifiants par quelque chose d'utile).la source
Je travaille actuellement sur un package R qui exécute randomForest comme classificateur local le long d'une hiérarchie de classes prédéfinie. Le paquet peut être trouvé dans R Forge sous 'hie-ran-forest'. Le package est déjà opérationnel, bien qu'il échoue à l'un des tests de cran (pour MAC), je ne sais pas exactement pourquoi. En plus d'exécuter randomForest pour chaque nœud parent dans la hiérarchie, le package contient également des fonctions de prédiction et des fonctions de performance. L'une des mesures de performance rend compte de la structure hiérarchique des classes.
Le package traite l'interaction entre les niveaux en exécutant d'abord la forêt aléatoire en tant que classificateur local sur chaque nœud parent de la hiérarchie des classes. Ensuite, la fonction de prédiction récupère la proportion de votes hors valise que chaque cas a reçus dans chaque classificateur local. Ensuite, il y a deux façons de transformer la proportion de votes en classification nette: 1. une règle de majorité par étapes - Commencez par le classificateur local le plus proche de la racine de l'arbre et sélectionnez l'enfant de ce classificateur qui a reçu la plus forte proportion de votes. Ensuite, regardez tous les enfants du nœud sélectionné et sélectionnez à nouveau l'enfant qui a reçu la plus grande proportion de votes dans le classificateur local approprié. Continuez jusqu'à ce qu'un nœud terminal soit atteint. 2.
La proportion multiplicative de votes est comparable à la proportion de votes produits par un
la source
Dans un seul arbre de classification, ces groupes sont codés de la même manière que toute autre variable catégorielle. Cela se fait souvent sous forme de codage binaire ou simplement à l'aide d'un entier. Il existe différents arguments pour utiliser l'un ou l'autre. Dans les forêts aléatoires, si vous utilisez un codage binaire, certains groupes seront inclus / exclus pour un arbre donné. Vous pouvez donc avoir un indicateur pour
country_2
mais pascountry_3
. Si vous laissez la variable de groupe sous forme d'entier, l'ordre peut également affecter le résultat. Qu'est-ce que cela signifie pourcountry > 5
etcountry < 12
? Comment cela change-t-il si vous réétiquetez au hasard les pays avec de nouveaux nombres entiers?À chaque étape de la croissance d'un arbre, l'algorithme recherche la scission qui optimise les critères. S'il existe de grandes différences entre les groupes, la variable de regroupement sera importante, mais si elle n'est que modérément importante et que vous élaguez un arbre, alors la variable peut être essentiellement exclue.
Comme la plupart des autres algorithmes d'apprentissage automatique, CART et les forêts aléatoires ne tiennent pas nécessairement compte de la dépendance entre les observations au sein des groupes comme vous vous en doutez dans un modèle de régression hiérarchique. S'il est une dépendance entre les observations, il doit être capturé par l'algorithme de forêt aléatoire par la génération de nombreux arbres qui utilisent la variable de regroupement. Cependant, si d'autres variables démontrent une plus grande discrimination, la variable de regroupement peut être ignorée.
Dans votre cas,
country
etpopulation
sont parfaitement colinéaires. Aucune information n'est obtenue en utilisant les deux variables dans votre modèle. Vous pouvez donc réfléchir à la façon dont un modèle de forêt aléatoire traiterait ces variables dans vos données.la source