Spiegazione degli algoritmi di apprendimento automatico

L'apprendimento automatico e l'apprendimento profondo sono stati ampiamente adottati e ancora più fraintesi. In questo articolo, vorrei fare un passo indietro e spiegare sia l'apprendimento automatico che l'apprendimento profondo in termini di base, discutere alcuni degli algoritmi di apprendimento automatico più comuni e spiegare come questi algoritmi si relazionano agli altri pezzi del puzzle della creazione di modelli predittivi da dati storici.

Cosa sono gli algoritmi di apprendimento automatico?

Ricorda che l'apprendimento automatico è una classe di metodi per la creazione automatica di modelli dai dati. Gli algoritmi di apprendimento automatico sono i motori dell'apprendimento automatico, il che significa che sono gli algoritmi che trasformano un set di dati in un modello. Quale tipo di algoritmo funziona meglio (supervisionato, non supervisionato, classificazione, regressione, ecc.) Dipende dal tipo di problema che stai risolvendo, dalle risorse di calcolo disponibili e dalla natura dei dati.

Come funziona l'apprendimento automatico

Gli algoritmi di programmazione ordinari dicono al computer cosa fare in modo diretto. Ad esempio, gli algoritmi di ordinamento trasformano i dati non ordinati in dati ordinati in base ad alcuni criteri, spesso l'ordine numerico o alfabetico di uno o più campi nei dati.

Gli algoritmi di regressione lineare adattano una linea retta , o un'altra funzione lineare nei suoi parametri come un polinomio, ai dati numerici, tipicamente eseguendo inversioni di matrice per ridurre al minimo l'errore quadrato tra la linea e i dati. L'errore quadrato viene utilizzato come metrica perché non ti interessa se la linea di regressione è sopra o sotto i punti dati; ti interessa solo la distanza tra la linea e i punti.

Gli algoritmi di regressione non lineare, che adattano curve che non sono lineari nei loro parametri ai dati , sono un po 'più complicati, perché, a differenza dei problemi di regressione lineare, non possono essere risolti con un metodo deterministico. Invece, gli algoritmi di regressione non lineare implementano una sorta di processo iterativo di minimizzazione, spesso qualche variazione sul metodo di discesa più ripida.    

La discesa più ripida fondamentalmente calcola l'errore al quadrato e il suo gradiente ai valori del parametro corrente, seleziona una dimensione del passo (ovvero il tasso di apprendimento), segue la direzione del gradiente "giù per la collina", quindi ricalcola l'errore al quadrato e il suo gradiente al nuovo valori dei parametri. Alla fine, con un po 'di fortuna, il processo converge. Le varianti in discesa più ripida cercano di migliorare le proprietà di convergenza.

Gli algoritmi di apprendimento automatico sono ancora meno diretti della regressione non lineare, in parte perché l'apprendimento automatico elimina il vincolo di adattarsi a una funzione matematica specifica, come un polinomio. Esistono due categorie principali di problemi che vengono spesso risolti dall'apprendimento automatico: regressione e classificazione. La regressione riguarda i dati numerici (ad esempio, qual è il reddito probabile per qualcuno con un determinato indirizzo e professione?) E la classificazione è per i dati non numerici (ad esempio, il richiedente sarà inadempiente su questo prestito?).

I problemi di previsione (ad esempio, quale sarà il prezzo di apertura per le azioni Microsoft domani?) Sono un sottoinsieme di problemi di regressione per i dati di serie temporali. I problemi di classificazione sono talvolta suddivisi in problemi binari (sì o no) e multi-categoria (animali, vegetali o minerali).

Apprendimento supervisionato vs. apprendimento non supervisionato

Indipendentemente da queste divisioni, esistono altri due tipi di algoritmi di apprendimento automatico: supervisionati e non supervisionati. Nell'apprendimento supervisionato , fornisci un set di dati di addestramento con risposte, come una serie di immagini di animali insieme ai nomi degli animali. L'obiettivo di quell'addestramento sarebbe un modello in grado di identificare correttamente un'immagine (di un tipo di animale incluso nel set di addestramento) che non aveva visto in precedenza.

Nell'apprendimento senza supervisione , l'algoritmo passa attraverso i dati stessi e cerca di ottenere risultati significativi. Il risultato potrebbe essere, ad esempio, un insieme di cluster di punti dati che potrebbero essere correlati all'interno di ciascun cluster. Funziona meglio quando i cluster non si sovrappongono.

L'addestramento e la valutazione trasformano gli algoritmi di apprendimento supervisionato in modelli ottimizzando i loro parametri per trovare l'insieme di valori che meglio corrisponde alla verità di base dei dati. Gli algoritmi spesso si basano su varianti della discesa più ripida per i loro ottimizzatori, ad esempio la discesa del gradiente stocastico (SGD), che è essenzialmente la discesa più ripida eseguita più volte da punti di partenza randomizzati. I miglioramenti comuni su SGD aggiungono fattori che correggono la direzione del gradiente in base allo slancio o regolano il tasso di apprendimento in base al progresso da un passaggio attraverso i dati (chiamato epoca) al successivo.

Pulizia dei dati per l'apprendimento automatico

Non esistono dati puliti in natura. Per essere utili per l'apprendimento automatico, i dati devono essere filtrati in modo aggressivo. Ad esempio, ti consigliamo di:

  1. Esamina i dati ed escludi tutte le colonne con molti dati mancanti.
  2. Esamina nuovamente i dati e scegli le colonne che desideri utilizzare per la previsione. (Questo è qualcosa che potresti voler variare durante l'iterazione.)
  3. Escludi tutte le righe che presentano ancora dati mancanti nelle colonne rimanenti.
  4. Correggi errori di battitura evidenti e unisci risposte equivalenti. Ad esempio, Stati Uniti, Stati Uniti, Stati Uniti e America dovrebbero essere uniti in un'unica categoria.
  5. Escludi righe con dati fuori intervallo. Ad esempio, se stai analizzando i viaggi in taxi all'interno di New York City, ti consigliamo di filtrare le righe con latitudini e longitudini di partenza o di arrivo che si trovano al di fuori del riquadro di delimitazione dell'area metropolitana.

C'è molto di più che puoi fare, ma dipenderà dai dati raccolti. Questo può essere noioso, ma se imposti un passaggio di pulizia dei dati nella pipeline di machine learning, puoi modificarlo e ripeterlo a piacimento.

Codifica e normalizzazione dei dati per l'apprendimento automatico

Per utilizzare i dati categoriali per la classificazione della macchina, è necessario codificare le etichette di testo in un'altra forma. Esistono due codifiche comuni.

Uno è la codifica dell'etichetta , il che significa che ogni valore dell'etichetta di testo viene sostituito con un numero. L'altra è una codifica a caldo , il che significa che ogni valore dell'etichetta di testo viene trasformato in una colonna con un valore binario (1 o 0). La maggior parte dei framework di machine learning ha funzioni che eseguono la conversione per te. In generale, è preferibile la codifica one-hot, poiché la codifica dell'etichetta a volte può confondere l'algoritmo di apprendimento automatico facendogli credere che la colonna codificata sia ordinata.

Per utilizzare i dati numerici per la regressione della macchina, di solito è necessario normalizzare i dati. Altrimenti, i numeri con intervalli maggiori possono tendere a dominare la distanza euclidea tra i vettori delle caratteristiche , i loro effetti possono essere amplificati a scapito degli altri campi e l'ottimizzazione della discesa più ripida può avere difficoltà a convergere. Esistono diversi modi per normalizzare e standardizzare i dati per il ML, inclusa la normalizzazione min-max, la normalizzazione media, la standardizzazione e il ridimensionamento alla lunghezza dell'unità. Questo processo è spesso chiamato ridimensionamento delle funzionalità .

Cosa sono le funzionalità di machine learning?

Dato che ho menzionato i vettori di caratteristiche nella sezione precedente, dovrei spiegare cosa sono. Prima di tutto, una caratteristica è una proprietà misurabile individuale o caratteristica di un fenomeno osservato. Il concetto di "caratteristica" è correlato a quello di variabile esplicativa, che viene utilizzato in tecniche statistiche come la regressione lineare. I vettori di caratteristiche combinano tutte le caratteristiche di una singola riga in un vettore numerico.

Parte dell'arte della scelta delle caratteristiche consiste nello scegliere un insieme minimo di variabili indipendenti che spieghino il problema. Se due variabili sono altamente correlate, è necessario combinarle in una singola funzione o eliminarne una. A volte le persone eseguono l'analisi delle componenti principali per convertire le variabili correlate in un insieme di variabili linearmente non correlate.

Alcune delle trasformazioni che le persone usano per costruire nuove caratteristiche o ridurre la dimensionalità dei vettori di caratteristiche sono semplici. Ad esempio, sottrarre Year of Birthda Year of Deathe si costruisce Age at Death, che è una variabile indipendente principale per tutta la vita e l'analisi della mortalità. In altri casi, la costruzione delle caratteristiche potrebbe non essere così ovvia.

Algoritmi comuni di apprendimento automatico

Esistono dozzine di algoritmi di apprendimento automatico, di complessità variabile dalla regressione lineare e logistica a reti neurali profonde e insiemi (combinazioni di altri modelli). Tuttavia, alcuni degli algoritmi più comuni includono:

  • Regressione lineare, nota anche come regressione dei minimi quadrati (per dati numerici)
  • Regressione logistica (per la classificazione binaria)
  • Analisi discriminante lineare (per classificazione multi-categoria)
  • Alberi decisionali (sia per la classificazione che per la regressione)
  • Naïve Bayes (sia per la classificazione che per la regressione)
  • K-Nearest Neighbors, aka KNN (sia per la classificazione che per la regressione)
  • Apprendimento della quantizzazione vettoriale, alias LVQ (sia per la classificazione che per la regressione)
  • Supporta macchine vettoriali, note anche come SVM (per la classificazione binaria)
  • Foreste casuali, un tipo di algoritmo di insieme di "insaccamento" (sia per la classificazione che per la regressione)
  • I metodi di potenziamento, inclusi AdaBoost e XGBoost, sono algoritmi di insieme che creano una serie di modelli in cui ogni nuovo modello cerca di correggere gli errori del modello precedente (sia per la classificazione che per la regressione)

Dove sono le reti neurali e le reti neurali profonde di cui sentiamo tanto parlare? Tendono ad essere ad alta intensità di calcolo al punto da richiedere GPU o altro hardware specializzato, quindi dovresti usarli solo per problemi specializzati, come la classificazione delle immagini e il riconoscimento vocale, che non sono adatti ad algoritmi più semplici. Nota che "profondo" significa che ci sono molti strati nascosti nella rete neurale.

Per ulteriori informazioni sulle reti neurali e sul deep learning, vedere "Che cosa significa veramente il deep learning".

Iperparametri per algoritmi di apprendimento automatico

Gli algoritmi di apprendimento automatico eseguono il training sui dati per trovare il miglior set di pesi per ogni variabile indipendente che influisce sul valore o sulla classe previsti. Gli algoritmi stessi hanno variabili, chiamate iperparametri. Sono chiamati iperparametri, al contrario dei parametri, perché controllano il funzionamento dell'algoritmo anziché i pesi da determinare.

L'iperparametro più importante è spesso la velocità di apprendimento, che determina la dimensione del passo utilizzata quando si trova la successiva serie di pesi da provare durante l'ottimizzazione. Se il tasso di apprendimento è troppo alto, la discesa del gradiente può convergere rapidamente su un plateau o su un punto non ottimale. Se il tasso di apprendimento è troppo basso, la discesa del gradiente potrebbe bloccarsi e non convergere mai completamente.

Molti altri iperparametri comuni dipendono dagli algoritmi utilizzati. La maggior parte degli algoritmi ha parametri di arresto, come il numero massimo di epoche, o il tempo massimo per l'esecuzione o il miglioramento minimo da un'epoca all'altra. Algoritmi specifici hanno iperparametri che controllano la forma della loro ricerca. Ad esempio, un classificatore di foresta casuale ha iperparametri per i campioni minimi per foglia, la profondità massima, i campioni minimi in una divisione, la frazione di peso minima per una foglia e circa 8 altri.

Ottimizzazione degli iperparametri

Diverse piattaforme di machine learning di produzione ora offrono la regolazione automatica degli iperparametri. In sostanza, si dice al sistema quali iperparametri si desidera variare, e possibilmente quale metrica si desidera ottimizzare, e il sistema spazza quegli iperparametri su tutte le corse consentite. (L'ottimizzazione degli iperparametri di Google Cloud estrae la metrica appropriata dal modello TensorFlow, quindi non è necessario specificarla.)

Esistono tre algoritmi di ricerca per gli iperparametri di scansione: ottimizzazione bayesiana, ricerca griglia e ricerca casuale. L'ottimizzazione bayesiana tende ad essere la più efficiente.

Penseresti che la regolazione del maggior numero possibile di iperparametri ti darebbe la risposta migliore. Tuttavia, a meno che tu non stia utilizzando il tuo hardware personale, potrebbe essere molto costoso. Ci sono comunque rendimenti decrescenti. Con l'esperienza scoprirai quali iperparametri contano di più per i tuoi dati e per la scelta degli algoritmi.

Machine learning automatizzato

Parlando di scelta degli algoritmi, c'è solo un modo per sapere quale algoritmo o insieme di algoritmi ti darà il miglior modello per i tuoi dati, ed è provarli tutti. Se provi anche tutte le possibili normalizzazioni e scelte di funzionalità, stai affrontando un'esplosione combinatoria.

Provare tutto è poco pratico da fare manualmente, quindi ovviamente i fornitori di strumenti di apprendimento automatico si sono impegnati molto per rilasciare i sistemi AutoML. I migliori combinano l'ingegneria delle funzionalità con sweep su algoritmi e normalizzazioni. L'ottimizzazione degli iperparametri del modello o dei modelli migliori viene spesso lasciata per dopo. Tuttavia, la progettazione delle funzionalità è un problema difficile da automatizzare e non tutti i sistemi AutoML lo gestiscono.

In sintesi, gli algoritmi di apprendimento automatico sono solo un pezzo del puzzle di apprendimento automatico. Oltre alla selezione dell'algoritmo (manuale o automatico), dovrai occuparti degli ottimizzatori, della pulizia dei dati, della selezione delle funzionalità, della normalizzazione delle funzionalità e (facoltativamente) dell'ottimizzazione degli iperparametri.

Dopo aver gestito tutto ciò e creato un modello che funzioni per i tuoi dati, sarà il momento di distribuire il modello e quindi aggiornarlo al mutare delle condizioni. La gestione dei modelli di apprendimento automatico in produzione è, tuttavia, un'altra scatola di worm.