Forêt aléatoire sur des données structurées à plusieurs niveaux / hiérarchiques

13

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 votedc'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, glmc'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 glmn'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.)

Mikael Poul Johannesson
la source
Bonjour @MikaelAndersson, avez-vous trouvé une solution aux questions que vous avez posées? Je suis confronté à une situation similaire et j'espère entendre votre expérience. Merci.
NoviceProg

Réponses:

4

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 countrysoit 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).

Parkes de karité
la source
Pourriez-vous développer un peu pourquoi les estimations d'erreur OOB seront trop optimistes?
dmartin
2
Je suppose que leur optimisme dépend de ce à quoi pourraient ressembler de nouvelles données. Si de nouvelles données provenaient d'autres comtés, alors cette forêt aléatoire ne fonctionnerait probablement pas aussi bien que ses erreurs OOB l'indiquent. En effet, les erreurs OOB proviennent toujours d'échantillons du même ensemble de pays par exemple.
Shea Parkes
3

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

Yoni Gavish
la source
2
Pouvez-vous préciser que votre package traite des "interactions entre niveaux", et si oui, comment cela fonctionne-t-il? Dire simplement qu'un package existe n'est pas une grande réponse (je ne veux pas être trop critique ici, mais CV cherche à construire un référentiel permanent d'informations ML de haute qualité et le fait qu'un package existe n'existe pas). tout à fait conforme à cette norme.)
gung - Réintégrer Monica
Notez que votre nom d'utilisateur, avec un lien vers votre page utilisateur, est automatiquement attaché à chaque message que vous faites ici. Il n'est donc pas nécessaire de signer vos messages - en fait, nous préférons que vous ne le fassiez pas. Si vous voulez que les gens puissent vous contacter, vous pouvez publier une méthode (par exemple, votre adresse e-mail) sur votre page utilisateur.
gung - Réintégrer Monica
C'est super, merci @YoniGavish. Pourquoi ne pas modifier votre réponse et y ajouter ces informations?
gung - Rétablir Monica
Est-ce mieux @gung?
Yoni Gavish
Oui, ça le fera, @YoniGavish, +1. Bienvenue sur le site.
gung - Réintégrer Monica
3

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_2mais pas country_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 pour country > 5et country < 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, countryet populationsont 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.

Ellis Valentiner
la source