Set di dati che comprendono le migliori pratiche


13

Sono uno studente master CS nel data mining. Il mio supervisore una volta mi disse che prima di eseguire qualsiasi classificatore o fare qualsiasi cosa con un set di dati, devo comprendere appieno i dati e assicurarmi che siano puliti e corretti.

Le mie domande:

  • Quali sono le migliori pratiche per comprendere un set di dati (alta dimensione con attributi numerici e nominali)?

  • Pratiche per assicurarsi che il set di dati sia pulito?

  • Pratiche per assicurarsi che il set di dati non abbia valori errati o giù di lì?

Risposte:


8

Ci sono cose di base che puoi fare con qualsiasi set di dati:

  1. Convalida valori (tolleranza lunghezza stringa, tipo di dati, maschere di formattazione, presenza campo richiesta, ecc.)
  2. Correttezza dell'intervallo (i dati apparentemente corretti rientrano negli intervalli di valori previsti)
  3. Elaborazione preliminare (Se provo ad analizzare questi dati, posso eseguire le basi senza incorrere in errori)
  4. Rapporti preliminari (eseguire un rapporto su un set di dati e assicurarsi che superi un test di integrità)
  5. Definire null vs. empty vs. zero vs. False per ogni data colonna di dati
  6. Identificazione di dati fuori posto (valori numerici drammaticamente diversi dagli altri valori in un set di dati, valori di stringa che potrebbero apparire errati, ecc.)
  7. Eliminazione o correzione di dati ovviamente errati

Comprendere i dati per identificare gli errori è un gioco con la palla completamente diverso ed è molto importante.

Ad esempio, puoi avere una regola che dice che un numero seriale deve essere presente in un determinato set di dati e che il numero seriale deve essere alfanumerico con una lunghezza massima della stringa di 255 e una lunghezza minima della stringa di 5.

Guardando i dati, potresti trovare un particolare numero di serie che indica che "PLEASE ENTER SERIAL" è perfettamente valido, ma sbagliato.

È un po 'ovvio, ma supponiamo che tu stia elaborando i dati di borsa e tu avessi una fascia di prezzo per 1000 azioni che era sotto un dollaro. Molte persone non saprebbero che un prezzo delle azioni così basso non è valido su alcuni mercati e perfettamente valido su altri. Hai bisogno di conoscenza dei tuoi dati per capire se ciò che vedi è problematico o meno.

Nel mondo reale, non sempre hai il lusso di comprendere intimamente i tuoi dati.

Il modo in cui evito i problemi è facendo leva sulle persone intorno a me. Per piccoli insiemi di dati, posso chiedere a qualcuno di rivedere i dati nella loro interezza. Per quelli di grandi dimensioni, è più appropriato estrarre una serie di campioni casuali e chiedere a qualcuno di effettuare un controllo di integrità sui dati.

Inoltre, è fondamentale mettere in discussione la fonte dei dati e quanto bene si può fidare di quella fonte di dati. Spesso ho più fonti di dati in conflitto e creiamo regole per determinare la "fonte di verità". A volte un set di dati ha grandi dati in un dato aspetto, ma altri set di dati sono più forti in altre aree.

I dati inseriti manualmente sono di solito ciò di cui sono più scettico, ma in alcuni casi sono più forti di qualsiasi cosa possa essere acquisita tramite l'automazione.


5

Mi piace che @Kallestad risponda molto, ma vorrei aggiungere un meta-step: assicurati di capire come sono stati raccolti i dati e quali tipi di vincoli ci sono. Penso che sia molto comune pensare che non ci siano passaggi non ovvi quando i dati sono stati raccolti, ma non è così: il più delle volte, qualche processo o indivudale ha fatto qualcosa con i dati, e questi passaggi possono e vogliono influenza la forma dei dati.

Due esempi: recentemente ho avuto uno studio in cui i dati sono stati raccolti da vari trattori in tutto il mondo. Non ero al briefing, quindi per me era opaco. Sfortunatamente, le misurazioni sono andate fuori per alcune parti della Francia: alla gente piaceva tutto il ghiaccio, ma ci aspettavamo una distribuzione casuale. Non c'era una ragione ovvia per questa uniformità, quindi ho iniziato a cacciare gli errori. Quando ho interrogato gli appaltatori, uno aveva frainteso il briefing e aveva selezionato solo gli amanti del gelato dal suo database.

Il secondo errore è stato più impegnativo: quando ho fatto alcune analisi geografiche, ho scoperto che molte persone avevano schemi di movimento estremamente ampi, il che suggeriva che molti di loro viaggiassero da Monaco ad Amburgo in pochi minuti. Quando ho parlato con ppeople a monte, hanno trovato un sottile bug nel loro software di aggregazione dei dati, che prima non era stato notato.

conclusioni:

  • Non dare per scontato che i tuoi dati siano stati raccolti da processi / esseri umani perfetti.
  • Cerca di capire i limiti dei tuoi fornitori di dati.
  • Guarda i singoli modelli / valori e prova a determinare se sono logici (facile per movimento / dati geografici)

4

Di solito seguo un approccio in due fasi

  1. calcola statistiche riassuntive univariate (variabili per variabili) come media, intervallo, varianza, numero mancante, cardinalità, ecc. per ogni variabile e cerca le stranezze (ad es. intervallo non plausibile dato il significato della variabile). Traccia istogrammi per quelle variabili dispari.

  2. dividere i dati in sottoinsiemi gestibili (scegliere una variabile significativa e dividere i dati in base ad essa, ad esempio tutti gli esempi positivi e tutti i negativi) ed esplorarli visivamente (ad esempio con ggobi ). Soprattutto utilizzare strumenti come la spazzolatura e i grafici a dispersione per capire come le variabili sono collegate insieme.

E quando inizi a costruire modelli, assicurati di tracciare i residui, cercando errori estremi che potrebbero essere dovuti a un valore anomalo, oppure osserva la matrice di confusione e assicurati che sia bilanciata. Usa la validazione incrociata di k-fold per ottimizzare i tuoi modelli e osserva la varianza dell'errore di addestramento per ogni piega, se una piega si comporta molto peggio delle altre, può contenere valori anomali.


4

Di seguito puoi trovare una copia della mia risposta a una domanda correlata (tuttavia, incentrata sull'aspetto della pulizia dei dati) qui su Data Science StackExchange ( /datascience//a/722/2452 ), fornita nella sua interezza per comodità dei lettori. Credo che risponda anche parzialmente alla tua domanda e spero che sia utile. Mentre la risposta è focalizzata Rsull'ecosistema, pacchetti e / o librerie simili possono essere trovati per altri ambienti di analisi dei dati . Inoltre, mentre i due documenti citati sulla preparazione dei dati contengono anche esempi in R, questi articoli presentano un flusso di lavoro generale (quadro) e un ambiente di analisi dei dati delle migliori pratiche applicabili a qualsiasi .

R contiene alcune normali funzioni per la manipolazione dei dati, che possono essere utilizzati per la pulizia dei dati, nella sua base di pacchetto ( gsub, transformecc), così come i vari pacchetti di terze parti, come stringr , rimodellare , reshape2 e plyr . Esempi e migliori pratiche d'uso di questi pacchetti e delle loro funzioni sono descritti nel seguente documento: http://vita.had.co.nz/papers/tidy-data.pdf .

Inoltre, offre alcuni pacchetti R specificamente focalizzati sulla pulizia dei dati e la trasformazione:

Un approccio completo e coerente alla pulizia dei dati in R, inclusi esempi e uso di editruli e pacchetti deducibili , nonché una descrizione del flusso di lavoro ( quadro ) della pulizia dei dati in R, è presentato nel seguente documento, che consiglio vivamente: http : //cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf .



1

Aggiungerò una cosa: se possibile, eseguirò un controllo di ragionevolezza confrontando i tuoi dati con qualche altra fonte. Sembra che ogni volta che non riesco a farlo, vengo bruciato :(

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.