Interpretazione dell'albero delle decisioni nel contesto dell'importanza delle funzioni


9

Sto cercando di capire come comprendere appieno il processo decisionale di un modello di classificazione dell'albero decisionale creato con sklearn. I 2 aspetti principali che sto guardando sono una rappresentazione grafica dell'albero e l'elenco delle importazioni delle funzionalità. Quello che non capisco è come viene determinata l'importanza della funzione nel contesto dell'albero. Ad esempio, ecco il mio elenco di importanti funzionalità:

Classifica delle caratteristiche: 1. Caratteristica A (0.300237)

  1. FeatureB (0.166800)

  2. Caratteristica C (0,092472)

  3. FeatureD (0.075009)

  4. Caratteristica E (0,068310)

  5. FeatureF (0.067118)

  6. FeatureG (0.066510)

  7. CaratteristicaH (0.043502)

  8. FeatureI (0.040281)

  9. FeatureJ (0.039006)

  10. FeatureK (0.032618)

  11. FeatureL (0.008136)

  12. FeatureM (0.000000)

Tuttavia, quando guardo la parte superiore dell'albero, si presenta così:Frammento di albero

In effetti, alcune delle caratteristiche classificate "più importanti" non appaiono fino a molto più in basso nella struttura e la parte superiore della struttura è FeatureJ, che è una delle caratteristiche con la classificazione più bassa. La mia ingenua ipotesi sarebbe che le caratteristiche più importanti sarebbero state classificate vicino alla cima dell'albero per avere il massimo impatto. Se ciò non è corretto, cos'è che rende "importante" una funzione?


1
quanti campioni vengono assegnati a sinistra e a destra del primo nodo?
oW_

Risposte:


4

Non è necessario che più una caratteristica sia importante, più alto è il suo nodo nell'albero decisionale.

Questo semplicemente perché in ciascuno di questi due casi possono essere utilizzati criteri diversi (ad es. Gini Impurity, Entropy-Information Gain, MSE ecc.) (Suddivisione per importanza).

Ad esempio, SkLearnpuoi scegliere di eseguire la suddivisione dei nodi nell'albero decisionale secondo il criterio Entropy-Information Gain (vedi criterion& 'entropy'at SkLearn) mentre l'importanza delle caratteristiche è data da Gini Importance che è la riduzione media del Gini Impurità per una data variabile attraverso tutti gli alberi della foresta casuale (vedi feature_importances_a SkLearne qui ).

Se ho ragione, SkLearnlo stesso vale anche se si sceglie di suddividere i nodi dell'albero decisionale secondo il criterio Gini Impurity mentre l'importanza delle funzionalità è data da Gini Importance perché Gini Impurity e Gini Importance non sono identiche (vedi anche questo e questo su Stackoverflow sull'importanza di Gini).


Già @oW_ ha dato una risposta piuttosto corretta alla domanda originale, ma ho pensato che fosse bello scriverla in modo più conciso e lucido per il lettore.
Emarginato il

3

In scikit-learn l'importanza della caratteristica è la diminuzione dell'impurità del nodo. La chiave è che misura l'importanza solo a livello di nodo. Quindi, tutti i nodi sono ponderati da quanti campioni raggiungono quel nodo.

Quindi, se solo pochi campioni finiscono nel nodo sinistro dopo la prima divisione, ciò potrebbe non significare che J è la caratteristica più importante perché il guadagno sul nodo sinistro potrebbe influenzare solo pochissimi campioni. Se si stampa ulteriormente il numero di campioni in ciascun nodo, è possibile ottenere un quadro migliore di ciò che sta accadendo.


2

Solo perché un nodo è più basso sull'albero non significa necessariamente che sia meno importante. L'importanza della funzione in sci-kitlearn è calcolata dal modo in cui un nodo separa le classi (indice Gini). Noterai anche nel tuo albero ritagliato che A viene diviso tre volte rispetto a J una volta e che i punteggi di entropia (una misura simile di purezza come Gini) sono leggermente più alti in nodi A rispetto a J.

Tuttavia, se potessi scegliere solo un nodo, sceglieresti J perché ciò comporterebbe le migliori previsioni. Ma se dovessi avere l'opzione di avere molti nodi che prendono diverse decisioni diverse, A sarebbe la scelta migliore.


Quindi, in parole povere, supponendo che ci siano solo 2 possibili classificazioni (chiamiamole 0 e 1), la caratteristica alla base dell'albero sarà quella che meglio divide i campioni in 2 gruppi (ovvero il miglior lavoro di suddivisione gli 1 su un lato dell'albero e gli 0 sull'altro). È preciso? Non sono ancora del tutto chiaro su quale importanza delle caratteristiche stia classificando se non è la migliore nel separare gli 0 e 1 in questo contesto
Tim Lindsey,

-2

L'importanza della variabile viene misurata dalla diminuzione dell'accuratezza del modello quando la variabile viene rimossa. Il nuovo albero decisionale creato con il nuovo modello senza la variabile potrebbe apparire molto diverso dall'albero originale. La decisione di divisione nel diagramma viene presa considerando tutte le variabili nel modello.

Quale variabile da dividere alla radice (e altri nodi) viene misurata dall'impurità. Una buona purezza (ad esempio: tutto nel ramo sinistro ha lo stesso valore target) non è una garanzia per una buona precisione. I tuoi dati potrebbero essere distorti, il tuo ramo destro ha più risposte del tuo ramo sinistro. Pertanto, non va bene solo classificare correttamente il ramo sinistro, dobbiamo anche considerare anche il ramo giusto. Pertanto, la variabile di divisione potrebbe essere o meno una variabile importante per l'accuratezza complessiva del modello.

L'importanza delle variabili è una misura migliore per la selezione delle variabili.


2
Non penso che sia così implementato in scikit-learn. Lì, l'importanza della caratteristica viene misurata come "importanza gini", ovvero la riduzione totale dell'impurità del nodo ponderata dalla proporzione di campioni che raggiungono quel nodo.
oW_

"L'importanza di una caratteristica è calcolata come riduzione totale (normalizzata) del criterio introdotto da quella caratteristica. È anche nota come importanza di Gini." - scikit-learn.org/stable/modules/generated/…
Afflatus
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.