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.
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.
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.
Ottimale per la classificazione di testo.
Trainer | Attività | ONNX Exportable |
---|---|---|
AveragedPerceptronTrainer | Classificazione binaria | Sì |
Ottimizzazione non necessaria per prestazioni predefinite ottimali.
Trainer | Attività | ONNX Exportable |
---|---|---|
SdcaLogisticRegressionBinaryTrainer | Classificazione binaria | Sì |
SdcaNonCalibratedBinaryTrainer | Classificazione binaria | Sì |
SdcaMaximumEntropyMulticlassTrainer | Classificazione multi-classe | Sì |
SdcaNonCalibratedMulticlassTrainer | Classificazione multi-classe | Sì |
SdcaRegressionTrainer | Regressione | Sì |
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 | Sì |
LbfgsMaximumEntropyMulticlassTrainer | Classificazione multi-classe | Sì |
LbfgsPoissonRegressionTrainer | Regressione | Sì |
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 | Sì |
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 | Sì |
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.
L'algoritmo di training dell'albero di classificazione binaria più veloce e accurato. Ampiamente ottimizzabile.
Trainer | Attività | ONNX Exportable |
---|---|---|
LightGbmBinaryTrainer | Classificazione binaria | Sì |
LightGbmMulticlassTrainer | Classificazione multi-classe | Sì |
LightGbmRegressionTrainer | Regressione | Sì |
LightGbmRankingTrainer | Classifica | No |
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 | Sì |
FastTreeRegressionTrainer | Regressione | Sì |
FastTreeTweedieTrainer | Regressione | Sì |
FastTreeRankingTrainer | Classifica | No |
Funziona in modo ottimale con dati non pertinenti.
Trainer | Attività | ONNX Exportable |
---|---|---|
FastForestBinaryTrainer | Classificazione binaria | Sì |
FastForestRegressionTrainer | Regressione | Sì |
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 |
Usato per il filtro collaborativo nella raccomandazione.
Trainer | Attività | ONNX Exportable |
---|---|---|
MatrixFactorizationTrainer | Elemento consigliato | No |
Ideale per dati categorici di tipo sparse, con set di dati di grandi dimensioni.
Trainer | Attività | ONNX Exportable |
---|---|---|
FieldAwareFactorizationMachineTrainer | Classificazione binaria | No |
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.
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 | Sì |
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 |
Usato per il clustering.
Trainer | Attività | ONNX Exportable |
---|---|---|
KMeansTrainer | Clustering | Sì |
Usato per il rilevamento di anomalie.
Trainer | Attività | ONNX Exportable |
---|---|---|
RandomizedPcaTrainer | Rilevamento anomalie | No |
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 | Sì |
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 | Sì |
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.
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 | Sì |
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 | Sì |
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 | Sì |
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: