Guadagni:
- Capacità di impostare una pipeline di dati (raccolta, convalida, pulizia, trasformazione, suddivisione, controllo delle versioni) e di posizionare la convalida dello schema all'inizio della pipeline
- Capacità di prendere decisioni sui valori mancanti e sull'etichettatura in base al significato e alla divisione del campo per prevenire la perdita di dati (di gruppo e temporale)
- Capacità di creare un database riproducibile fissando la versione dei dati e il seme di casualità
Il vero potere di ogni sistema di machine learning risiede nei dati, non nel modello. Gli ingegneri esperti sanno: “garbage in, garbage out”: anche il modello più avanzato alimentato con dati errati produrrà risultati pessimi. In questa unità, stabiliamo la pipeline di dati (pipeline di dati: la catena di passaggi che rendono i dati grezzi pronti per l'addestramento del modello) end-to-end e impariamo in quale fase di questa linea possiamo utilizzare in sicurezza l'intelligenza artificiale.
Passaggi della linea dati
Una linea dati normalmente passa attraverso queste fermate:
- Raccolta (acquisizione): estrazione di dati da origini (database, API, file di registro, flussi di eventi).
- Convalida: verifica se i dati sono conformi allo schema, ai tipi e agli intervalli previsti.
- Pulizia: gestione di valori mancanti, record duplicati, valori anomali e incoerenze.
- Trasformazione: trasformazione dei dati grezzi in attributi, ad esempio la conversione di una variabile categoriale in un numero, la produzione di un "giorno della settimana" da una data.
- Suddivisione: separazione in set di formazione, convalida e test.
- Versioning: registrazione di quale modello è stato addestrato con quali dati.
L'intelligenza artificiale risparmia tempo generando bozze di codice e idee, soprattutto nei passaggi 2, 3 e 4. Ma decisioni come quale record scartare, quale valore mancante riempire e come, appartengono all'ingegnere che conosce i dati; perché una pulizia impropria può iniettare un pregiudizio nascosto nel modello.
Verifica dei dati: difesa anticipata della linea
Gli errori più costosi non iniziano nella produzione, ma quando viene saltata la fase di verifica. La convalida dello schema controlla automaticamente se ciascun batch di dati in entrata è conforme alla struttura prevista. Ad esempio, la colonna dell'età è compresa tra 0 e 120, il campo e-mail è vuoto, il numero di colonne è cambiato?
Suggerimento: inserisci la verifica all'inizio della riga. Prima vengono rilevati i dati corrotti, più economico sarà ripararli. Un errore di schema rilevato in produzione è molte volte più costoso di uno rilevato nella fase di training.
Scrivi uno schema di convalida con pandera (o Great Expectations) per il seguente schema di dati. Colonne e regole:- user_id: intero, non può essere nullo, univoco- age: intero, non può essere compreso tra 0 e 120- signup_date: data, non può essere nel futuro- country: categorico, dall'insieme {TR, DE, US, UK}- saldo: decimale, non può essere negativo Produci un messaggio di errore significativo per ogni violazione della regola. Mostra il test con una linea spezzata di esempio alla fine del codice.
Pulizia: è l'uomo che decide
I valori mancanti sono una realtà di ogni set di dati. Modi per gestire:
- Cancellazione: eliminazione di una riga/colonna con un tasso di mancanze molto elevato. Ma esiste il rischio di perdita di informazioni e di parzialità.
- Imputazione: imputazione con media, mediana, valore più frequente o previsione basata su modello.
- Flag: memorizzazione delle informazioni "mancanti" in una colonna flag separata: a volte la mancanza stessa è il segnale.
Quale è corretto dipende dal problema. In un set di dati medici, le informazioni sul "valore del sangue non misurato" dovrebbero essere conservate anziché cancellate; Perché anche il rifiuto del medico di effettuare le misurazioni è un segnale. L'intelligenza artificiale può darti opzioni e codice; Scegli tu quale si adatta alla realtà del campo.
Prompt debole / Prompt forte
Prompt debole: "Inserisci i valori mancanti".
Suggerimento forte: "Ci sono valori mancanti nelle seguenti colonne: reddito (12% mancante, distribuzione distorta a destra), last_login (30% mancante). Suggerisci di riempire reddito con mediana, ma spiega perché mediana e non media. Per last_login, presupponi che il valore mancante potrebbe essere significativo (l'utente potrebbe non aver mai effettuato l'accesso); considera la possibilità di generare un flag never_logged_in invece dell'eliminazione. Annota la distorsione che entrambi gli approcci aggiungerebbero al modello."
Differenza: un messaggio forte fornisce informazioni sulla distribuzione e significato dell'area; l’intelligenza artificiale produce supporto decisionale invece di riempimento meccanico.
Etichettatura: la qualità si misura
Nell'apprendimento supervisionato (apprendimento in cui vengono forniti esempi con le risposte corrette), ciò che il modello apprende sono le etichette (etichette: la risposta corretta per ogni esempio). La qualità dell’etichetta stabilisce un limite: se le persone etichettano in modo incoerente, il modello impara in modo incoerente.
L'accordo tra annotatori misura la velocità con cui persone diverse attribuiscono la stessa etichetta allo stesso campione; È espresso da un coefficiente come il Kappa di Cohen. Una bassa compliance indica che il compito non è chiaro o che le istruzioni sono deboli.
L'intelligenza artificiale aiuta nell'etichettatura in due modi: (1) redigendo la linea guida per l'annotazione, (2) pre-etichettando e facendo in modo che sia l'essere umano a correggerla. Ma la pre-etichettatura con LLM presenta una trappola: l’errore sistematico del modello può diffondersi nell’intero set di etichette. Ecco perché gli esseri umani controllano sempre alcune delle etichette LLM.
Attenzione: non considerare le etichette prodotte da LLM come "verità fondamentale". Controllare un campione con un essere umano e misurare l'adattamento LLM-umano. Se la conformità è bassa, la pre-etichettatura causerà più danni che benefici.
Partizione dei dati: evitare perdite
L'errore più pericoloso quando si suddividono i dati in addestramento/convalida/test è la perdita di dati: la fusione delle informazioni di test nell'addestramento. Esempi:
- I record dello stesso utente rientrano sia nella formazione che nel test (perdita di gruppo).
- Utilizzare il futuro nella formazione e il passato nei test in serie temporali (perdita temporale).
- Calcolo dei parametri di ridimensionamento (normalizzazione) da tutti i dati e quindi divisione.
La suddivisione temporale è essenziale per i problemi che coinvolgono il tempo: allenarsi con il passato, sperimentare nel futuro. La suddivisione casuale offre un vantaggio "futuro" che non si verificherà mai nella produzione e gonfia i parametri.
Versioning e riproducibilità dei dati
"Con quali dati abbiamo addestrato questo modello?" Essere in grado di rispondere alla domanda mesi dopo è il segno distintivo di una seria ingegneria ML. Il controllo delle versioni dei dati archivia ogni snapshot dei dati con un ID (hash o tag di versione). Strumenti come dati di versione DVC (Data Version Control) come codice.
Per riprodurre il risultato di un modello, è necessario correggere tre cose: la versione dei dati, la versione del codice e il seme casuale. Non è possibile dire "ho ottenuto lo stesso risultato" senza questo trio. Approfondiremo la Riproducibilità nell'unità 11; ma sistemare il seed nella pipeline dei dati inizia da qui.
tre mini custodie
Caso 1: convalida dello schema giornaliero salvato. Quando un team ha convertito il campo dei prezzi del sistema a monte da centesimi a lire, tutti i prezzi sono scesi di 100 volte. La convalida dello schema ha rifiutato il batch in quanto "prezzo fuori intervallo" e il modello non è stato addestrato con dati danneggiati. Senza verifica l’errore si noterebbe solo in produzione, con previsioni errate.
Caso 2 - Bias di riempimento errato. In un modello di credito, i valori di reddito mancanti venivano riempiti con la media. Ma i redditi mancanti riguardavano prevalentemente il gruppo a basso reddito; la media ha "arricchito" artificialmente questo gruppo e il modello ha offerto loro un limite ingiustamente alto. Risolto il problema con mediana + flag di mancanza.
Caso 3 – Perdita temporale. Un modello di previsione della domanda sembrava ottimo sul set di test (precisione del 95%) ma si è bloccato in produzione. Perché: a causa della suddivisione casuale, il modello aveva visto il futuro. Il passaggio al binning temporale ha ridotto la precisione del test al 78%, ma si trattava di prestazioni reali e l'ha mantenuta in produzione.
Modelli copiabili
Suddividere il seguente set di dati in tre set: training/validation/testing.Constraint: questa è una serie temporale; Usa la suddivisione TEMPORALE (allenati nel passato, prova nel futuro). Prevenire perdite di batch: avere lo stesso `customer_id` solo in un cluster. Calcola i parametri di ridimensionamento SOLO dal set di addestramento, quindi applicali a tutti. Stampa quante righe sono rimaste nel codice ad ogni passaggio e aggiungi un'asserzione che controlli l'assenza di perdite.
Scrivi una bozza di linee guida per l'annotazione per questa attività di etichettatura. Compito: [ad es. Etichetta la recensione del cliente come positiva/negativa/neutra] Chiarisci i casi limite: sarcasmo, emozioni contrastanti, come etichettare la recensione non correlata al prodotto? Fornisci 5 esempi e 3 casi limite difficili che aumenteranno la coerenza tra i tagger.
Produrre un elenco di controllo di riproducibilità per questa pipeline di dati: - Come dovrebbe essere corretta la versione dei dati? - Quali semi di casualità dovrebbero essere impostati e dove? - Quali metadati (hash dei dati, conteggio delle righe, data) dovrebbero essere registrati? La mia codebase: [linguaggio/libreria]
Controlla questo codice di pulizia per eventuali perdite di dati. In particolare guarda questo: i parametri di ridimensionamento/codifica sono calcolati PRIMA della suddivisione? Le statistiche vengono calcolate da tutti i dati o solo dalla formazione? Codice: [codice]
Tabella decisionale: strategia del valore mancante
Stato
Approccio consigliato
Perché
Distribuzione numerica e asimmetrica
riempire con la mediana
La media è influenzata da valori anomali
Numerico, simmetrico
riempire con la media
Protegge le informazioni
La carenza può essere significativa
Colonna bandiera + riempimento
La mancanza è un segnale
Tasso mancante > 60%
Valuta/ignora la colonna
Il rumore è troppo
Categoriale
Categoria "Sconosciuto".
Non crea maggioranza artificiale
Errori comuni
- Saltare la verifica. Senza il controllo dello schema, i dati danneggiati si insinuano silenziosamente.
- Ridimensionamento prima della divisione. Diffonde le statistiche dei test nell’istruzione.
- Utilizzo della suddivisione casuale nelle serie temporali. Produce metriche elevate false.
- Fidarsi ciecamente delle etichette LLM. L’errore sistematico si diffonde in tutti i dati.
- Non salvare la versione dei dati. Non è possibile riprodurre il risultato.
- Riempimento meccanico con media. Ignora il significato del campo e aggiunge pregiudizi.
In sintesi
La pipeline di dati è il fondamento del sistema ML e merita uno sforzo maggiore rispetto al modello. Metti la verifica in alto; prendere decisioni di pulizia ed etichettatura con la conoscenza del dominio; prevenire perdite (di gruppo e temporali) nel compartimento; correggere la versione dei dati e il seed. L'intelligenza artificiale genera codice e idee su questa linea, ma spetta a te decidere quali dati elaborare e come, perché ogni decisione sbagliata qui passa nel modello come un difetto nascosto.
Compito dell'applicazione
Scrivi uno schema di convalida (pandera/Great Expectations) sul tuo set di dati e aggiungi deliberatamente una riga errata e mostra che è stata rilevata. Quindi suddividi i dati temporalmente o in batch, calcola i parametri di ridimensionamento solo dall'addestramento e verifica che non vi siano perdite con un'asserzione. Scrivere la versione dei dati e il conteggio delle righe in un file di metadati.
lista di controllo
- [ ] La convalida dello schema viene eseguita nella parte superiore della riga.
- [ ] Ho scelto la strategia dei valori mancanti in base al significato del campo, non l'ho compilato meccanicamente.
- [ ] Ho misurato la qualità dell'etichetta (conformità); Ho controllato i tag LLM.
- [ ] Ho impedito la perdita di gruppo e temporale nel riquadro.
- [ ] Ridimensionamento/codifica calcolati solo dal set di training.
- [ ] Versione dei dati, numero di file e seme registrato.