Interprétation de l'arbre de décision dans le contexte de l'importance des fonctionnalités


9

J'essaie de comprendre comment comprendre pleinement le processus de décision d'un modèle de classification d'arbre de décision construit avec sklearn. Les 2 principaux aspects que je regarde sont une représentation graphique de l'arbre et la liste des importances de fonctionnalités. Ce que je ne comprends pas, c'est comment l'importance des fonctionnalités est déterminée dans le contexte de l'arbre. Par exemple, voici ma liste d'importances de fonctionnalités:

Classement des fonctionnalités: 1. FeatureA (0.300237)

  1. Fonction B (0,166800)

  2. Fonction C (0,092472)

  3. Fonction D (0,075009)

  4. Fonction E (0,068310)

  5. Fonction F (0,067118)

  6. Fonction G (0,066510)

  7. Fonction H (0,043502)

  8. Fonction I (0,040281)

  9. Fonction J (0,039006)

  10. Fonction K (0,032618)

  11. FonctionnalitéL (0,008136)

  12. FonctionnalitéM (0,000000)

Cependant, quand je regarde le haut de l'arbre, cela ressemble à ceci:Extrait d'arbre

En fait, certaines des caractéristiques classées «les plus importantes» n'apparaissent que beaucoup plus bas dans l'arborescence, et le sommet de l'arborescence est FeatureJ, qui est l'une des entités les moins bien classées. Mon hypothèse naïve serait que les caractéristiques les plus importantes seraient classées près du sommet de l'arbre pour avoir le plus grand impact. Si c'est incorrect, alors qu'est-ce qui rend une fonctionnalité «importante»?


1
combien d'échantillons sont affectés à gauche et à droite du premier nœud?
oW_

Réponses:


4

Il n'est pas nécessaire que plus une entité est importante, plus son nœud est élevé dans l'arbre de décision.

C'est simplement parce que des critères différents (par exemple Gini Impureté, Entropie-Information Gain, MSE, etc.) peuvent être utilisés dans chacun de ces deux cas (division vs importance).

Par exemple, SkLearnvous pouvez choisir de diviser les nœuds de l'arbre de décision selon le critère Entropy-Information Gain (voir criterion& 'entropy'à SkLearn) tandis que l'importance des fonctionnalités est donnée par Gini Importance qui est la diminution moyenne de Gini impureté pour une variable donnée dans tous les arbres de la forêt au hasard (voir feature_importances_à SkLearnet ici ).

Si j'ai raison, il en SkLearnva de même même si vous choisissez de diviser les nœuds sur l'arbre de décision selon le critère Gini Impurity alors que l'importance des fonctionnalités est donnée par Gini Importance car Gini Impurity et Gini Importance ne sont pas identiques (voir aussi ceci et cela sur Stackoverflow à propos de l'importance de Gini).


Déjà @oW_ a donné une réponse plutôt correcte à la question d'origine mais j'ai pensé qu'il était bon de l'écrire de manière plus concise et lucide pour le lecteur.
Outcast

3

Dans scikit-learn, l'importance des fonctionnalités est la diminution de l'impureté des nœuds. La clé est qu'il ne mesure l'importance qu'au niveau du nœud. Ensuite, tous les nœuds sont pondérés par le nombre d'échantillons atteignant ce nœud.

Ainsi, si seuls quelques échantillons se retrouvent dans le nœud gauche après la première division, cela ne signifie pas que J est la caractéristique la plus importante car le gain sur le nœud gauche peut n'affecter que très peu d'échantillons. Si vous imprimez également le nombre d'échantillons dans chaque nœud, vous obtiendrez une meilleure image de ce qui se passe.


2

Ce n'est pas parce qu'un nœud est plus bas sur l'arbre qu'il est moins important. L'importance des fonctionnalités dans sci-kitlearn est calculée par la façon dont un nœud sépare purement les classes (index Gini). Vous remarquerez même dans votre arbre recadré que A est divisé trois fois par rapport à celui de J et que les scores d'entropie (une mesure de pureté similaire à Gini) sont quelque peu plus élevés dans les nœuds A que J.

Cependant, si vous ne pouviez choisir qu'un seul nœud, vous choisiriez J car cela donnerait les meilleures prédictions. Mais si vous aviez la possibilité d'avoir plusieurs nœuds prenant plusieurs décisions différentes, A serait le meilleur choix.


Donc, en termes simples, en supposant qu'il n'y a que 2 classifications possibles (appelons-les 0 et 1), la caractéristique à la base de l'arbre sera celle qui divise le mieux les échantillons en 2 groupes (c'est-à-dire le meilleur travail de division) les 1 sur un côté de l'arbre et les 0 sur l'autre). Est-ce exact? Je ne suis toujours pas tout à fait clair sur l'importance des fonctionnalités si le classement n'est pas le meilleur pour séparer les 0 et les 1 dans ce contexte
Tim Lindsey

-2

L'importance des variables est mesurée par la diminution de la précision du modèle lorsque la variable est supprimée. Le nouvel arbre de décision créé avec le nouveau modèle sans la variable pourrait être très différent de l'arbre d'origine. La décision de fractionnement dans votre diagramme se fait en tenant compte de toutes les variables du modèle.

Quelle variable diviser à la racine (et aux autres nœuds) est mesurée par l'impureté. Une bonne pureté (par exemple: tout dans la branche gauche a la même valeur cible) n'est pas une garantie d'une bonne précision. Vos données peuvent être biaisées, votre branche droite a plus de réponses que votre branche gauche. Par conséquent, il n'est pas bon de classer correctement la branche gauche, nous devons également considérer la branche droite. Par conséquent, la variable de fractionnement peut ou non être une variable importante pour la précision globale du modèle.

L'importance des variables est une meilleure mesure pour la sélection des variables.


2
Je ne pense pas que c'est comme ça qu'il est implémenté dans scikit-learn. Là, l'importance des caractéristiques est mesurée comme «importance de gini», c'est-à-dire une diminution totale de l'impureté du nœud pondérée par la proportion d'échantillons atteignant ce nœud.
oW_

"L'importance d'une caractéristique est calculée comme la réduction totale (normalisée) du critère apporté par cette caractéristique. Elle est également connue sous le nom d'importance de Gini." - scikit-learn.org/stable/modules/generated/…
Afflatus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.