Attività di Machine Learning in ML.NET
Un'attività di Machine Learning è un tipo di stima o inferenza basata su entrambi:
- Problema o domanda
- Dati disponibili
Ad esempio, l'attività di classificazione assegna i dati alle categorie e l'attività di clustering raggruppa i dati in base alla somiglianza.
Le attività di Machine Learning si basano su modelli nei dati anziché programmati in modo esplicito.
Questo articolo descrive le diverse attività di Machine Learning disponibili in ML.NET e alcuni casi d'uso comuni.
Dopo aver deciso quale attività funziona per lo scenario, è necessario scegliere l'algoritmo migliore per eseguire il training del modello. Gli algoritmi disponibili sono elencati nella sezione per ogni attività.
Attività di classificazione
Classificazione binaria
La classificazione binaria è un'attività di Machine Learning con supervisione usata per stimare a quali classi appartengono esattamente due classi (categorie) a cui appartiene un'istanza di dati. L'input di un algoritmo di classificazione è un set di esempi etichettati, in cui ogni etichetta è un numero intero pari a 0 o 1. L'output di un algoritmo di classificazione binaria è un classificatore, che è possibile usare per stimare la classe di nuove istanze senza etichetta. Esempi di scenari di classificazione binaria includono:
- Informazioni sul sentiment dei commenti di Twitter come positivo o negativo.
- Diagnosi se un paziente ha una certa malattia.
- Prendere una decisione di contrassegnare un messaggio di posta elettronica come posta indesiderata.
- Determinare se una foto contiene un particolare elemento, ad esempio un cane o un frutto.
Per ulteriori informazioni, vedere l'articolo di Wikipedia "Classificazione binaria" .
Trainer 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, ovvero numeri uguali di dati di training positivi e negativi. I valori mancanti devono essere gestiti prima dell'addestramento.
I dati della colonna dell'etichetta di input devono essere Boolean. I dati delle colonne delle funzionalità di input devono essere un vettore a dimensione fissa di Single.
Questi trainer generano le colonne seguenti:
Nome della colonna di output | Tipo di colonna | Descrizione |
---|---|---|
Score |
Single | Il punteggio grezzo calcolato dal modello. |
PredictedLabel |
Boolean | Etichetta prevista, in base al segno del punteggio. Un punteggio negativo corrisponde a false e un punteggio positivo corrisponde a true . |
Classificazione multiclasse
La classificazione multiclasse è un'attività di Machine Learning con supervisione usata per classificare un'istanza di dati in una delle tre o più classi (categorie). L'input di un algoritmo di classificazione è un set di esempi etichettati. Ogni etichetta inizia normalmente come testo. Viene quindi eseguito tramite TermTransform, che lo converte nel tipo Chiave (numerico). L'output di un algoritmo di classificazione è un classificatore, che è possibile usare per stimare la classe di nuove istanze senza etichetta. Esempi di scenari di classificazione multiclasse includono:
- Categorizzare i voli come "presto", "in tempo" o "in ritardo".
- Comprendere le recensioni cinematografiche come "positive", "neutral" o "negative".
- Categorizzare le recensioni degli hotel come "posizione", "prezzo" o "pulizia", ad esempio.
Per altre informazioni, vedere l'articolo classificazione multiclasse su Wikipedia.
Nota
one-vs.-rest aggiorna qualsiasi strumento di apprendimento per la classificazione binaria per agire su set di dati multiclasse.
Trainer di classificazione multiclasse
È possibile eseguire il training di un modello di classificazione multiclasse usando gli algoritmi di training seguenti:
- TextClassificationTrainer
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
Gli input e output della classificazione multiclasse
I dati della colonna dell'etichetta di input devono essere di chiave tipo. La colonna di funzionalità deve essere un vettore a dimensione fissa di Single.
Questo formatore restituisce quanto segue:
Nome del risultato | Digitare | Descrizione |
---|---|---|
Score |
Vettore di 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 . Si noti che i è un indice in base zero. |
PredictedLabel |
chiave | Indice dell'etichetta stimata. Se il suo valore è i , l'etichetta effettiva sarà la i -esima categoria nel tipo di etichetta di input con valori chiave. |
Classificazione del testo
La classificazione del testo è una sottocategoria di classificazione multiclasse che gestisce in modo specifico il testo non elaborato. Il testo pone sfide interessanti perché è necessario tenere conto del contesto e della semantica in cui si verifica il testo. Di conseguenza, può essere difficile codificare significato e contesto.
modelli di Deep Learning sono emersi come una tecnica promettente per risolvere i problemi del linguaggio naturale. Più in particolare, un tipo di rete neurale conosciuta come trasformatore è diventato il modo predominante per risolvere i problemi del linguaggio naturale, come la classificazione del testo, la traduzione, il riepilogo e la risposta alle domande. Alcune architetture di trasformatori comuni per le attività in linguaggio naturale includono:
- Rappresentazioni del codificatore bidirezionale dai trasformatori (BERT)
- Approccio di pre-training BERT ottimizzato in modo affidabile (RoBERTa)
- Trasformatore pre-addestrato generativo (GPT)
L'API di classificazione del testo ML.NET è basata su TorchSharp. TorchSharp è una libreria .NET che fornisce l'accesso alla libreria che supporta PyTorch. TorchSharp contiene i blocchi fondamentali per l'addestramento di reti neurali dall'inizio in .NET. ML.NET astrae alcune delle complessità di TorchSharp al livello dello scenario. Usa una versione preaddestrata del modello di NAS-BERT e la affina con i propri dati.
Per un esempio di classificazione del testo, vedere Introduzione all'API di classificazione del testo.
Classificazione delle immagini
La classificazione delle immagini è un'attività di Machine Learning con supervisione usata per stimare la classe (categoria) di un'immagine. L'input è un set di esempi etichettati. Ogni etichetta inizia normalmente come testo. Viene quindi eseguito tramite TermTransform, che lo converte nel tipo Chiave (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:
- Determinazione della razza di un cane come "Husky Siberia", "Golden Retriever", "Poodle", ecc.
- 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:
Ingressi e uscite di classificazione delle immagini
I dati della colonna dell'etichetta di input devono essere chiave tipo. La colonna di caratteristiche deve essere un vettore a grandezza variabile di Byte.
Questo formatore restituisce le colonne seguenti:
Nome dell'output | Digitare | 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 ha il valore più grande, l'indice etichettato previsto sarà i . (i è un indice in base zero. |
PredictedLabel |
chiave tipo | L'indice dell'etichetta prevista. Se il valore è i , l'etichetta reale sarà la categoria i -esima nel tipo di etichetta di input con valori chiave. |
Regressione
La regressione è un'attività di apprendimento automatico supervisionato usata per stimare il valore dell'etichetta da un set di caratteristiche correlate. L'etichetta può essere di qualsiasi valore reale e non proviene da un set finito di valori come nelle attività di classificazione. Gli algoritmi di regressione modellano la dipendenza dell'etichetta sulle relative funzionalità correlate per determinare come l'etichetta cambierà man mano che i valori delle funzionalità sono diversi. 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 puoi usare per prevedere il valore dell'etichetta per qualsiasi nuovo insieme di caratteristiche di input. Esempi di scenari di regressione includono:
- Stima dei prezzi delle case in base agli attributi della casa, ad esempio il numero di camere da letto, la posizione o le dimensioni.
- Previsione dei prezzi futuri delle azioni in base ai dati cronologici e alle tendenze correnti del mercato.
- Stima delle vendite di un prodotto in base ai budget pubblicitari.
- Ricerca di articoli correlati in una pubblicazione (somiglianza delle frasi).
Trainer di regressione
È possibile eseguire il training di un modello di regressione usando gli algoritmi seguenti:
- SentenceSimilarityTrainer
- 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.
I formatori per questa attività generano quanto segue:
Nome output | Digitare | Descrizione |
---|---|---|
Score |
Single | Punteggio grezzo previsto dal modello |
Clustering
Il clustering è un'attività di Machine Learning non supervisionata usata per raggruppare istanze di dati in cluster che contengono caratteristiche simili. Il clustering può essere usato anche per identificare le relazioni in un insieme di dati che non potresti derivare logicamente attraverso l'esplorazione o la 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 supporta attualmente un approccio basato sul centroid usando il clustering K-Means. Esempi di scenari di clustering includono:
- Comprendere i segmenti degli ospiti dell'hotel in base alle abitudini e alle caratteristiche delle scelte degli hotel.
- Identificazione di segmenti di clienti e dati demografici per creare campagne pubblicitarie mirate.
- Categorizzazione dell'inventario in base alle metriche di produzione.
Formatore di clustering
È possibile eseguire il training di un modello di clustering usando l'algoritmo seguente:
Raggruppamento di input e output
I dati delle funzionalità di input devono essere Single. Non sono necessarie etichette.
Questo formatore restituisce quanto segue:
Nome output | Digitare | Descrizione |
---|---|---|
Score |
Vettore di Single | Distanze del punto dati specificato con i centroidi di tutti i cluster. |
PredictedLabel |
chiave tipo | Indice del cluster più vicino stimato dal modello. |
Rilevamento anomalie
L'attività di rilevamento anomalie crea un modello di rilevamento anomalie usando l'analisi dei componenti principali. Il rilevamento anomalie basato su PCA consente di creare un modello in scenari in cui è facile ottenere dati di training da una classe, ad esempio transazioni valide, ma difficile ottenere campioni sufficienti delle anomalie mirate.
Una tecnica stabilita nell'apprendimento automatico, pca viene spesso usata nell'analisi esplorativa dei dati perché rivela la struttura interna dei dati e spiega la varianza nei dati. PCA funziona analizzando i dati che contengono più variabili. Cerca le correlazioni tra le variabili e determina la combinazione di valori che meglio acquisisce le differenze nei risultati. Questi valori di funzionalità combinati vengono usati per creare uno spazio di funzionalità più compatto denominato componenti principali.
Il rilevamento anomalie include molte attività importanti in Machine Learning:
- Identificazione di transazioni potenzialmente fraudolente.
- Modelli di apprendimento che indicano che si è verificata un'intrusione di rete.
- Ricerca di cluster anomali di pazienti.
- Controllo dei valori immessi in un sistema.
Poiché le anomalie sono eventi rari per definizione, 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 affrontare le sfide principali della creazione e del training dei modelli usando set di dati sbilanciati.
Trainer di rilevamento anomalie
È possibile eseguire il training di un modello di rilevamento anomalie usando l'algoritmo seguente:
Input e output del rilevamento delle anomalie
Le caratteristiche di input devono essere un vettore a dimensione fissa di Single.
Questo formatore restituisce quanto segue:
Nome dell'output | Digitare | Descrizione |
---|---|---|
Score |
Single | Punteggio non negativo e illimitato calcolato dal modello di rilevamento delle anomalie. |
PredictedLabel |
Boolean |
true se l'input è un'anomalia o false se non lo è. |
Classifica
Un'attività di classificazione costruisce un ranker da un set di esempi etichettati. Questo set di esempio è costituito da gruppi di istanze che possono essere valutati secondo un determinato criterio. Le etichette di classificazione sono { 0, 1, 2, 3, 4 } per ogni istanza. Il ranker viene addestrato per classificare i gruppi di nuove istanze con punteggi sconosciuti per ciascuna istanza. ML.NET algoritmi di classificazione sono basati sulla classificazione appresa tramite machine learning .
Algoritmi di apprendimento per il ranking
È 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 chiave tipo o Single. Il valore dell'etichetta determina la pertinenza, dove i valori più elevati indicano una maggiore rilevanza. Se l'etichetta è un tipo di chiave , l'indice della chiave è il valore di pertinenza, dove l'indice più piccolo è il meno rilevante. Se l'etichetta è un Single, i valori più grandi indicano una maggiore rilevanza.
I dati delle caratteristiche devono essere un vettore a dimensione fissa di Single e la colonna del gruppo di righe di input deve essere del tipo chiave .
Questo formatore restituisce quanto segue:
Nome output | Digitare | Descrizione |
---|---|---|
Score |
Single | Punteggio illimitato calcolato dal modello per determinare la previsione. |
Raccomandazione
Un'attività di raccomandazione consente di produrre un elenco di prodotti o servizi consigliati. ML.NET usa
Algoritmi di apprendimento per le raccomandazioni
È possibile eseguire il training di un modello di raccomandazione con l'algoritmo seguente:
Previsione
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:
Rilevamento oggetti
L'individuazione degli oggetti è un compito di apprendimento automatico supervisionato usato per prevedere la classe (categoria) di un'immagine, ma fornisce anche un riquadro di delimitazione 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, segni o persone su immagini di una strada.
- Rilevamento dei difetti nelle immagini dei prodotti.
- Rilevamento di aree problematiche nelle immagini a raggi X.
La formazione del modello di rilevamento oggetti è attualmente disponibile solo in Model Builder utilizzando Azure Machine Learning.