Condividi tramite


SMOTE

Importante

Il supporto dello studio di Azure Machine Learning (versione classica) terminerà il 31 agosto 2024. È consigliabile passare ad Azure Machine Learning entro tale data.

A partire dal 1° dicembre 2021 non sarà possibile creare nuove risorse dello studio di Azure Machine Learning (versione classica). Fino al 31 agosto 2024 sarà possibile continuare a usare le risorse dello studio di Azure Machine Learning (versione classica).

La documentazione relativa allo studio di Machine Learning (versione classica) è in fase di ritiro e potrebbe non essere aggiornata in futuro.

Aumenta il numero di esempi di bassa incidenza in un set di dati usando il sovracampionamento della minoranza sintetica

Categoria: Trasformazione/Manipolazione dei dati

Nota

Si applica a: Machine Learning Studio (versione classica)

Nella finestra di progettazione sono disponibili moduli simili Azure Machine Learning trascinamento della selezione.

Panoramica del modulo

Questo articolo descrive come usare il modulo SMOTE in Machine Learning Studio (versione classica) per aumentare il numero di casi sotto-rappresentati 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 case esistenti.

Connettere il modulo SMOTE a un set di dati sbilanciato. Esistono molti motivi per cui un set di dati potrebbe essere sbilanciato: la categoria di destinazione potrebbe essere molto rara nella popolazione o i dati potrebbero essere semplicemente difficili da raccogliere. In genere, si utilizza SMOTE quando la classe che si desidera analizzare è sotto rappresentata.

Il modulo restituisce un set di dati che contiene i campioni originali, più un numero aggiuntivo di campioni di minoranza sintetica, in base alla percentuale specificata.

Altre informazioni su SMOTE

SMOTE è l'acronimo di Synthetic Supervisiony Oversampling Technique. Si tratta di una tecnica statistica che consente di aumentare il numero di casi nel set di dati in modo bilanciato. Il modulo 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; al contrario, l'algoritmo prende esempi dello spazio delle funzionalità per ogni classe di destinazione e i relativi vicini più prossimi e genera nuovi esempi che combinano le caratteristiche del case di destinazione con le caratteristiche dei relativi vicini. Questo approccio aumenta le caratteristiche disponibili per ciascuna classe e rende i campioni più generali.

SMOTE accetta l'intero set di dati come input, ma aumenta la percentuale solo dei case di minoranza. Si supponga, ad esempio, di avere un set di dati sbilanciato in cui solo l'1% dei case ha il valore di destinazione A (classe di minoranza) e il 99% dei case ha il valore B. Per aumentare la percentuale di case di minoranza al doppio della percentuale precedente, è necessario immettere 200 come percentuale SMOTE nelle proprietà del modulo.

Esempio

È consigliabile provare a usare SMOTE con un set di dati di dimensioni inferiori per verificarne il funzionamento. L'esempio seguente usa il set di dati Di donazione di doni di donazione disponibile in Machine Learning Studio (versione classica).

Se si aggiunge il set di dati a un esperimento e si fa clic su Visualizza nell'output del set di dati, si può vedere che, dei 748 casi o righe nel set di dati, sono presenti 570 case (76%) della classe 0 e 178 case (24%) della classe 1. Anche se questo non è sbilanciato in modo grave, la classe 1 rappresenta le persone che hanno donato il globo e quindi queste righe contengono lo spazio delle caratteristiche che si vuole modellare.

Per aumentare il numero di case, è possibile impostare il valore della percentuale SMOTE usando multipli di 100, come indicato di seguito:

Classe 0 Classe 1 total
Set di dati originale

(equivalente alla percentuale SMOTE = 0)
570

76%
178

24%
748
Percentuale SMOTE = 100 570

62%
356

38%
926
Percentuale SMOTE = 200 570

52%
534

48%
1104
Percentuale SMOTE = 300 570

44%
712

56%
1282

Avviso

L'aumento del numero di casi usando SMOTE non garantisce la produzione di modelli più accurati. È consigliabile effettuare esperimenti con percentuali, set di funzioni e numero di vicini più prossimi diversi per vedere in che modo l'aggiunta di casi influenza il modello.

Come configurare SMOTE

  1. Aggiungere il modulo SMOTE all'esperimento. È possibile trovare il modulo in Moduli di trasformazione dei dati, nella categoria di manipolazione.

  2. Connessione set di dati di cui si vuole aumentare la boost. Se si desidera specificare lo spazio delle funzionalità per la compilazione dei nuovi case, utilizzando solo colonne specifiche o escludendo alcune colonne, utilizzare il modulo Select Columns in Dataset per isolare le colonne che si desidera utilizzare prima di utilizzare SMOTE.

    In caso contrario, la creazione di nuovi case tramite SMOTE si basa su tutte le colonne specificate come input.

  3. Assicurarsi che la colonna contenente l'etichetta, o la classe di destinazione, sia contrassegnata come tale.

    Se non è presente alcuna colonna etichetta, usare il modulo Edit Metadata (Modifica metadati) per selezionare la colonna che contiene le etichette di classe e selezionare Label (Etichetta ) dall'elenco a discesa Fields ( Campi).

  4. Il modulo SMOTE identifica automaticamente la classe di minoranza nella colonna etichetta e quindi ottiene tutti gli esempi per la classe di minoranza.

  5. Nell'opzione Percentuale SMOTE digitare un numero intero che indica la percentuale di casi di tolleranza di destinazione nel set di dati di output. Ad esempio:

    • Digitare 0 (%). Il modulo SMOTE restituisce esattamente lo stesso set di dati fornito come input, senza aggiungere nuovi casi di minoranza. In questo set di dati la proporzione della classe non è stata modificata.

    • Digitare 100 (%). Il modulo SMOTE genera nuovi casi di minoranza, aggiungendo lo stesso numero di case di minoranza presenti nel set di dati originale. Poiché SMOTE non aumenta il numero di case di maggioranza, la proporzione di case di ogni classe è stata modificata.

    • Digitare 200 (%). Il modulo raddoppia la percentuale di case di minoranza rispetto al set di dati originale. Ciò non comporta la presenza del doppio dei casi di minoranza come in precedenza. Le dimensioni del set di dati vengono invece aumentate in modo tale che il numero di case di maggioranza rimanga lo stesso e il numero di case di maggioranza aumenta fino a quando non corrisponde al valore percentuale desiderato.

    Nota

    Usare solo multipli di 100 per la percentuale SMOTE.

  6. Utilizzare l'opzione Numero di vicini più prossimi per determinare le dimensioni dello spazio funzionalità utilizzato dall'algoritmo SMOTE durante la compilazione di nuovi case. Per vicino più prossimo si intende una riga di dati (un caso) molto simile a un altro caso di destinazione. La distanza tra i due casi viene misurata combinando i vettori di peso di tutte le funzioni.

    • Aumentando il numero di vicini più prossimi, si ottengono funzionalità da più casi.
    • Mantenendo basso il numero di vicini più prossimi, si usano funzionalità più simili a quelle dell'esempio originale.
  7. Digitare un valore nella casella di testo Random seed (Valore di seed casuale) se si vogliono garantire gli stessi risultati sulle esecuzioni dello stesso esperimento, con gli stessi dati. In caso contrario, il modulo genera un valore di seed casuale in base ai valori di clock del processore quando viene distribuito l'esperimento, che può causare risultati leggermente diversi nelle esecuzioni.

  8. Eseguire l'esperimento.

    L'output del modulo è un set di dati contenente le righe originali più un certo numero di righe aggiunte con case minori.

Suggerimento

Per determinare quali nuove righe sono state aggiunte, è possibile usare i moduli Applica SQL trasformazione o Join dei dati.

Note tecniche

  • Quando si pubblica un modello che usa il modulo SMOTE , rimuovere SMOTE dall'esperimento predittivo prima che venga pubblicato come servizio Web. Il motivo è che SMOTE è destinato a migliorare un modello durante il training e non è destinato all'assegnazione di punteggi. È possibile che venga visualizzato un errore se un esperimento predittivo pubblicato contiene il modulo SMOTE.

  • È spesso possibile ottenere risultati migliori se si applica la pulizia dei valori mancante o altre trasformazioni per correggere i dati prima di applicare SMOTE.

  • Alcuni ricercatori hanno esaminato se SMOTE è efficace su dati ad alta dimensionalità o di tipo sparse, ad esempio quelli usati nella classificazione del testo o nei set di dati genomici. Questo documento contiene 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 ad alta dimensionalità

    Se SMOTE non è efficace nel set di dati, altri approcci che è possibile prendere in considerazione includono vari metodi per il sovracampionamento dei casi minori o il sottocampionamento della maggior parte dei casi, nonché tecniche di insieme che aiutano direttamente lo strumento di apprendimento, usando clustering, bagging o boosting adattivo.

Input previsto

Nome Tipo Descrizione
Esempi Tabella dati Set di dati di campioni

Parametri del modulo

Nome Intervallo Type Predefinito Descrizione
SMOTE percentage >=0 Integer 100 Quantità di sovracampionamento in multipli di 100
Number of nearest neighbors >=1 Integer 1 Numero di vicini più prossimi da cui prelevare le funzioni per i nuovi casi
Random seed Qualsiasi Integer 0 Valore di inizializzazione per il generatore di numeri casuali

Output

Nome Tipo Descrizione
Tabella Tabella dati Tabella di dati contenente gli esempi originali e un numero aggiuntivo di esempi di classi di minoranza sintetica. Il numero di nuovi campioni è (smotePercent/100)*T, dove T è il numero di campioni di classi di minoranza.

Vedi anche

Sample and Split
Elenco moduli A-Z