Attività di apprendimento automatico in ML.NET
Un'attività di apprendimento automatico è il tipo di stima o inferenza effettuata, in base al problema o alla domanda che viene posta e ai dati disponibili. Ad esempio, l'attività di classificazione assegna i dati alle categorie e i dati dei gruppi di attività di clustering in base alla somiglianza.
Le attività di apprendimento automatico si basano su modelli nei dati anziché programmati in modo esplicito.
Questo articolo descrive le diverse attività di apprendimento automatico tra cui è possibile scegliere in ML.NET e alcuni casi d'uso comuni.
Dopo aver deciso quale attività è appropriata per il proprio scenario, è necessario scegliere l'algoritmo migliore per il training del modello. Gli algoritmi disponibili sono elencati nella sezione per ogni attività.
Classificazione binaria
Un'attività di apprendimento automatico con supervisione che viene usata per stabilire a quale di due classi (categorie) appartiene un'istanza di dati. L'input di un algoritmo di classificazione è un set di esempi con etichette, in cui ogni etichetta è un numero intero 0 o 1. L'output di un algoritmo di classificazione binaria è un classificatore, che può essere usato per stimare la classe di nuove istanze senza etichette. Alcuni esempi di scenari di classificazione binaria sono i seguenti:
- Comprensione del sentiment dei commenti di Twitter come "positivi" o "negativi".
- Diagnosi per stabilire se un paziente ha o meno una determinata malattia.
- Decisione di contrassegnare o meno un messaggio di posta elettronica come "posta indesiderata".
- Determinare se una foto contiene o meno un particolare elemento, ad esempio un cane o un frutto.
Per altre informazioni, vedere l'articolo relativo alla classificazione binaria su Wikipedia.
Algoritmi di training di classificazione binaria
È possibile eseguire il training di un modello di classificazione binaria usando gli algoritmi seguenti:
- AveragedPerceptronTrainer
- SdcaLogisticRegressionBinaryTrainer
- SdcaNonCalibratedBinaryTrainer
- SymbolicSgdLogisticRegressionBinaryTrainer
- LbfgsLogisticRegressionBinaryTrainer
- LightGbmBinaryTrainer
- FastTreeBinaryTrainer
- FastForestBinaryTrainer
- GamBinaryTrainer
- FieldAwareFactorizationMachineTrainer
- PriorTrainer
- LinearSvmTrainer
Input e output di classificazione binaria
Per ottenere risultati ottimali con la classificazione binaria, i dati di training devono essere bilanciati, vale a dire avere un numero uguale di dati di training positivi e negativi. I valori mancanti devono essere gestiti prima del training.
I dati della colonna dell'etichetta di input devono essere Boolean. I dati della colonna delle funzionalità di input devono essere un vettore a dimensione fissa di Single.
Questi trainer generano le colonne seguenti:
Nome colonna di output | Tipo colonna | Descrizione |
---|---|---|
Score |
Single | Il punteggio non elaborato calcolato dal modello |
PredictedLabel |
Boolean | L'etichetta stimata, in base al segno del punteggio. Un punteggio negativo esegue il mapping a false e un punteggio negativo esegue il mapping a true . |
Classificazione multi-classe
Un'attività di apprendimento automatico con supervisione che viene usata per stimare la classe (categoria) di un'istanza di dati. L'input di un algoritmo di classificazione è un set di esempi con etichette. In genere ogni etichetta è inizialmente costituita da testo. Viene quindi elaborata da TermTransform, che la converte nel tipo Key (numerico). L'output di un algoritmo di classificazione è un classificatore, che può essere usato per stimare la classe di nuove istanze senza etichette. Alcuni esempi di scenari di classificazione multiclasse sono i seguenti:
- Categorizzare i voli come "in anticipo", "in orario" o "in ritardo".
- Classificare recensioni di film come "positive", "neutrali" o "negative".
- Classificare recensioni di hotel in base a "posizione", "prezzo", "pulizia" e così via.
Per altre informazioni, vedere l'articolo relativo alla classificazione multiclasse su Wikipedia.
Nota
Il modello "uno contro tutti" aggiorna gli algoritmi di apprendimento per la classificazione binaria in modo che possano agire sui set di dati multiclasse. Altre informazioni su Wikipedia.
Algoritmi di training di classificazione multiclasse
È possibile eseguire il training di un modello di classificazione multiclasse usando gli algoritmi di training seguenti:
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
Input e output di classificazione multiclasse
I dati della colonna dell'etichetta di input devono essere di tipo key. La colonna delle funzionalità deve essere un vettore di dimensioni fisse di Single.
Questo algoritmo di training restituisce quanto segue:
Nome output | Tipo | Descrizione |
---|---|---|
Score |
Vettore di Single | I punteggi di tutte le classi. Valori più alti indicano maggiori probabilità di rientrare nella classe associata. Se l'elemento i-esimo ha il valore più elevato, l'indice delle etichette stimate sarà i. Si noti che i è l'indice a base zero. |
PredictedLabel |
Tipo key | L'indice dell'etichetta stimata. Se il valore è i, l'etichetta effettiva potrebbe essere la categoria i-esima nel tipo di etichetta di input con valori key. |
Regressione
Un attività di apprendimento automatico con supervisione che viene usata per stimare il valore dell'etichetta da un set di funzionalità correlate. L'etichetta può essere relativa a qualsiasi valore reale e non appartiene a un set finito di valori come nelle attività di classificazione. Gli algoritmi di regressione modellano la dipendenza dell'etichetta in base alle relative funzionalità correlate per determinare come cambierà l'etichetta quando variano i valori delle funzionalità. L'input di un algoritmo di regressione è un set di esempi con etichette di valori noti. L'output di un algoritmo di regressione è una funzione, che è possibile usare per stimare il valore dell'etichetta per qualsiasi nuovo set di funzionalità di input. Alcuni esempi di scenari di regressione sono i seguenti:
- Stima dei prezzi delle case in base alle caratteristiche, come numero di camere da letto, posizione o dimensione.
- Stima dei prezzi futuri delle azioni in base ai dati cronologici e alle tendenze di mercato correnti.
- Stima delle vendite di un prodotto in base ai budget pubblicitari.
Algoritmi di training di regressione
È possibile eseguire il training di un modello di regressione usando gli algoritmi seguenti:
- LbfgsPoissonRegressionTrainer
- LightGbmRegressionTrainer
- SdcaRegressionTrainer
- OlsTrainer
- OnlineGradientDescentTrainer
- FastTreeRegressionTrainer
- FastTreeTweedieTrainer
- FastForestRegressionTrainer
- GamRegressionTrainer
Input e output di regressione
I dati della colonna dell'etichetta di input devono essere Single.
Gli algoritmi di training per questa attività restituiscono quanto segue:
Nome output | Tipo | Descrizione |
---|---|---|
Score |
Single | Il punteggio non elaborato stimato dal modello |
Clustering
Un'attività di apprendimento automatico senza supervisione che viene usata per raggruppare le istanze dei dati in cluster con caratteristiche simili. Il clustering può anche essere usato per identificare relazioni in un set di dati che potrebbe essere impossibile ricavare logicamente dall'esplorazione o dalla semplice osservazione. Gli input e gli output di un algoritmo di clustering dipendono dalla metodologia scelta. È possibile adottare un approccio basato su distribuzione, centroide, connettività o densità. ML.NET attualmente supporta un approccio basato su centroide che usa il clustering K-Means. Alcuni esempi di scenari di clustering sono i seguenti:
- Comprensione dei segmenti degli ospiti degli hotel in base alle abitudini e alle caratteristiche delle scelte degli hotel.
- Identificazione di segmenti di clienti e dati demografici per la creazione di campagne pubblicitarie mirate.
- Classificazione di inventari in base alle metriche di produzione.
Algoritmi di training di clustering
È possibile eseguire il training di un modello di clustering usando l'algoritmo seguente:
Input e output di clustering
I dati delle funzionalità di input devono essere Single. Non sono necessarie etichette.
Questo algoritmo di training restituisce quanto segue:
Nome output | Tipo | Descrizione |
---|---|---|
Score |
vettore di Single | Distanze del punto dati specificato con i centroidi di tutti i cluster |
PredictedLabel |
Tipo key | L'indice del cluster più vicino stimato dal modello. |
Rilevamento anomalie
Questa attività crea un modello per il rilevamento di anomalie tramite l'analisi delle componenti principali. Il rilevamento di anomalie basato su questo tipo di analisi consente di creare un modello in scenari in cui è facile ottenere dati di training da una singola classe, ad esempio le transazioni valide, ma è difficile ottenere campioni sufficienti delle anomalie da rilevare.
L'analisi delle componenti principali è una tecnica consolidata nell'apprendimento automatico che viene spesso usata per l'analisi esplorativa dei dati perché rivela la struttura interna dei dati e ne spiega la varianza. Questa tecnica consiste nell'eseguire l'analisi di dati che contengono più variabili. Cerca le correlazioni tra le variabili e determina la combinazione di valori che meglio rappresenta le differenze nei risultati. Questi valori di caratteristica combinati vengono usati per creare uno spazio di caratteristiche più compatto, denominato componenti principali.
Il rilevamento di anomalie comprende molte attività importanti correlate all'apprendimento automatico:
- Identificazione di transazioni potenzialmente illecite.
- Criteri di apprendimento indicanti che si è verificata un'intrusione nella rete.
- Ricerca di gruppi anomali di pazienti.
- Verifica dei valori immessi in un sistema.
Poiché le anomalie sono per definizione eventi rari, può essere difficile raccogliere un campione rappresentativo di dati da usare per la modellazione. Gli algoritmi inclusi in questa categoria sono stati appositamente progettati per risolvere i problemi principali relativi alla creazione e al training dei modelli tramite set di dati non bilanciati.
Algoritmo di training di rilevamento anomalie
È possibile eseguire il training di un modello di rilevamento anomalie usando l'algoritmo seguente:
Input e output di rilevamento anomalie
Le funzionalità di input devono essere un vettore a dimensione fissa di Single.
Questo algoritmo di training restituisce quanto segue:
Nome output | Tipo | Descrizione |
---|---|---|
Score |
Single | Il punteggio non negativo, illimitato calcolato dal modello di rilevamento anomalie |
PredictedLabel |
Boolean | Valore true/false che indica se l'input è un'anomalia (PredictedLabel=true) o meno (PredictedLabel=false) |
Classifica
Un'attività di ranking crea un modello di ranking in base a un set di esempi con etichetta. Questo set è costituito da gruppi di istanze a cui può essere assegnato un punteggio con determinati criteri. Le etichette di ranking sono {0, 1, 2, 3, 4} per ogni istanza. Il modello di ranking viene sottoposto a training in modo da classificare in ordine di priorità nuovi gruppi di istanze con punteggi sconosciuti per ogni istanza. Gli algoritmi di apprendimento per il ranking di ML.NET sono basati sulla tecnica di ranking con apprendimento automatico.
Algoritmi di training di classificazione
È possibile eseguire il training di un modello di classificazione con gli algoritmi seguenti:
Input e output di classificazione
Il tipo di dati dell'etichetta di input deve essere key o Single. Il valore dell'etichetta determina la pertinenza, dove valori più alti indicano maggior pertinenza. Se l'etichetta è un tipo key, l'indice di chiave è il valore di pertinenza, dove l'indice più basso è il meno pertinente. Se l'etichetta è un tipo Single, valori più alti indicano maggior pertinenza.
I dati della funzionalità devono essere un vettore di dimensioni fisse di Single e la colonna gruppo di righe di input deve essere un tipo key.
Questo algoritmo di training restituisce quanto segue:
Nome output | Tipo | Descrizione |
---|---|---|
Score |
Single | Il punteggio illimitato calcolato dal modello per determinare la stima |
Elemento consigliato
Un'attività di raccomandazione consente di generare un elenco di servizi o prodotti consigliati. ML.NET usa la fattorizzazione di matrice e un algoritmo di filtraggio collaborativo per le raccomandazioni quando si hanno dati cronologici di classificazione dei prodotti nel proprio catalogo. Ad esempio, quando sono presenti dati cronologici di classificazione di film per gli utenti e si vogliono raccomandare altri film a cui questi potrebbero essere interessati.
Algoritmi di training di raccomandazione
È possibile eseguire il training di un modello di raccomandazione con l'algoritmo seguente:
Previsioni
L'attività di previsione usa i dati delle serie temporali precedenti per eseguire stime sul comportamento futuro. Gli scenari applicabili alle previsioni includono previsioni meteo, previsioni delle vendite stagionali e manutenzione predittiva.
Formatori di previsione
È possibile eseguire il training di un modello di previsione con l'algoritmo seguente:
Classificazione immagini
Un'attività di apprendimento automatico con supervisione che viene usata per stimare la classe (categoria) di un'immagine. L'input è un set di esempi etichettati. In genere ogni etichetta è inizialmente costituita da testo. Viene quindi elaborata da TermTransform, che la converte nel tipo Key (numerico). L'output dell'algoritmo di classificazione delle immagini è un classificatore, che è possibile usare per stimare la classe di nuove immagini. L'attività di classificazione delle immagini è un tipo di classificazione multiclasse. Esempi di scenari di classificazione delle immagini includono:
- Determinare la razza di un cane come "siberian husky", "golden retriever", "barboncino" e così via.
- Determinare se un prodotto di produzione è difettoso o meno.
- Determinare quali tipi di fiori sono "Rose", "Girasoli", ecc.
Trainer di classificazione delle immagini
È possibile eseguire il training di un modello di classificazione delle immagini usando gli algoritmi di training seguenti:
Input e output di classificazione delle immagini
I dati della colonna dell'etichetta di input devono essere di tipo key. La colonna di funzionalità deve essere un vettore di dimensioni variabili di Byte.
Questo formatore restituisce le colonne seguenti:
Nome output | Tipo | Descrizione |
---|---|---|
Score |
Single | Punteggi di tutte le classi. Un valore più alto indica una maggiore probabilità di rientrare nella classe associata. Se l'elemento i-th ha il valore più grande, l'indice delle etichette stimato sarà i.Note, ovvero l'indice a base zero. |
PredictedLabel |
Tipo di chiave | L'indice dell'etichetta stimata. Se il valore è i, l'etichetta effettiva potrebbe essere la categoria i-esima nel tipo di etichetta di input con valori key. |
Rilevamento oggetti
Un'attività di Apprendimento automatico con supervisione usata per stimare la classe (categoria) di un'immagine, ma fornisce anche un riquadro delimitatore del testo in cui tale categoria si trova all'interno dell'immagine. Anziché classificare un singolo oggetto in un'immagine, il rilevamento degli oggetti può rilevare più oggetti all'interno di un'immagine. Esempi di rilevamento degli oggetti includono:
- Rilevamento di auto, segnali o persone su delle immagini di una strada.
- Rilevamento dei difetti nelle immagini dei prodotti.
- Rilevamento di aree problematiche su immagini a raggi X.
Il training del modello di rilevamento oggetti è attualmente disponibile solo in Model Builder usando Azure Machine Learning.