Come possono essere utilizzati modelli di apprendimento automatico (GBM, NN ecc.) Per l'analisi della sopravvivenza?


13

So che i modelli statistici tradizionali come la regressione dei rischi proporzionali di Cox e alcuni modelli di Kaplan-Meier possono essere utilizzati per prevedere giorni prima che si verifichi il verificarsi di un evento, ad esempio un fallimento, ecc. Analisi di sopravvivenza

Domande

  1. Come può essere utilizzata la versione di regressione di modelli di machine learning come GBM, reti neurali ecc. Per prevedere giorni fino al verificarsi di un evento?
  2. Credo che usare i giorni fino al verificarsi come variabile target e semplicemente l'esecuzione di un modello di regressione non funzionerà? Perché non funziona e come può essere riparato?
  3. Possiamo convertire il problema dell'analisi di sopravvivenza in una classificazione e quindi ottenere le probabilità di sopravvivenza? Se quindi come creare la variabile di destinazione binaria?
  4. Quali sono i vantaggi e gli svantaggi dell'approccio all'apprendimento automatico rispetto alla regressione dei rischi proporzionali di Cox e ai modelli di Kaplan-Meier, ecc.?

Immagina che i dati di input di esempio siano nel formato seguente

inserisci qui la descrizione dell'immagine

Nota:

  • Il sensore esegue il ping dei dati a intervalli di 10 minuti, ma a volte i dati possono mancare a causa di problemi di rete ecc., Come rappresentato dalla riga con NA.
  • var1, var2, var3 sono i predittori, variabili esplicative.
  • failure_flag indica se la macchina non è riuscita o meno.
  • Abbiamo dati degli ultimi 6 mesi a intervalli di 10 minuti per ciascuno degli ID macchina

MODIFICARE:

La previsione dell'output previsto dovrebbe essere nel formato seguente inserisci qui la descrizione dell'immagine

Nota: voglio prevedere la probabilità di guasto per ciascuna delle macchine per i prossimi 30 giorni a livello giornaliero.


1
Penso che sarebbe di aiuto se tu potessi spiegare perché si tratta di dati time-to-event; qual è esattamente la risposta che vuoi modellare?
Cliff AB

Ho modificato e aggiunto la tabella di previsione dell'output previsto per chiarire. Fammi sapere se hai altre domande.
GeorgeOfTheRF

1
Esistono modi per convertire i dati di sopravvivenza in risultati binari in alcuni casi, ad esempio modelli di rischio a tempo discreto: statisticshorizons.com/wp-content/uploads/Allison.SM82.pdf . Alcuni metodi di apprendimento automatico, come le foreste casuali, possono modellare il tempo per i dati degli eventi, ad esempio utilizzando la statistica del registro come criterio di suddivisione.
Dsaxton,

@dsaxton Grazie. Puoi spiegare come convertire i suddetti dati di sopravvivenza in risultati binari?
GeorgeOfTheRF

Dopo aver dato un'occhiata più da vicino sembra che tu abbia già dei risultati binari con failure_flag.
Dsaxton,

Risposte:


6

Nel caso delle reti neurali, questo è un approccio promettente: WTTE-RNN - Predizione meno chiassosa .

L'essenza di questo metodo consiste nell'utilizzare una rete neurale ricorrente per prevedere i parametri di una distribuzione Weibull in ogni fase e ottimizzare la rete utilizzando una funzione di perdita che tenga conto della censura.

L'autore ha anche rilasciato la sua implementazione su Github .


2

Dai un'occhiata a questi riferimenti:

https://www.stats.ox.ac.uk/pub/bdr/NNSM.pdf

http://pcwww.liv.ac.uk/~afgt/eleuteri_lyon07.pdf

Si noti inoltre che i modelli tradizionali basati sui pericoli come i rischi proporzionali di Cox (CPH) non sono progettati per prevedere il tempo-evento, ma piuttosto per dedurre l'impatto delle variabili (correlazione) contro i) osservazioni di eventi e, quindi ii) una curva di sopravvivenza . Perché? Guarda il MLE del CPH.

Quindi, se si desidera prevedere in modo più diretto qualcosa come "giorni prima dell'evento", CPH potrebbe non essere consigliabile; altri modelli potrebbero svolgere meglio il tuo compito come indicato nei due riferimenti precedenti.


1

Come diceva @dsaxton, puoi costruire un modello temporale discreto. Lo si imposta per prevedere p (fallire in questo giorno dato sopravvissuto fino al giorno precedente). I tuoi input sono il giorno corrente (in qualsiasi rappresentazione tu voglia) ad es. Una codifica a caldo, numero intero, .. Spline ... Così come qualsiasi altra variabile indipendente che potresti desiderare

Quindi crei file di dati, per ogni campione sopravvissuto fino al tempo t-1, è morto al tempo t (0/1).

Quindi ora la probabilità di sopravvivere fino a quando T è il prodotto di p (non morire nel momento in cui t dato non è morto a t-1) per t = 1 a T. Vale a dire che fai previsioni T dal tuo modello e poi moltiplicarsi insieme.

Direi che la ragione per cui non è una tale idea prevedere direttamente il tempo al fallimento è a causa della struttura nascosta del problema. Ad esempio, cosa inserisci per le macchine che non hanno fallito. La struttura sottostante è effettivamente gli eventi indipendenti: fallimento al momento t dato non fallito fino a t-1. Ad esempio, se si assume che sia costante, la curva di sopravvivenza diventa esponenziale (vedere i modelli di pericolo)

Nota nel tuo caso puoi modellare a intervalli di 10 minuti o aggregare il problema di classificazione fino al livello del giorno.

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.