Eseguire il training di un modello di Machine Learning

Completato

Il training di un modello di Machine Learning prevede l'adattamento di un algoritmo di Machine Learning ai dati di training per determinare una funzione sufficientemente accurata che può essere applicata alle relative funzionalità e calcolare le etichette corrispondenti. Questo può sembrare un'idea concettualmente semplice ma l’effettivo processo di training di un modello che produce stime accurate sui nuovi dati, non solo i dati con cui è stato eseguito il training, può essere complesso e comporta un approccio iterativo di training e valutazione dei modelli ripetuto, usando più algoritmi e parametri.

Dati di training e convalida

Un approccio comune quando si esegue il training di un modello di Machine Learning consiste nel suddividere in modo casuale i dati in subset di training e convalida. È quindi possibile usare il set di dati di training per adattare un algoritmo, eseguire il training di un modello e quindi testare le prestazioni del modello con i dati di convalida conservati. Ciò consente di garantire che il modello generalizzi bene, in altre parole, che generi stime accurate per il training su cui non è stato eseguito il training.

Nota

I modelli che forniscono previsioni accurate sui dati su cui sono stati sottoposti a training e previsioni inaccurate con i nuovi dati, vengono descritti come overfitted ai dati di training.

In genere, è consigliabile eseguire il training del modello con circa il 70% dei dati e conservare circa il 30% per la convalida.

Algoritmi di apprendimento automatico

Esistono molti algoritmi di Machine Learning, raggruppati in tipi di algoritmi diversi in base al tipo di problema di Machine Learning che è necessario risolvere. La maggior parte dei framework di Machine Learning include più algoritmi per la regressione e la classificazione e algoritmi per problemi di Machine Learning non supervisionati, come il clustering.

Dopo aver identificato il tipo di problema da risolvere, è possibile scegliere tra più algoritmi di tale tipo. All'interno di ogni tipo possono essere disponibili più algoritmi tra cui scegliere, spesso in base a diversi tipi di operazioni matematiche. Ad esempio, all'interno del set di algoritmi per la classificazione, sono disponibili algoritmi del tipo seguente:

  • Algoritmi di regressione logistica che applicano in modo iterativo funzioni logistiche per calcolare un valore compreso tra 0 e 1 che rappresenta la probabilità per ogni classe possibile e ottimizzano i coefficienti della funzione in base alle differenze tra la classe stimata e il valore effettivo dell'etichetta nota.
  • Funzioni basate su albero che definiscono un albero delle decisioni in cui viene considerata una singola funzionalità; e in base al relativo valore, viene considerata un'altra funzionalità e così via, fino a quando non viene determinata un'etichetta di classe appropriata.
  • Algoritmi con apprendimento d’insieme che combinano più tecniche per trovare la funzione predittiva complessiva ottimale.

L'algoritmo "migliore" dipende dai dati e in genere richiede un procedimento basato su tentativi ed errori iterativo per la determinazione.

Iperparametri

I parametri a un algoritmo di Machine Learning sono le funzionalità ed etichette dei dati su cui è stato eseguito il training. Inoltre, la maggior parte degli algoritmi di Machine Learning fornisce iperparametri che è possibile usare per influenzare il funzionamento dell'algoritmo. Gli iperparametri consentono di controllare elementi come il livello di casualità che si vuole consentire nel modello, in modo che generalizzi correttamente ma produca stime sufficientemente accurate, il numero di iterazioni eseguite per trovare un modello ottimale, consentendo di evitare l'overfitting e ottimizzare il tempo di training, il numero di rami considerati in un modello ad albero e altri fattori specifici dell'algoritmo.

Adattamento di un modello

Per eseguire effettivamente il training di un modello, è necessario adattare l'algoritmo ai dati. La sintassi e i formati di dati specifici usati per eseguire questa operazione possono variare tra i framework di Machine Learning, ma il principio è sempre lo stesso. Per il Machine Learning supervisionato, è possibile adattare l'algoritmo alle funzionalità in base alle etichette note. Per il Machine Learning non supervisionato, fornire i tentativi di funzionalità e algoritmo per separarli in cluster discreti.

L'esempio seguente illustra il codice usato per avviare il training di un modello di regressione logistica usando il framework Spark MLlib. I dati di training vengono forniti come un dataframe in cui le etichette si trovano in una colonna di valori interi e le caratteristiche corrispondenti vengono rappresentate come un singolo vettore (matrice) di valori. In questo esempio sono stati specificati anche due iperparametri (maxIter e regParam).

from pyspark.ml.classification import LogisticRegression

lr = LogisticRegression(labelCol="label", featuresCol="features", maxIter=10, regParam=0.3)
model = lr.fit(training_df)