Comment choisir la répartition dans la forêt aléatoire pour les prédicteurs catégoriels (fonctionnalités)?

8

Je comprends comment la meilleure répartition est choisie pour la forêt aléatoire pour les prédicteurs numériques (caractéristiques).

Les prédicteurs numériques sont triés puis pour chaque valeur, l'impureté ou l'entropie de Gini est calculée et un seuil est choisi qui donne la meilleure répartition. Mais quelle est la meilleure répartition choisie pour le prédicteur catégorique car il n'y a pas d'ordre spécifique?

Ajay
la source

Réponses:

9

L'implémentation vanilla habituelle essaie toutes les combinaisons possibles de vos catégories. Il exprime ces combinaisons sous la forme d'un entier qui représente les catégories sélectionnées et celles qui sont omises lors de la division. Cela va de gauche à droite. Par exemple, si vous avez une variable avec les classes "Cat", "Dog", "Cow", "Rat", elle balaiera les divisions possibles, ce qui signifie quelque chose comme:

Chien vs le reste = 0100 (rappelez-vous, lisez de gauche à droite)

Chat contre le reste = 1000

En soi, mais aussi

Chien et chat contre vache et rat = 1100

Vache et chat contre chien et rat = 1010

Et puis, comme mentionné, il utilise des entiers pour gérer cela, pour représenter la division:

library(R.utils)
> intToBin(12)
[1] "1100"
JEquihua
la source
0

La forêt est une méthode d'ensemble des arbres. Je pense donc que votre question est davantage basée sur l'algorithme des arbres sur le fractionnement des variables. Il existe deux types de prédicteur catégorique, le facteur ordonné et le facteur non ordonné.

Le facteur ordonné est similaire à la variable numérique et la forêt aléatoire trouvera le point de coupure, tandis que ce dernier utilise un autre algorithme comme ci-dessous.

Il essaiera de rattraper le premier niveau du facteur comme la division et essayera d'adapter le modèle et de trouver la performance avec fonction de perte. Ensuite, essayez de trouver le deuxième niveau et ajustez-le à nouveau et trouvez les performances, etc. Au final, il trouve les meilleures combinaisons de niveaux de fractionnement en fonction des meilleures performances.

Ainsi, vous constaterez qu'il faut beaucoup plus de temps et de mémoire pour que le modèle d'arbres ou le modèle de forêt aléatoire s'adapte aux facteurs numériques.

Vincent
la source
0

Si vos fonctionnalités sont catégoriques, la première idée qui me vient à l'esprit est de créer une fonctionnalité binaire pour chaque valeur possible dans la catégorie.

Ainsi, si vous avez une fonctionnalité correspondant à "marque de téléphone mobile" qui ne peut être que "Samsung, Apple, HTC ou Nokia", je la représenterais en quatre catégories (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0) et (0, 0, 0, 1) respectivement. De cette façon, le seuil sélectionnera entre être une marque ou l'une des autres à chaque division, sans avoir d'effets étranges.

J'espère que cela t'aides!

Cristina
la source
0

Soit choisissez des catégories aléatoires et utilisez la catégorie qui donne la meilleure répartition, soit choisissez des combinaisons aléatoires de catégories et utilisez la combinaison qui donne la meilleure répartition.

Je pense que peu importe laquelle des deux méthodes vous choisissez, car le fractionnement sur une combinaison de catégories sur un seul nœud peut être simulé en fractionnant sur une seule catégorie sur plusieurs nœuds.

Herman
la source