Tecniche per la gestione di dati incompleti / mancanti


12

La mia domanda è rivolta alle tecniche per gestire dati incompleti durante la classificazione / l'addestramento / l'adattamento del modello.

Ad esempio, in un set di dati con poche centinaia di righe, ogni riga con cinque dimensioni e un'etichetta di classe come ultimo elemento, la maggior parte dei punti di dati sarà simile a questa:

[0.74, 0.39, 0.14, 0.33, 0.34, 0]

Alcuni potrebbero assomigliare a questo:

[0.21, 0.68,?, 0.82, 0.58, 1]

Quindi sono questi tipi di punti dati che sono al centro di questa domanda.

La mia ragione iniziale per porre questa domanda era un problema che avevo di fronte; tuttavia, prima di pubblicare la mia domanda, ho pensato che sarebbe stato più utile se l'avessi riformulato in modo che le risposte sarebbero state utili a una parte più ampia della Comunità.

Come semplice euristica, dividiamo queste tecniche di gestione dei dati in base a quando durante il flusso di elaborazione vengono utilizzate - prima dell'input nel classificatore o durante (ovvero, la tecnica è all'interno del classificatore).

Il miglior esempio a cui riesco a pensare per quest'ultimo è la tecnica intelligente di "ramificazione a tre vie" utilizzata negli alberi decisionali.

Senza dubbio, la prima categoria è molto più ampia. Le tecniche di cui sono a conoscenza rientrano in uno dei gruppi seguenti.

Durante la revisione recente delle mie note personali sulla "gestione dei dati mancanti" ho notato che avevo un elenco piuttosto impressionante di tecniche. Conservo semplicemente queste note per la massima tranquillità e nel caso in cui un collega junior mi chieda come gestire i dati mancanti. In pratica, in realtà non ne uso nessuno, tranne l'ultimo.

  1. Imputation : un'ampia rubrica di una serie di tecniche che il cui comune denominatore (credo) è che i dati mancanti sono forniti direttamente dallo stesso set di dati: sostituzione anziché stima / previsione.

  2. Ricostruzione : stimare i punti dati mancanti usando una rete autoassociativa (solo una rete neurale in cui le dimensioni dei livelli di input e output sono uguali - in altre parole, l'output ha la stessa dimensione dell'input); l'idea qui è quella di addestrare questa rete su dati completi, quindi alimentarla con schemi incompleti e leggere i valori mancanti dai nodi di output.

  3. Bootstrap : (non è necessario alcun riepilogo, non dovrei pensare, dato che è usato altrove nell'analisi statistica).

  4. Negazione : rimuovi silenziosamente i punti dati con elementi mancanti / corrotti dal tuo set di allenamento e fai finta che non siano mai esistiti.


2
Esiste anche un approccio a "modello ridotto" in cui si allena un classificatore per ogni modello di valori mancanti riscontrati durante il test. IE, per fare una previsione per x dove manca l'attributo, rimuovi l'attributo da tutte le istanze dei dati di allenamento e allenati su quello. jmlr.csail.mit.edu/papers/v8/saar-tsechansky07a.html
Yaroslav Bulatov

Credo che la tua definizione di imputazione sia errata nel contesto moderno. L'imputazione ora implica la modellazione dei dati mancanti in base ad altre variabili dal set di dati. Il metodo di imputazione attualmente preferito è l'Imputazione multipla, che genera più alternative per ciascun valore mancante (basato sul modello), elabora ciascun set di dati completato alternativo e quindi combina le risposte che riflettono la variabilità tra i risultati. (Ai "vecchi tempi", le persone facevano cose come sostituire il valore di un record simile, o la media, ecc., Ma non ora.)
Wayne,

@Wayne saresti così gentile da indicarmi un articolo che descrive queste moderntecniche? Grazie
Enzo,

Il pacchetto R miceha un bel documento introduttivo su JSS: jstatsoft.org/article/view/v045i03 . (Dovresti trovare l'introduzione utile, anche se non usi R.) E il pacchetto R Ameliaha una bella vignetta inclusa nel pacchetto. Questi due pacchetti differiscono nei loro dettagli, ma entrambi usano l'imputazione multipla.
Wayne,

Risposte:


3

Ho dato questa risposta a un'altra domanda , ma potrebbe applicarsi anche qui.

"C'è un'area di ricerca ragionevolmente nuova chiamata Matrix Completion , che probabilmente fa quello che vuoi. Un'introduzione davvero piacevole è stata data in questa conferenza di Emmanuel Candes"

In sostanza, se il tuo set di dati ha un rango basso (o approssimativamente un rango basso), cioè hai 100 righe, ma la matrice effettiva ha un rango piccolo, ad esempio 10 (o solo 10 grandi valori singolari), puoi usare Matrix Completion per riempire i mancanti dati.


2

Potrei essere un po 'poco ortodosso qui, ma che diamine. Nota: questa linea di pensiero deriva dalla mia filosofia di classificazione, che è che la uso quando il mio scopo è esattamente sulla pura previsione - non sulla spiegazione, sulla coerenza concettuale, ecc. Pertanto, ciò che sto dicendo qui contraddice il modo in cui approccerei a costruire un modello di regressione.

Differenti approcci di classificazione variano nella loro capacità di gestire i dati mancanti e, a seconda di alcuni altri fattori ^, potrei semplicemente provare # 5: usare un classificatore che non si strozzerà con quei NA. Parte della decisione di seguire questa strada potrebbe anche includere la possibilità di pensare a una probabilità simile di una percentuale simile di NA nei dati futuri a cui verrà applicato il modello. Se le NA per determinate variabili saranno uguali per il corso, potrebbe essere logico limitarsi a seguirle (ad esempio, non creare un modello predittivo che presupponga più dati informativi di quelli che effettivamente avrai, o tu ' Ti prenderai in giro su quanto sarà davvero predittivo). In effetti, se non sono convinto che le NA mancino casualmente, sarei propenso a ricodificare una nuova variabile (o un nuovo livello se "

Se avessi una buona ragione per usare un classificatore che non prendesse molto bene i dati mancanti, il mio approccio sarebbe il n. 1 (imputazione multipla), cercando di trovare un modello di classificazione che si comportasse in modo simile nei set di dati imputati.

^ Inclusi: quanta mancanza hai nei tuoi predittori, se ci sono schemi sistematici (se ce ne sono, varrebbe la pena dare un'occhiata più da vicino e pensare attraverso le implicazioni per la tua analisi) e quanti dati devi lavorare con .


1

Se hai una ragionevole idea del processo di generazione dei dati responsabile dei dati in questione, puoi utilizzare le idee bayesiane per stimare i dati mancanti. Con l'approccio bayesiano si suppone semplicemente che i dati mancanti siano anche variabili casuali e costruiscono il posteriore per i dati mancanti in base ai dati osservati. I mezzi posteriori verrebbero quindi usati come sostituti dei dati mancanti.

L'uso dei modelli bayesiani può essere qualificato come imputazione in un senso ampio del termine, ma ho pensato di menzionarlo poiché non figurava nell'elenco.

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.