Guadagni:
- Capacità di produrre caratteristiche derivate significative con conoscenza del dominio e codificare categorie categoriali con metodi appropriati (one-hot, label, target)
- Capacità di scalare le variabili numeriche in base al tipo di modello (standardizzazione, normalizzazione) ed evitare un ridimensionamento non necessario o incompleto
- Capacità di evitare la perdita di funzionalità apprendendo tutte le trasformazioni dopo la suddivisione tra training e test e solo tramite training
C'è un vecchio detto nell'apprendimento automatico: "L'apprendimento automatico applicato è essenzialmente ingegneria delle funzionalità". Perché il successo di un modello spesso deriva dagli input che fornisci al modello, piuttosto che dall'algoritmo che scegli. L'ingegneria delle caratteristiche è l'arte di produrre segnali significativi da dati grezzi da cui il modello può imparare. L'intelligenza artificiale è una ricca fonte di idee in questa fase: quando si chiede "quali caratteristiche possono essere prodotte da questi dati", elenca decine di suggerimenti. Ma alcuni di questi suggerimenti potrebbero essere preziosi, altri potrebbero essere inutili e altri ancora potrebbero essere pericolosi (leak). È compito tuo sistemare la cosa.
Perché caratterizzare l'ingegneria
I dati grezzi raramente arrivano al modello nella sua forma migliore. Sebbene la colonna "data di nascita" da sola non abbia significato, il valore "età" da essa generato è un segnale forte. Puoi estrarre attributi come "giorno della settimana", "giorno/notte", "è un giorno festivo" dal "data e ora dell'ordine". È possibile combinare due colonne per produrre un rapporto ("rapporto debito/reddito"). In questo caso, l'ingegneria delle caratteristiche sta traducendo la conoscenza del dominio in segnale matematico; Ed è proprio per questo che è la fase che richiede più intelligenza umana.
Conversione di variabili categoriali in numeri: codifica
I modelli generalmente funzionano con numeri, non con testo. La conversione delle variabili categoriali (come città, colore, tipo di prodotto) in numeri è chiamata codifica. Tre metodi comuni:
Codifica one-hot: apre una colonna separata con un valore di 0/1 per ciascuna categoria. Per "città" si formano colonne Istanbul, Ankara, Izmir; Se un cliente proviene da Istanbul, solo quella colonna sarà 1. Ideale quando il numero di categorie è ridotto; Se ci sono troppe categorie si producono centinaia di colonne (questo si chiama "esplosione delle dimensioni").
Codifica etichetta: attribuisce un numero a ciascuna categoria (Istanbul=0, Ankara=1). È semplice, ma potrebbe accidentalmente insegnare al modello una sequenza (come Ankara > Istanbul); quindi viene utilizzato con cautela nelle categorie non ordinate.
Codifica target: sostituisce ciascuna categoria con la media della variabile target in quella categoria. È molto potente, ma la fonte di perdita più pericolosa: se si tiene conto dell'obiettivo dei dati di test, il modello vede il futuro. Dovrebbe essere calcolato solo dai dati di addestramento e con attenzione (nell'ambito della convalida incrociata).
Ridimensionamento: i numeri grandi non sovrastano il modello
Alcuni modelli (quelli basati sulla distanza, modelli lineari, reti neurali) sono sensibili alla scala delle variabili. Se il “reddito” (0-500.000) e l’”età” (0-100) rientrano nello stesso schema, il reddito potrebbe prevalere semplicemente perché è maggiore. Il ridimensionamento risolve questo problema. Due metodi comuni: standardizzazione (converte ciascun valore in "quante deviazioni standard dalla media") e normalizzazione (normalizzazione min-max - comprime i valori nell'intervallo 0-1). I modelli basati sugli alberi (alberi decisionali, foresta casuale) non sono sensibili alla scala e non richiedono il ridimensionamento.
Attenzione: i parametri di scala e codifica (media, deviazione standard, mappatura media categoria) devono essere calcolati solo dai dati di addestramento, quindi lo stesso deve essere applicato ai dati di test. Includere i dati dei test è una perdita e fa sembrare il tuo modello migliore di quanto non sia in realtà.
Il cuore delle perdite nell'ingegneria delle funzionalità
La generazione di funzionalità è il luogo in cui più spesso ha origine la fuga di dati. Due errori tipici: Perdita di tempo: produrre una funzionalità che include informazioni future (compresi i giorni successivi al giorno della previsione quando si calcola la "media degli ultimi 30 giorni"). Perdita di statistiche: calcolo di una caratteristica (media di scala, valore di codifica target) da tutti i dati prima della suddivisione tra training e test. Regola: apprendere ogni trasformazione dopo aver eseguito prima la suddivisione treno/test e solo dai dati di addestramento. Il modo più sicuro per farlo regolarmente è utilizzare la pipeline, una struttura che raccoglie tutte le trasformazioni in un'unica catena e le applica dopo la suddivisione.
Metodo
per cosa
Rischio di perdite
nota
Codifica one-hot
Variabile con poche categorie
basso
Esplode le dimensioni in più categorie
Codifica dell'etichetta
Categoria ordinata
basso
Fuori ordine insegna l'ordine sbagliato
codifica di destinazione
Multicategoria, segnale forte
molto alto
Solo dall'istruzione, nel CV
standardizzazione
Modelli lineari/distanza
medio
Il parametro dipende solo dall'istruzione
Funzionalità della finestra temporale
serie temporali
alto
Aggiungi il futuro
tre mini custodie
Caso 1 — Beni di valore. Un team di credito ha generato la funzione “rapporto debito/reddito” dalle colonne grezze “reddito mensile” e “pagamento mensile del debito”. Questa singola caratteristica derivata ha aumentato la precisione del modello dal 71% al 79%; perché era il tasso, non il reddito assoluto, a determinare realmente il rischio. Lezione: i rapporti generati dalla conoscenza del dominio sono segnali forti.
Caso 2: perdita di codifica target. Un team ha convertito il "codice postale" in un numero con la codifica target (il tasso di abbandono medio in quell'area), ma lo ha fatto partendo da tutti i dati prima di dividersi. Il modello ha dato il 94% sul set di prova, scendendo al 68% in produzione. 6 settimane di sforzi sprecati. Lezione: la codifica del target viene eseguita con attenzione, solo durante l'allenamento.
Caso 3 – Ridimensionamento dell’oblio. Un analista ha inserito le entrate (0-400.000) e l'età dei clienti (18-75) in un modello basato sulla distanza senza ridimensionamento. Il modello ha considerato quasi esclusivamente il reddito, schiacciando l’effetto età. Quando è stato aggiunto il ridimensionamento, la segmentazione è diventata significativa. Lezione: il ridimensionamento non viene trascurato nei modelli di distanza/lineari.
Quattro modelli copiabili
1) Generazione di idee per le funzionalità (l'eliminazione dipende da te):
Il tuo ruolo: assistente tecnico delle funzionalità. Le mie colonne df: birth_date, order_time (timestamp), reddito_tl, debito_tl, città, product_category. Obiettivo: "il prestito verrà rimborsato" (0/1). Suggerire 15 funzionalità che possono essere generate da queste colonne; specificare per ciascuno il rischio di perdite (basso/medio/alto). Contrassegnare chiaramente quelli che contengono informazioni future.
2) Codifica sicura (post-split):
Scrivi il codice che codifica "città" e "categoria_prodotto". IMPORTANTE: adattare la codifica solo ai dati di training, quindi trasformare i dati di test (con sklearn OneHotEncoder). Spiega come gestisci la categoria invisibile (handle_unknown) nell'istruzione.
3) Conversione senza perdite con Pipeline:
Configura sklearn Pipeline: applica StandardScaler alle colonne numeriche, OneHotEncoder alle colonne categoriali, aggiungi un classificatore alla fine. Garantire che tutte le trasformazioni vengano apprese DOPO la suddivisione formazione/test e solo dalla formazione. Spiegare il codice e perché è privo di perdite.
4) Funzione finestra temporale (controllo delle perdite):
Genera l'attributo "numero di ordini negli ultimi 30 giorni" per ciascun cliente, ma non includere MAI dati successivi al giorno della previsione. Spiegare riga per riga che il codice non guarda al futuro. Fornirò la colonna della data di riferimento.
Prompt debole / Prompt forte
Suggerimento debole:
Aggiungi buone proprietà a questi dati.
“Buono” non è definito, l’obiettivo non è chiaro, non esiste un controllo delle perdite. L'intelligenza artificiale genera funzionalità casuali, forse che perdono.
Suggerimento potente:
Il tuo ruolo: ingegnere delle funzionalità. Obiettivo: "abbandono in 30 giorni" (0/1), data di riferimento stimata: save_date. C'è una cronologia delle transazioni in df.Attività: generare 8 funzionalità, rispondere alla domanda "Ho queste informazioni al momento della previsione" per CIASCUNA. Aggiunta della data successiva alla data di riferimento nelle funzionalità della finestra temporale. Scrivere il codice in modo compatibile con la pipeline da eseguire dopo la sezione di training/test.
Qui vengono definiti fin dall'inizio l'obiettivo, il tempo di riferimento e il controllo delle perdite.
Errori comuni
- Imparare la trasformazione da tutti i dati prima della divisione. Se il parametro di ridimensionamento/codifica vede i dati del test, si verifica una perdita.
- Uso imprudente della codifica del target. È il metodo più potente ma che perde di più; solo dalla formazione, in convalida incrociata.
- Aggiunta del futuro con una funzione di finestra temporale. Se il calcolo degli "ultimi 30 giorni" viene inserito dopo il giorno della previsione, il modello vede il futuro.
- Scalatura non necessaria nel modello ad albero e scalatura incompleta nel modello lineare. Le decisioni di ridimensionamento vengono prese in base al tipo di modello.
- Aggiunta di ogni suggerimento di funzionalità dell'intelligenza artificiale senza domande. I suggerimenti possono includere funzionalità inutili e che perdono.
Suggerimento: scrivi una singola domanda per ogni caratteristica che generi: "Posso calcolare questo valore con le informazioni che ho nel momento in cui faccio la previsione?" Se la risposta non è un chiaro "sì", non utilizzare la funzione. Questa singola disciplina elimina la maggior parte delle perdite relative alle funzionalità.
In sintesi
L'ingegneria delle caratteristiche è l'arte di generare segnali significativi da dati grezzi e spesso determina il successo del modello più dell'algoritmo. Gli strumenti di base sono la codifica dei categorici (one-hot, label, target), il ridimensionamento dei numerici (standardizzazione, normalizzazione) e la produzione di caratteristiche derivate con la conoscenza del dominio. Ma questa fase è anche il cuore della falla: tutte le trasformazioni devono essere apprese dopo la suddivisione training/test e solo dai dati di training. L’intelligenza artificiale genera molte idee; È il giudizio umano che distingue ciò che è prezioso da ciò che è pericoloso.
Compito dell'applicazione
Scegli una variabile di destinazione e progetta almeno cinque funzionalità derivate dalle colonne a tua disposizione. Per ognuno di essi rispondere per iscritto alla domanda “sono disponibile al momento del pronostico” ed eliminarne almeno uno in quanto “alto rischio di fuga”. Quindi codificare le funzionalità sicure in una pipeline da implementare dopo la partizione.
lista di controllo
- [ ] Ho applicato tutte le trasformazioni dopo la suddivisione treno/test?
- [ ] Ho imparato solo i parametri di ridimensionamento/codifica durante la formazione?
- [ ] Ho risposto alla domanda "ce l'ho al momento della previsione" per ciascuna funzionalità?
- [ ] Ho prestato particolare attenzione ai metodi ad alto rischio come la codifica del target?
- [ ] Ho deciso di scalare in modo appropriato per il tipo di modello (albero/lineare)?