Rappresentazione: pulizia dei dati

I meli producono una miscela di grandi frutti e caos velenoso. Eppure le mele nei supermercati di fascia alta mostrano frutta al 100% perfetta. Tra un frutteto e un negozio di alimentari, si passa molto tempo a rimuovere le mele cattive o a gettare un po' di cera su quelle recuperabili. Come ingegnere ML, dedicherai un'enorme quantità del tuo tempo a eliminare esempi cattivi e pulire quelli recuperabili. Anche poche "mele pessime" possono rovinare un grande set di dati.

Valori delle caratteristiche di scalabilità

Scalare significa convertire i valori delle caratteristiche in virgola mobile dal loro intervallo naturale (ad esempio, da 100 a 900) in un intervallo standard (ad esempio, da 0 a 1 o da -1 a +1). Se un insieme di funzionalità è costituito da una sola, la scalabilità offre pochi o nessun vantaggio pratico. Se, tuttavia, un insieme di caratteristiche è costituito da più funzionalità, la scalabilità delle caratteristiche offre i seguenti vantaggi:

  • Aiuta la discesa del gradiente convergere più rapidamente.
  • Consente di evitare il "trap NAN", in cui un numero nel modello diventa NaN (ad esempio quando un valore supera il limite di precisione in virgola mobile durante l'addestramento e, a causa delle operazioni matematiche, anche tutti gli altri numeri nel modello diventano NaN.
  • Consente al modello di apprendere le ponderazioni appropriate per ogni caratteristica. Senza scalabilità, il modello presta troppa attenzione alle caratteristiche che hanno un intervallo più ampio.

Non è necessario attribuire a ogni caratteristica a virgola mobile esattamente la stessa scala. Non accadrà nulla di terribile se la Caratteristica A viene scalata da -1 a +1 e la Caratteristica B da -3 a +3. Tuttavia, il modello reagirà male se la caratteristica B viene scalata da 5000 a 100.000.

Gestire i valori anomali estremi

Il seguente diagramma rappresenta una funzionalità denominata roomsPerPerson del set di dati sulle abitazioni della California. Il valore di roomsPerPerson è stato calcolato dividendo il numero totale di stanze per un'area per la popolazione dell'area. La trama mostra che nella stragrande maggioranza delle aree della California ci sono una o due camere a persona. Ma guarda lungo l'asse X.

Un diagramma di roomPerPerson in cui quasi tutti i valori sono raggruppati tra 0 e 4, ma c'è una verrrrry long tail che arriva fino a 55 camere per persona

Figura 4. Una coda dannata.

Come potremmo ridurre al minimo l'influenza di queste anomalie estreme? Un modo sarebbe prendere il log di ogni valore:

Un grafico di log(roomsPerPerson) in cui il 99% dei valori si concentra tra circa 0,4 e 1,8, ma c'è ancora una coda allungata che va a 4,2 circa.

Figura 5. Il ridimensionamento logaritmico rimane invariato.

La scalabilità dei log funziona leggermente meglio, ma c'è ancora una notevole coda di valori outlier. Scegliamo un altro approccio. E se semplicemente limitiamo o rimuoviamo il valore massimo di roomsPerPerson a un valore arbitrario, ad esempio 4,0?

Un grafico di camerePerPerson in cui tutti i valori sono compresi tra -0,3 e 4,0. La trama è a forma di campana, ma c'è una collina anomala a 4,0

Figura 6. Tagliare i valori delle funzionalità a 4,0

Ritagliare il valore della caratteristica a 4,0 non significa che ignoriamo tutti i valori superiori a 4,0. Piuttosto, tutti i valori superiori a 4,0 diventano 4,0. Questo spiega la differenza di livello di 4,0. Nonostante la collina, l'insieme di funzionalità in scala è ora più utile dei dati originali.

Binning

Il seguente diagramma mostra la prevalenza relativa di abitazioni a diverse latitudini della California. Notate il clustering: Los Angeles si trova alla latitudine 34 circa, mentre San Francisco si trova all'incirca alla latitudine 38.

Un appezzamento di case per latitudine. La trama è altamente irregolare, contenente doldrum intorno alla latitudine 36 ed enormi picchi intorno alle latitudini 34 e 38.

Figura 7. Case per latitudine.

Nel set di dati, latitude è un valore con virgola mobile. Tuttavia, non ha senso rappresentare latitude come una caratteristica in virgola mobile nel nostro modello. Questo perché non esiste una relazione lineare tra i valori di latitudine e alloggio. Ad esempio, le case al latitudine 35 non sono \(\frac{35}{34}\) più costose (o meno costose) delle case alla latitudine 34. Eppure, le singole latitudini probabilmente sono un buon fattore predittivo dei valori delle abitazioni.

Per rendere la latitudine un utile predittore, dividiamo le latitudini in "bin", come suggerito dalla figura seguente:

Un appezzamento di case per latitudine. Il diagramma è suddiviso in

Figura 8. Selezione dei valori.

Anziché avere una caratteristica in virgola mobile, ora abbiamo 11 caratteristiche booleane distinte (LatitudeBin1, LatitudeBin2, ..., LatitudeBin11). Avere 11 caratteristiche distinte è piuttosto poco elegante, quindi uniamole in un unico vettore di 11 elementi. In questo modo potremo rappresentare la latitudine 37.4 come segue:

[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]

Grazie alla funzione di binning, il nostro modello è ora in grado di apprendere pesi completamente diversi per ogni latitudine.

Eseguire lo scrubbing

Finora abbiamo dato per scontato che tutti i dati utilizzati per l'addestramento e i test fossero affidabili. Nella vita reale, molti esempi nei set di dati sono inaffidabili a causa di uno o più dei seguenti motivi:

  • Valori omessi. Ad esempio, una persona ha dimenticato di inserire un valore per l'età di una casa.
  • Esempi duplicati. Ad esempio, un server ha caricato per errore gli stessi log due volte.
  • Etichette errate. Ad esempio, una persona ha etichettato erroneamente l'immagine di una quercia come un acero.
  • Valori errati delle funzionalità. Ad esempio, qualcuno ha digitato una cifra in più o un termometro è stato lasciato al sole.

Una volta rilevati, in genere "correggi" gli esempi errati rimuovendoli dal set di dati. Per rilevare valori omessi o esempi duplicati, puoi scrivere un programma semplice. Rilevare etichette o valori non validi delle caratteristiche può essere molto complicato.

Oltre a rilevare singoli esempi errati, devi rilevare anche i dati non validi nel complesso. Gli istogrammi sono un ottimo meccanismo per visualizzare i dati in forma aggregata. Inoltre, può essere utile ottenere statistiche come quelle riportate di seguito:

  • Valore massimo e minimo
  • Media e mediana
  • Deviazione standard

Valuta la possibilità di generare elenchi dei valori più comuni per le funzionalità discrete. Ad esempio, il numero di esempi con country:uk corrisponda al numero previsto. language:jp deve essere davvero la lingua più comune nel tuo set di dati?

Conosci i tuoi dati

Segui queste regole:

  • Tieni a mente l'aspetto dei tuoi dati a tuo avviso.
  • Verifica che i dati soddisfino queste aspettative (o che tu sia in grado di spiegarne il motivo).
  • Verifica che i dati di addestramento coincidano con altre origini (ad esempio, le dashboard).

Tratta i tuoi dati con la cura di qualsiasi codice mission critical. Un ML efficace si basa su buoni dati.

Informazioni aggiuntive

Regole del machine learning, ML Fase II: Progettazione delle funzionalità