Come scegliere un algoritmo ML.NET

Per ogni attività ML.NET è possibile scegliere tra diversi algoritmi di training. La scelta dipende dal problema che si risolvendo, dalle caratteristiche dei dati e dalle risorse di calcolo e archiviazione disponibili. È importante notare che il training di un modello di Machine Learning è un processo iterativo. Potrebbe essere necessario provare più algoritmi per trovare quello che funziona in modo ottimale.

Gli algoritmi operano sulle caratteristiche. Le caratteristiche sono valori numerici calcolati dai dati di input. Sono input ottimali per gli algoritmi di Machine Learning. I dati di input non elaborati vengono trasformati in caratteristiche usando una o più trasformazioni di dati. Ad esempio, i dati di testo vengono trasformati in un set di conteggi di parole e conteggi di combinazioni di parole. Dopo che le caratteristiche sono state estratte da un tipo di dati non elaborati usando le trasformazioni di dati, gli elementi vengono definiti come sottoposti a estrazione delle caratteristiche. Ad esempio, testo con estrazione delle caratteristiche, dati immagine con estrazione delle caratteristiche.

Algoritmo di training = algoritmo + attività

Un algoritmo è la formula matematica che viene eseguita per produrre un modello. Algoritmi diversi producono modelli con caratteristiche diverse.

Con ML.NET è possibile applicare lo stesso algoritmo ad attività diverse. Ad esempio, Stochastic Dual Coordinate Ascent può essere usato per Classificazione binaria, Classificazione multiclasse e Regressione. La differenza sta nell'interpretazione dell'output dell'algoritmo per la corrispondenza con l'attività.

Per ogni combinazione algoritmo/attività, ML.NET include un componente che esegue l'algoritmo di training e l'interpretazione. Questi componenti sono detti algoritmi di training. Ad esempio SdcaRegressionTrainer usa l'algoritmo StochasticDualCoordinatedAscent applicato all'attività Regressione.

Algoritmi lineari

Gli algoritmi lineari producono un modello che calcola punteggi da una combinazione lineare dei dati di input e un set di pesi. I pesi sono parametri del modello definiti durante il training.

Gli algoritmi lineari funzionano in modo ottimale per le caratteristiche separabili a livello lineare.

Prima del training con un algoritmo lineare, le caratteristiche devono essere normalizzate. Ciò impedisce che una caratteristica abbia maggior influenza sul risultato rispetto alle altre.

In generale, gli algoritmi lineari sono scalabili, veloci, facili da sottoporre a training ed economici in termini di previsioni. La scalabilità è basata sul numero di caratteristiche e approssimata in base alle dimensioni del training set.

Gli algoritmi lineari eseguono più passaggi sui dati di training. Se il set di dati può essere contenuto nella memoria, l'aggiunta di un checkpoint della cache alla pipeline ML.NET prima di accodare l'algoritmo di training renderà più veloce l'esecuzione del training.

Averaged perceptron

Ottimale per la classificazione di testo.

Trainer Attività ONNX Exportable
AveragedPerceptronTrainer Classificazione binaria

Stochastic Dual Coordinated Ascent

Ottimizzazione non necessaria per prestazioni predefinite ottimali.

Trainer Attività ONNX Exportable
SdcaLogisticRegressionBinaryTrainer Classificazione binaria
SdcaNonCalibratedBinaryTrainer Classificazione binaria
SdcaMaximumEntropyMulticlassTrainer Classificazione multi-classe
SdcaNonCalibratedMulticlassTrainer Classificazione multi-classe
SdcaRegressionTrainer Regressione

L-BFGS

Da usare quando il numero di caratteristiche è elevato. Genera statistiche di training di regressione logistica, ma la sua scalabilità è inferiore a quella di AveragedPerceptronTrainer.

Trainer Attività ONNX Exportable
LbfgsLogisticRegressionBinaryTrainer Classificazione binaria
LbfgsMaximumEntropyMulticlassTrainer Classificazione multi-classe
LbfgsPoissonRegressionTrainer Regressione

Symbolic stochastic gradient descent

L'algoritmo di training di classificazione binaria lineare più veloce e accurato. Scalatura ottimale con il numero di processori.

Trainer Attività ONNX Exportable
SymbolicSgdLogisticRegressionBinaryTrainer Classificazione binaria

Online Gradient Descent

Implementa la discesa del gradiente stocastico standard (non batch), con una scelta di funzioni di perdita e un'opzione per aggiornare il vettore di peso usando la media dei vettori visti nel tempo.

Trainer Attività ONNX Exportable
OnlineGradientDescentTrainer Regressione

Algoritmi con albero delle decisioni

Gli algoritmi con albero delle decisioni creano un modello che contiene una serie di decisioni: di fatto si tratta di un diagramma di flusso che integra i valori dei dati.

Per l'uso di questo tipo di algoritmo non è necessario che le caratteristiche siano separabili a livello lineare. Inoltre non è necessario che le caratteristiche siano normalizzate, perché i singoli valori del vettore della caratteristica vengono usati in modo indipendente nel processo decisionale.

Gli algoritmi con albero delle decisioni sono in genere molto accurati.

Fatta eccezione per i modelli additivi generalizzati (GAM, Generalized Additive Models), i modelli ad albero possono risultare difficili da interpretare quando il numero di caratteristiche è molto elevato.

Gli algoritmi con albero delle decisioni richiedono più risorse e la loro scalabilità è inferiore a quella degli algoritmi lineari. Funzionano in modo ottimale nei set di dati che possono essere interamente adattabili in memoria.

Gli alberi delle decisioni con incremento sono un insieme di alberi di piccole dimensioni in cui ogni albero assegna un punteggio ai dati di input e passa il punteggio all'albero successivo per produrre un punteggio migliore, e così via. Ogni albero dell'insieme migliora il risultato del precedente.

Light gradient boosted machine

L'algoritmo di training dell'albero di classificazione binaria più veloce e accurato. Ampiamente ottimizzabile.

Trainer Attività ONNX Exportable
LightGbmBinaryTrainer Classificazione binaria
LightGbmMulticlassTrainer Classificazione multi-classe
LightGbmRegressionTrainer Regressione
LightGbmRankingTrainer Classifica No

Fast tree

Da usare per i dati immagine sottoposti a estrazione delle caratteristiche. Resiliente per dati non equilibrati. Ampiamente ottimizzabile.

Trainer Attività ONNX Exportable
FastTreeBinaryTrainer Classificazione binaria
FastTreeRegressionTrainer Regressione
FastTreeTweedieTrainer Regressione
FastTreeRankingTrainer Classifica No

Fast forest

Funziona in modo ottimale con dati non pertinenti.

Trainer Attività ONNX Exportable
FastForestBinaryTrainer Classificazione binaria
FastForestRegressionTrainer Regressione

Generalized additive model (GAM)

Ideale per scenari in cui gli algoritmi ad albero funzionano correttamente, ma la comprensibilità dei modelli è una priorità.

Trainer Attività ONNX Exportable
GamBinaryTrainer Classificazione binaria No
GamRegressionTrainer Regressione No

Matrix factorization

Fattorizzazione di matrici

Usato per il filtro collaborativo nella raccomandazione.

Trainer Attività ONNX Exportable
MatrixFactorizationTrainer Elemento consigliato No

Macchina per la fattorizzazione con riconoscimento dei campi

Ideale per dati categorici di tipo sparse, con set di dati di grandi dimensioni.

Trainer Attività ONNX Exportable
FieldAwareFactorizationMachineTrainer Classificazione binaria No

Meta algoritmi

Questi algoritmi di training creano un algoritmo di training multiclasse da un algoritmo di training binario. Usarli con AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, SymbolicSgdLogisticRegressionBinaryTrainer, LightGbmBinaryTrainer, FastTreeBinaryTrainer, FastForestBinaryTrainer, GamBinaryTrainer.

One versus all

Questo classificatore multiclasse esegue il training di un classificatore binario per ogni classe, che distingue tale classe da tutte le altre classi. È limitato in termini di scalatura dal numero di classi da categorizzare.

Trainer Attività ONNX Exportable
OneVersusAllTrainer Classificazione multi-classe

Pairwise coupling

Questo classificatore multiclasse esegue il training di un algoritmo di classificazione binaria su ogni coppia di classi. È limitato in termini di scalatura dal numero di classi, perché è necessario eseguire il training di ogni combinazione di due classi.

Trainer Attività ONNX Exportable
PairwiseCouplingTrainer Classificazione multi-classe No

K-Means

Usato per il clustering.

Trainer Attività ONNX Exportable
KMeansTrainer Clustering

Principal component analysis

Usato per il rilevamento di anomalie.

Trainer Attività ONNX Exportable
RandomizedPcaTrainer Rilevamento anomalie No

Naive Bayes

Usare questo algoritmo di classificazione multiclasse quando le caratteristiche sono indipendenti e il set di dati di training è di piccole dimensioni.

Trainer Attività ONNX Exportable
NaiveBayesMulticlassTrainer Classificazione multi-classe

Prior Trainer

Usare questo algoritmo di classificazione binaria per definire le prestazioni di altri algoritmi di training. Per essere efficienti, le metriche degli altri algoritmi di training devono essere migliori di quelle dell'algoritmo di training Prior.

Trainer Attività ONNX Exportable
PriorTrainer Classificazione binaria

Supportare le macchine a vettori

Le macchine a vettori di supporto (SVM) sono una classe estremamente popolare e ben ricercata di modelli di apprendimento supervisionato, che possono essere usate nelle attività di classificazione lineare e non lineare.

La ricerca recente si è occupata principalmente dei modi per ottimizzare questi modelli per poter passare in modo efficiente a training set più grandi.

SVM lineare

Stima una destinazione usando un modello di classificazione binaria lineare sottoposto a training sui dati con etichetta booleana. Alterna tra i passaggi di discesa del gradiente stocastico e i passaggi di proiezione.

Trainer Attività ONNX Exportable
LinearSvmTrainer Classificazione binaria

SVM profonda locale

Stima una destinazione usando un modello di classificazione binaria non lineare. Riduce il costo del tempo di stima; il costo della stima aumenta in modo logaritmico con le dimensioni del set di training, anziché linearmente, con una perdita tollerabile nell'accuratezza della classificazione.

Trainer Attività ONNX Exportable
LdSvmTrainer Classificazione binaria

Quadrati minimi ordinari

I quadrati minimi ordinari (OLS) sono una delle tecniche più comunemente usate nella regressione lineare.

Il metodo dei minimi quadrati fa riferimento alla funzione di perdita, che calcola l'errore come la somma del quadrato della distanza dal valore effettivo alla riga stimata e adatta il modello riducendo al minimo l'errore quadratico. Questo metodo presuppone una relazione lineare forte tra gli input e la variabile dipendente.

Trainer Attività ONNX Exportable
OlsTrainer Regressione