Valori di Shapley: spiegare le probabilità previste individualiTi è mai capitato di prevedere chi annullerà i propri servizi con la tua azienda? O quali pazienti interromperanno la terapia? O forse quali persone saranno i primi ad adottare il tuo nuovo prodotto? Potresti rispondere a queste domande aziendali con lo stesso metodo, preparando attentamente i dati e costruendo modelli diversi per confrontare e scegliere il migliore in base a criteri statistici specifici. Un gioco da ragazzi, vero? Forse.
Ma cosa succede se è necessario individuare il principale fattore che contribuisce a una previsione per a separare persona? Alcuni algoritmi di modellazione non rispondono facilmente a questa domanda. I modelli di regressione tradizionali sono ottimi per rispondere a questo tipo di domande perché esiste un’equazione con coefficienti per ciascuna stima dei parametri. Che dire degli algoritmi basati su alberi o di modelli ancora più complicati come le reti neurali? Spiegare una previsione individuale è più complesso e spesso difficile da spiegare. E anche se in molti casi uno di questi algoritmi più complessi è più affidabile per prevedere un risultato, spesso le parti interessate annullano il tuo duro lavoro.
E se potessi ottenere il meglio da entrambi i mondi? Il modello più performante E un modo per spiegare facilmente le probabilità individuali previste ai tuoi stakeholder in modo che il tuo lavoro abbia maggiori possibilità di essere utilizzato come strumento aziendale. Scopri i valori di Shapley: una nuova funzionalità di JMP 17.
Shapley Values fornisce la soluzione che tutti stavamo cercando per risolvere questo tipo di situazione. Questi valori quantificano il contributo di ciascun fattore nel modello fino al livello di riga. Utilizzando la previsione media come base, ogni riga di dati può essere suddivisa in una somma di probabilità per fattore. Ciò significa che si può dire che Sean ha una probabilità del 79% di interrompere la terapia e, rispetto al paziente medio, la ragione principale della sua probabile interruzione è la sua età.
Perché è un grosso problema? Senza i valori di Shapley, potremmo parlare più in generale dei fattori determinanti per un risultato nella popolazione di interesse, ma il confronto tra individui con caratteristiche simili e la comprensione del motivo per cui la previsione differisce tra loro non è così semplice. Negli algoritmi basati sugli alberi, la formula di previsione viene creata in base alle singole foglie o alberi. E siamo onesti, possono diventare piuttosto confusi. Shapley Values risolve questo problema suddividendo la previsione in contributi individuali per ciascun fattore, che esamina l'intero modello anziché foglia per foglia, albero per albero o nodo per nodo.

Come puoi iniziare a esplorare questa nuova funzionalità? È semplice. Aggiungi il Profiler ai risultati del tuo modello e seleziona l'opzione Salva valori Shapley. Ciò salverà le singole colonne nella tabella dati per ciascuna combinazione fattore/livello di risposta.

Pertanto, la prossima volta che i tuoi stakeholder ti chiederanno se puoi individuare quali pazienti hanno maggiori probabilità di interrompere un farmaco sulla base di un fattore che può essere influenzato dalle azioni del farmacista o da una tattica di marketing, puoi essere sicuro di poter dire sì, qualunque cosa accada. tipo di modello che stai creando.

Cosa succede se hai bisogno di individuare il principale fattore che contribuisce a una previsione per a separare persona? Alcuni algoritmi di modellazione non rispondono facilmente a questa domanda. Alcuni metodi possono. Inserisci i valori Shapley.
Modellazione predittiva e machine learningRe: Valori di Shapley: spiegare le probabilità previste individualiQuesta è un'ottima opzione e mi piace che sia stata resa disponibile per molti modelli (nelle versioni precedenti, solo il componente aggiuntivo XGBoost aveva la capacità di creare valori SHAP).
Tuttavia, l’opzione in questo momento è molto lenta. L'ho provato anche con set di dati più piccoli e spesso JMP non risponde. Suggerisco di concentrarsi sulla parallelizzazione ottimizzando il codice che gira dietro le quinte per renderlo più veloce, in questo momento con velocità così basse è più probabile che il software vada in crash.
Re: Valori di Shapley: spiegare le probabilità previste individuali@KristenBradford Fatto meravigliosamente, grazie per aver condiviso questo esempio pratico!
Re: Valori di Shapley: spiegare le probabilità previste individualiGrazie Kristen per la condivisione.
BR.
Filippo
Re: Valori di Shapley: spiegare le probabilità previste individuali@jpol Certamente! Questo esempio è stato realizzato con dati simulati/campione per illustrare la funzionalità in modo chiaro e conciso. La riga 734 nella tabella dati allegata corrisponde a Sean nei miei screenshot. Per favore fatemi sapere se avete altre domande su questa funzione. È davvero una delle aggiunte recenti più interessanti al software (secondo me!).
Cordiali saluti,
Kristen
Re: Valori di Shapley: spiegare le probabilità previste individualiGrazie Kristen per questo articolo sui valori di Shapley.
Potresti pubblicare la tabella dati utilizzata qui per eseguire lo stesso esempio sul mio laptop?
Grazie,
Filippo
Re: Valori di Shapley: spiegare le probabilità previste individuali@dmmdiego Grazie per il tuo feedback sulla performance. Ti dispiacerebbe condividerlo con il supporto tecnico JMP (inviare un'e-mail a support@jmp.com ) e fornire un esempio in cui le prestazioni sono lente o non rispondono? Ciò ci spingerà a impegnarci nello sviluppo in modo da poterlo migliorare in modo tangibile nelle versioni future. Nella tua email, copia questo post e menziona che abbiamo avuto qualche dialogo a riguardo qui.
Saluti,
@PatrickGiuliano (supporto tecnico JMP)
Titolo: Valori di Shapley: spiegare le probabilità previste individualiQuesto esempio può fornire direttamente il risultato dell'analisi finale utilizzando il modello dell'albero decisionale?
Grazie!
Titolo: Valori Shapley: spiegazione delle probabilità previste individualiHo trovato i passaggi dell'azione risultanti nell'immagine.
Ma cosa succederebbe se fosse possibile farlo direttamente con JSL?
Grazie Esperti! 