C'è un modo per spiegare una previsione da un modello di foresta casuale?


11

Supponiamo di avere un modello di classificazione predittivo basato su una foresta casuale (usando il pacchetto randomForest in R). Vorrei impostarlo in modo tale che gli utenti finali possano specificare un elemento per cui generare una previsione e genererà una probabilità di classificazione. Finora nessun problema.

Ma sarebbe utile / interessante essere in grado di produrre qualcosa di simile a un grafico di importanza variabile, ma per l'oggetto specifico previsto, non per il set di addestramento. Qualcosa di simile a:

Si prevede che l'articolo X sia un cane (73% probabile)
Perché:
Gambe = 4
respiro =
pelo cattivo =
cibo corto = cattivo

Ottieni il punto. Esiste un modo standard, o almeno giustificabile, per estrarre queste informazioni da una foresta casuale addestrata? In tal caso, qualcuno ha un codice che lo farà per il pacchetto randomForest?


Qualche complessità ... Potresti immaginare di contare il numero di volte in cui la variabile Legs faceva parte del percorso decisionale. Ma lo faresti solo per gli alberi che predissero la risposta della maggioranza, o tutti loro? O la differenza?
Harlan,

E cambiare tutti i mpredittori uno per uno e cercare di vedere come la foresta prevede diversamente sembra un po 'costoso. Deve esserci un modo migliore.
Harlan

il mio primo pensiero è stato quello di chiedermi in che modo ciò che si desidera fare differisce dall'importanza variabile dei dati di allenamento? Stai cercando di dire che, visti gli altri valori come erano, qual è stata la sensibilità della previsione su gambe = 4 contro gambe = 2 o gambe = 0? Hai esaminato la funzione di trama parziale nel pacchetto randomforest?
B_Miner

L'importanza variabile viene generalmente definita in base all'intero set di formazione (o alla popolazione presunta o qualcosa del genere). Ma quello che voglio è l'importanza variabile per un singolo elemento previsto. Immagina un caso in cui la foresta è composta da alberi decisionali molto sbilenco. L'istanza di test 1 potrebbe essere spiegata da 1 o pochissimi nodi decisionali, mentre l'istanza di test 2 potrebbe essere spiegata da una serie molto più ampia di nodi decisionali. Voglio una versione interpretabile dall'uomo molto semplice, come una serie di decisioni classificate, le prime 5 delle quali posso fornire. Per un singolo albero decisionale, li avrei appena letti.
Harlan

Risposte:


3

La prima idea è solo quella di imitare la strategia knock-out dall'importanza variabile e testare solo come miscelare ciascun attributo degenererà la fiducia della foresta nella classificazione degli oggetti (su OOB e ovviamente con alcune ripetizioni). Ciò richiede una certa codifica, ma è certamente realizzabile.

Tuttavia, ritengo che sia solo una cattiva idea - il risultato sarà probabilmente variabile come l'inferno (senza stabilizzare l'impatto della media sugli oggetti), rumoroso (per gli oggetti non così sicuri gli attributi senza senso potrebbero avere un grande impatto) e difficile da interpret (due o più regole di cooperazione degli attributi probabilmente comporteranno impatti casuali di ciascun attributo che contribuisce).

Per non lasciarti con una risposta negativa, preferirei piuttosto guardare la matrice di prossimità e i possibili archetipi che può rivelare - questo sembra molto più stabile e diretto.


Le regole di cooperazione / predittori correlati indicano una critica eccellente. Per far funzionare tutto ciò, potrebbe essere necessario addestrare la RF su una sorta di insieme pre-ridotto di variabili o incorporare una sorta di strategia di penalizzazione per indurre la RF a concentrarsi su un sottoinsieme di predittori.
Harlan

0

Proverei con il framework lime .

Funziona con molti modelli (inclusa la foresta casuale). Può essere utilizzato per l'interpretazione locale (ovvero per spiegare una singola previsione) o per l'interpretazione globale (ovvero per spiegare un intero modello).

Citando dall'astratto

In questo lavoro, proponiamo LIME, una nuova tecnica di spiegazione che spiega le previsioni di qualsiasi classificatore in modo interpretabile e fedele, imparando un modello interpretabile localmente attorno alla previsione. Proponiamo anche un metodo per spiegare i modelli presentando previsioni individuali rappresentative e le loro spiegazioni in modo non ridondante, inquadrando l'attività come un problema di ottimizzazione sottomodulare.

Ha pacchetti sia per R che per Python e molti esempi se lo cerchi su Google.

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.