Il ruolo di selezione nella preparazione dei dati di apprendimento automatico

Mentre molti professionisti si concentrano sulla scalatura, codifica e selezione delle caratteristiche, l'atto apparentemente semplice di ordinare i dati può avere implicazioni profonde sia per la qualità dei dati che per le prestazioni del modello.

I dati ordinati facilitano il calcolo più veloce in molti algoritmi, riducono la memoria in testa nelle operazioni di database e semplificano il rilevamento delle anomalie. Tuttavia, la selezione non è un proiettile d'argento; deve essere applicata in modo giudiziario sulle caratteristiche specifiche dei dati e sul compito di machine learning a portata di mano. Questo articolo esplora perché la selezione conta, le sue applicazioni pratiche in diversi tipi di dati, le migliori pratiche di trading per le transazioni coinvolte.

Come la selezione migliora la qualità dei dati e le prestazioni del modello

Detezione e pulizia dei dati

Uno dei primi passi in qualsiasi flusso di lavoro di preelaborazione dei dati è la pulizia del dataset. La selezione rivela incongruenze e valori estremi che sono facilmente trascurati in dati non ordinati o casualmente ordinati. Ad esempio, la selezione di un set di dati di vendita da parte dell'analista di transazione può immediatamente esporre insolitamente alti o bassi valori che possono rappresentare errori di entrata dei dati, frodi o casi di bordo legittimi.

Quando una colonna con molti nulls è ordinata accanto a una colonna chiave, la distribuzione dei valori mancanti può diventare evidente. Ad esempio, la selezione per data in una serie di tempo potrebbe mostrare che le letture dei sensori mancanti cluster durante ore specifiche, suggerendo un guasto hardware sistematico piuttosto che perdita casuale.

Ingegneria della caratteristica da Dati ordinati

I dati ordinati aprono la porta ad un ricco insieme di tecniche di ingegneria delle caratteristiche che sarebbero impraticabili o impossibili con dati non selezionati. Le caratteristiche basate su rank sono un esempio classico. La selezione di una colonna numerica e l'assegnazione di per centoiles o quantiles, si creano nuove caratteristiche che catturano la posizione relativa. Queste caratteristiche di rango sono robuste a outliers e possono catturare relazioni non lineari che i valori grezzi potrebbero oscurare.

In una cronologia delle transazioni ordinata, è possibile calcolare una media mobile di spesa negli ultimi 30 giorni, o creare una caratteristica che misura il tempo dall'ultimo acquisto. Queste caratteristiche sono inestimabili per le serie temporali e la modellazione variabile sequenziale. Senza una corretta selezione, tali aggregazioni produrrebbero risultati errati perché l'ordine temporale sarebbe perso. Inoltre, i dati ordinati consentono di calcolare efficientemente la stabilità.

Migliorare l'efficienza dell'Algoritmo

Molti algoritmi di apprendimento automatico sfruttano i dati ordinati internamente per accelerare l'allenamento e l'inferenza. Gli alberi decisionali, per esempio, devono valutare i punti di divisione per ogni caratteristica. La selezione dei valori di funzionalità consente all'algoritmo di trovare la soglia ottimale nel tempo lineare per caratteristica piuttosto che nel tempo quadratico.

Per le reti neurali ricorrenti (RNN) le sequenze di elaborazione di lunghezza variabile, la selezione delle sequenze per lunghezza prima del batch riduce l'imbottitura e il calcolo sprecato. TensorFlow e PyTorch supportano entrambi la selezione a base di secchi per creare mini-batch bilanciati.

Ordinazione in diversi contesti di dati

Dati della serie temporale

La conservazione dell'ordine temporale è essenziale per qualsiasi modello sequenziale, da ARIMA a trasformatori. La selezione da timestamp assicura che le caratteristiche di ritardo, le statistiche di rotolamento e le librerie di tempo-based di cross-validazione producono risultati validi. Se i dati non sono ordinati cronologicamente, un modello potrebbe utilizzare le informazioni future per prevedere il passato, portando a perdite di dati e overopdice serie

Tuttavia, anche all'interno della serie temporale, la selezione può essere sfumata. Ad esempio, se si dispone di più serie (ad esempio, letture dei sensori da diversi dispositivi), la selezione globale da timestamp può interleave valori da diversi dispositivi, complicando le operazioni basate su gruppi. In tali casi, la selezione dovrebbe essere eseguita all'interno di ogni gruppo utilizzando un algoritmo stabile che preserva l'ordine relativo di record con timestamp identici.

Dati categorici

Se si tratta di una scelta di dati categorici, si può sembrare meno critico rispetto alla selezione di dati numerici o temporali, ma svolge un ruolo importante nella codifica e nella visualizzazione. Quando le categorie hanno un ordine naturale (ad esempio, i livelli di istruzione: " High school", "bachelor's", "master's", "doctorate);

La classificazione delle caratteristiche categoriche aiuta anche nell'analisi dei dati esplorativi. Un grafico a barre delle frequenze di categoria ordinate rivela rapidamente classi dominanti e code lunghe. Questa informazione guida le decisioni sul bilanciamento della classe, l'impostazione di soglia per categorie rare, o la scelta tra una o più punti e la codifica di destinazione.

Dati numerici

I dati numerici spesso subiscono la selezione per la scalatura, la binning e la normalizzazione. Ad esempio, quando si applica la scala min-max, il min e max sono calcolati su tutta la gamma ordinata. La selezione rende facile rilevare valori estremi che potrebbero falsare la scalatura. Allo stesso modo, la discretizzazione (binning) di una variabile continua in contenitori di dimensioni uguali richiede l'ordinamento dei valori per determinare i confini quantili.

I dati numerici ordinati permettono anche una gestione più robusta dei outlier attraverso tecniche come winsorizing (clipping estrema percentualeiles). Senza smistamento, trovare, ad esempio, il 1 ° e il 99 ° percentile richiederebbe più passaggi o algoritmi inefficienti.

Scegliere il giusto ordinare Algorithm

Algoritmo Complessità e Stabilità

La scelta di ordinamento algoritmo può influenzare notevolmente il tempo di preelaborazione, soprattutto su grandi set di dati. Gli algoritmi comuni includono rapido, unione e heapsort, ciascuno con diverse caratteristiche di tempo e spazio. Quicksort (O(n log n) media, O(n]2) peggior cassa) è tipicamente il più veloce nella pratica per le questioni di log in-memory arrays ed è usato da default da linguaggi di default.

La stabilità diventa importante quando si selezionano i dati con più chiavi. Ad esempio, se prima si selezionano per timestamp e poi per ID utente, una sorta stabile assicura che all'interno di ogni ID utente, i record rimangono ordinati cronologicamente. Un ordine cronologico instabile perderà tra i record con lo stesso ID utente. Nella maggior parte degli ambienti Python e R, i tipi stabili sono i default (ad esempio, ).

Gestione di grandi set di dati

Quando i dataset superano la RAM disponibile, le tecniche di smistamento esterno diventano necessarie. L'unione esterna divide i dati in blocchi che si adattano alla memoria, ordina ogni pezzo, poi li fonde utilizzando I/O su disco come Apache Hadoop e Spark implementano la selezione distribuita per i dataset su scala terabyte. Anche all'interno di una singola macchina, librerie come offrono una risoluzione dei dati di file di smistamento di memoria.

Le librerie GPU moderne (ad esempio, cuDF) possono ordinare miliardi di righe in pochi secondi, accelerando notevolmente le tubazioni preprocessing. Tuttavia, trasferire i dati tra CPU e GPU può essere un collo di bottiglia, quindi gli approcci ibridi spesso pre-scelti sulla GPU e quindi eseguire aggregazioni CPU-side.

Potenziali cadute di selezione in ML Pipelines

La selezione dell'intero set di dati prima della divisione in formazioni e set di test può consentire alle informazioni dal set di test di influenzare le caratteristiche di formazione, soprattutto quando la selezione influenza l'ordine delle righe utilizzate per la suddivisione trasversale o sequenziale. La regola del pollice è di ordinare solo dopo la divisione del treno/test, o di utilizzare un seme di bivalenza casuale che garantisce la riproducibilità.

Non tutti i benefici dell'algoritmo da dati ordinati. Ad esempio, le baie e i modelli lineari sono a diagnostica d'ordine; la selezione aggiunge la testa in eccesso senza miglioramento di precisione o velocità. Analogamente, le foreste casuali spesso effettuano scissioni di funzionalità su sottoset casuali senza sfruttare ordine ordinato, così il trucco di grandi set di formazione può perdere tempo.

Se, ad esempio, si seleziona da una variabile di destinazione inavvertitamente durante l'ingegneria delle caratteristiche, è possibile creare artefatti che sembrano predittivi ma sono in realtà a causa della selezione stessa. Questo è particolarmente pericoloso quando si calcolano statistiche di rotolamento o caratteristiche di ritardo su un obiettivo che è stato ordinato arbitrariamente.

Consigli pratici per ordinare in ML Pipelines

  • Sorza dopo la divisione del treno/test:[] Eseguire qualsiasi operazione di selezione indipendentemente su set di allenamento e test per evitare perdite.Per serie di tempo, utilizzare la divisione cronologica e ordinare da timestamp all'interno di ogni set.
  • Utilizzare i tipi stabili:[] Quando si combinano più chiavi di ordine, si affidano ad algoritmi stabili (mergesort) per preservare l'ordine secondario.
  • Libriche ottimizzate per le leggi:]] Usa [], [], o ] per la selezione in memoria; hanno implementazioni basate su C altamente ottimizzate.
  • Profilo memoria e tempo:[] Per i set di dati oltre 100 milioni di righe, considerare la selezione esterna o i quadri distribuiti.
  • Presupposti di ordine del documento:[ Assicurarsi che le tubazioni notino esplicitamente la chiave di ordine e l'ordine (ascending/descending) in modo che i consumatori a valle capiscono l'accordo di dati.
  • Test con e senza smistamento:[] Per gli algoritmi in cui la selezione è facoltativa (ad esempio, modelli a base di alberi), eseguire test A/B per vedere se la selezione migliora effettivamente la velocità o l'accuratezza.

Mastering Sorting per la preelaborazione di ML Robust

La selezione è molto più di un'operazione clericale; è un passo strategico di preelaborazione che influenza direttamente la qualità dei dati, l'ingegneria delle caratteristiche, l'efficienza degli algoritmi e, infine, le prestazioni del modello. Quando applicato correttamente, la selezione consente dati più puliti, più caratteristiche informative e formazione più veloce.

Man mano che i volumi di dati continuano ad esplodere, la selezione rimane uno strumento fondamentale nell'arsenale dello scienziato dei dati. Padroneggiare le sue sfumature, dalla selezione degli algoritmi al design delle tubazioni, separa i professionisti efficienti da coloro che lottano con scalabilità.