Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come usare il componente SMOTE nella finestra di progettazione di Azure Machine Learning per aumentare il numero di case sottorappresentato in un set di dati usato per l'apprendimento automatico. SMOTE è un modo migliore per aumentare il numero di casi rari rispetto alla semplice duplicazione dei casi esistenti.
Il componente SMOTE viene connesso a un set di dati sbilanciato. Molti motivi possono causare uno sbilanciato set di dati. Ad esempio, la categoria di destinazione potrebbe essere rara nella popolazione o i dati potrebbero essere difficili da raccogliere. In genere, si usa SMOTE quando la classe che si desidera analizzare è sottorappresentato.
Il componente restituisce un set di dati che contiene gli esempi originali. Restituisce anche un numero di campioni di minoranza sintetica, a seconda della percentuale specificata.
Altre informazioni su SMOTE
La tecnica di sovracampionamento delle minoranze sintetiche (SMOTE) è una tecnica statistica per aumentare il numero di casi nel set di dati in modo bilanciato. Il componente funziona generando nuove istanze da casi di minoranza esistenti forniti come input. Questa implementazione di SMOTE non modifica il numero di casi di maggioranza.
Le nuove istanze non sono solo copie dei casi di minoranza esistenti. L'algoritmo accetta invece campioni dello spazio delle funzionalità per ogni classe di destinazione e i relativi vicini più vicini. L'algoritmo genera quindi nuovi esempi che combinano le funzionalità del caso di destinazione con le caratteristiche dei relativi vicini. Questo approccio aumenta le funzionalità disponibili per ogni classe e rende gli esempi più generali.
SMOTE accetta l'intero set di dati come input, ma aumenta la percentuale solo dei casi di minoranza. Si supponga, ad esempio, di avere un set di dati sbilanciato in cui solo il 1% dei casi ha il valore A (la classe di minoranza) e il 99% dei casi ha il valore B. Per generare casi sintetici uguali al doppio del numero originale di case di minoranza, immettere 200 per percentuale SMOTE nelle proprietà del componente.
Esempi
Provare a usare SMOTE con un set di dati di piccole dimensioni per vedere come funziona. L'esempio seguente usa il set di dati Blood Donation disponibile nella finestra di progettazione di Azure Machine Learning.
Se si aggiunge il set di dati a una pipeline e si seleziona Visualizza nell'output del set di dati, si noterà che le 748 righe o i casi nel set di dati, 570 case (76%) sono della classe 0 e 178 case (24%) sono della classe 1. Anche se questo risultato non è terribilmente sbilanciato, la classe 1 rappresenta le persone che hanno donato sangue, quindi queste righe contengono lo spazio di funzionalità che si vuole modellare.
Per aumentare il numero di case, impostare il valore della percentuale SMOTE usando più di 100, come indicato di seguito:
| Classe 0 | Classe 1 | totale | |
|---|---|---|---|
| Set di dati originale (equivalente a Percentuale = SMOTE 0) |
570 76% |
178 24% |
748 |
| Percentuale = SMOTE 100 | 570 62% |
356 38% |
926 |
| Percentuale = SMOTE 200 | 570 52% |
534 48% |
1.104 |
| Percentuale = SMOTE 300 | 570 44% |
712 56% |
1,282 |
Avviso
L'aumento del numero di casi tramite SMOTE non garantisce modelli più accurati. Provare a pipelining con percentuali diverse, set di funzionalità diversi e diversi numeri di vicini più vicini per vedere come l'aggiunta di case influisce sul modello.
Come configurare SMOTE
Aggiungere il componente SMOTE alla pipeline. È possibile trovare il componente in Componenti trasformazione dati nella categoria Manipolazione .
Connettere il set di dati da aumentare. Se si desidera specificare lo spazio delle funzionalità per la compilazione dei nuovi case, usando solo colonne specifiche o escludendo alcune, usare il componente Select Columns in Dataset (Seleziona colonne nel set di dati ). È quindi possibile isolare le colonne da usare prima di usare SMOTE.
In caso contrario, la creazione di nuovi case tramite SMOTE si basa su tutte le colonne specificate come input. Almeno una colonna delle colonne di funzionalità è numerica.
Verificare che la colonna contenente l'etichetta o la classe di destinazione sia selezionata. SMOTE accetta solo etichette binarie.
Il componente SMOTE identifica automaticamente la classe di minoranza nella colonna etichetta e quindi ottiene tutti gli esempi per la classe di minoranza. Tutte le colonne non possono avere valori NaN.
Nell'opzione percentuale SMOTE immettere un numero intero che indica la percentuale di destinazione dei case di minoranza nel set di dati di output. Ad esempio:
Immettere 0. Il componente SMOTE restituisce esattamente lo stesso set di dati fornito come input. Non aggiunge nuovi casi di minoranza. In questo set di dati la proporzione della classe non è stata modificata.
Immettere 100. Il componente SMOTE genera nuovi casi di minoranza. Aggiunge lo stesso numero di case di minoranza presenti nel set di dati originale. Poiché SMOTE non aumenta il numero di casi di maggioranza, la percentuale di case di ogni classe cambia.
Immettere 200. Il componente genera nuovi casi sintetici uguali al doppio del numero originale di casi di minoranza, con conseguente numero totale di minoranze pari a tre volte l'originale. Poiché SMOTE non aumenta il numero di casi di maggioranza, aumenta la percentuale complessiva di casi di minoranza nel set di dati.
Nota
Utilizzare solo più di 100 per la percentuale SMOTE.
Utilizzare l'opzione Numero di vicini più vicini per determinare le dimensioni dello spazio delle funzionalità utilizzato dall'algoritmo SMOTE nella compilazione di nuovi casi. Un vicino più vicino è una riga di dati (un caso) simile a un caso di destinazione. La distanza tra due casi viene misurata combinando i vettori ponderati di tutte le caratteristiche.
- Aumentando il numero di vicini più vicini, si ottengono funzionalità da più casi.
- Mantenendo basso il numero di vicini più vicini, si usano funzionalità più simili a quelle dell'esempio originale.
Immettere un valore nella casella Valore di inizializzazione casuale se si vogliono verificare gli stessi risultati sulle esecuzioni della stessa pipeline, con gli stessi dati. In caso contrario, il componente genera un valore di inizializzazione casuale basato sui valori di clock del processore quando viene distribuita la pipeline. La generazione di un valore di inizializzazione casuale può causare risultati leggermente diversi durante le esecuzioni.
Inviare la pipeline.
L'output del componente è un set di dati che contiene le righe originali e un numero di righe aggiunte con casi di minoranza.
Note tecniche
Quando si pubblica un modello che usa il componente SMOTE , rimuovere SMOTE dalla pipeline predittiva prima di pubblicarlo come servizio Web. SMOTE è progettato per migliorare un modello durante il training, non per l'assegnazione dei punteggi. È possibile che venga visualizzato un errore se una pipeline predittiva pubblicata contiene il componente SMOTE.
È spesso possibile ottenere risultati migliori se si puliscono valori mancanti o si applicano altre trasformazioni per correggere i dati prima di applicare SMOTE.
Alcuni ricercatori hanno studiato se SMOTE è efficace sui dati ad alta dimensione o sparse, ad esempio i dati usati nella classificazione del testo o nei set di dati di genomica. Questo documento presenta un buon riepilogo degli effetti e della validità teorica dell'applicazione di SMOTE in questi casi: Blagus e Lusa: SMOTE per dati sbilanciati di classe altamente dimensionali.
Se SMOTE non è efficace nel set di dati, prendere in considerazione altri approcci, ad esempio:
- Metodi per sovracampionare i casi di minoranza o sottocampionare i casi di maggioranza.
- Tecniche di ensemble che aiutano direttamente l'apprendimento usando clustering, bagging o boosting adattivo.
Passaggi successivi
Vedere il set di componenti disponibili per Azure Machine Learning.