Dela via


SMOTE

Viktigt

Stödet för Machine Learning Studio (klassisk) upphör den 31 augusti 2024. Vi rekommenderar att du byter till Azure Machine Learning innan dess.

Från och med den 1 december 2021 kan du inte längre skapa nya Machine Learning Studio-resurser (klassisk). Du kan fortsätta att använda befintliga Machine Learning Studio-resurser (klassisk) till och med den 31 augusti 2024.

Dokumentationen om ML Studio (klassisk) håller på att dras tillbaka och kanske inte uppdateras i framtiden.

Ökar antalet exempel med låga förekomster i en datamängd med syntetisk översampling av syntetiska ämnen

Kategori: Datatransformering/manipulering

Anteckning

Gäller endast för: Machine Learning Studio (klassisk)

Liknande dra och släpp-moduler är tillgängliga i Azure Machine Learning designer.

Modulöversikt

I den här artikeln beskrivs hur du använder SMOTE-modulen i Machine Learning Studio (klassisk) för att öka antalet underrepresenterade fall i en datamängd som används för maskininlärning. SMOTE är ett bättre sätt att öka antalet sällsynta fall än att bara duplicera befintliga fall.

Du ansluter SMOTE-modulen till en datauppsättning som är obalanserad. Det finns många orsaker till varför en datauppsättning kan vara obalanserad: den kategori som du riktar in dig på kan vara mycket sällsynt i populationen, eller så kan data helt enkelt vara svåra att samla in. Normalt använder du SMOTE när klassen som du vill analysera är underrepresenterad.

Modulen returnerar en datamängd som innehåller de ursprungliga urvalen, plus ytterligare ett antal syntetiska prover på prover av syntetiska prover, beroende på den procentandel som du anger.

Mer om SMOTE

SMOTE står för Syntetisk översamplingsteknik. Det här är en statistisk teknik för att öka antalet fall i datamängden på ett balanserat sätt. Modulen arbetar med att generera nya instanser från befintliga fall av fall av ärenden som du tillhandahåller som indata. Den här implementeringen av SMOTE ändrar inte antalet majoritetsfall.

De nya instanserna är inte bara kopior av befintliga fall av fall av administrativt skydd, utan även kopior av befintliga fall av ärenden som gäller hela instansen. I stället tar algoritmen exempel på funktionsutrymmet för varje målklass och dess närmaste grannar och genererar nya exempel som kombinerar funktioner i målfallet med funktioner hos grannarna. Den här metoden ökar funktionerna som är tillgängliga för varje klass och gör exemplen mer allmänna.

SMOTE tar hela datauppsättningen som indata, men det ökar procentandelen endast av de fall där det är mindre. Anta till exempel att du har en obalanserad datamängd där bara 1 % av fallen har målvärdet A (den förfallna klassen) och 99 % av fallen har värdet B. Om du vill öka procentandelen fall med mindre än dubbelt så stor som den tidigare procentandelen anger du 200 som SMOTE-procent i modulens egenskaper.

Exempel

Vi rekommenderar att du provar att använda SMOTE med en liten datamängd för att se hur den fungerar. I följande exempel används datamängden Blood Dataset som finns i Machine Learning Studio (klassisk).

Om du lägger till datauppsättningen i ett experiment och klickar på Visualisera i datauppsättningens utdata kan du se att av de 748 raderna eller ärendena i datauppsättningen finns det 570 ärenden (76 %) av klass 0 och 178 fall (24 %) av klass 1. Även om den här obalansen inte uppstår så representerar klass 1 de personer som doneradepöd, och därför innehåller dessa rader det funktionsutrymme som du vill modellera.

Om du vill öka antalet ärenden kan du ange värdet för SMOTE-procent med hjälp av multiplar av 100, enligt följande:

Klass 0 Klass 1 totalt
Ursprunglig datamängd

(motsvarar SMOTE-procent = 0)
570

76%
178

24%
748
SMOTE-procent = 100 570

62%
356

38%
926
SMOTE-procent = 200 570

52 %
534

48%
1104
SMOTE-procent = 300 570

44%
712

56%
1282

Varning

Att öka antalet fall med SMOTE är inte garanterat att skapa mer exakta modeller. Du bör prova att experimentera med olika procentandelar, olika funktionsuppsättningar och olika antal närmaste grannar för att se hur tillägg av ärenden påverkar din modell.

Så här konfigurerar du SMOTE

  1. Lägg till SMOTE-modulen i experimentet. Du hittar modulen under Moduler för datatransformering i kategorin manipulering.

  2. Anslut den datauppsättning som du vill höja. Om du vill ange funktionsutrymmet för att skapa de nya fallen, antingen genom att endast använda specifika kolumner eller genom att exkludera vissa, använder du modulen Välj kolumner i datamängd för att isolera de kolumner som du vill använda innan du använder SMOTE.

    Annars baseras skapandet av nya ärenden med SMOTEalla kolumner som du anger som indata.

  3. Kontrollera att kolumnen som innehåller etiketten eller målklassen är markerad som sådan.

    Om det inte finns någon etikettkolumn använder du modulen Redigera metadata för att välja den kolumn som innehåller klassetiketterna och väljer Etikett i listrutan Fält.

  4. SMOTE-modulen identifierar automatiskt den klassificerade beteckningsklassen i etikettkolumnen och hämtar sedan alla exempel på den klassificerade beteckningsklassen.

  5. I alternativet SMOTE percentage (SMOTE-procent ) anger du ett helt antal som anger målprocenten för fall med mindre fall i utdatauppsättningen. Till exempel:

    • Du skriver 0 (%). SMOTE-modulen returnerar exakt samma datauppsättning som du angav som indata, och lägger inte till några nya fall av förfallomål. I den här datamängden har klassandelen inte ändrats.

    • Du skriver 100 (%). SMOTE-modulen genererar nya fall med fall av ofarliga fall som fanns i den ursprungliga datamängden. Eftersom SMOTE inte ökar antalet majoritetsfall har andelen fall av varje klass nu ändrats.

    • Du skriver 200 (%). Modulen fördubblar procentandelen fall av förfallomål jämfört med den ursprungliga datamängden. Detta leder inte till att det finns dubbelt så många fall av allvarliga problem som tidigare. I stället ökar datamängdens storlek på ett sådant sätt att antalet majoritetsfall förblir detsamma och antalet fall med lägre antal fall ökar tills det matchar önskat procentvärde.

    Anteckning

    Använd endast multiplar av 100 som SMOTE-procent.

  6. Använd alternativet Antal närmaste grannar för att fastställa storleken på det funktionsutrymme som SMOTE-algoritmen använder när nya fall byggs. En närmaste granne är en rad med data (ett ärende) som liknar något målfall. Avståndet mellan två fall mäts genom att kombinera viktade vektorer för alla funktioner.

    • Genom att öka antalet närmaste grannar får du funktioner från fler fall.
    • Genom att hålla antalet närmaste grannar lågt använder du funktioner som är mer som de i det ursprungliga urvalet.
  7. Skriv ett värde i textrutan Random seed (Slumpmässigt startvärde) om du vill säkerställa samma resultat för körningar av samma experiment med samma data. Annars genererar modulen ett slumpmässigt startvärde baserat på processorklockans värden när experimentet distribueras, vilket kan orsaka något olika resultat över körningar.

  8. Kör experimentet.

    Utdata från modulen är en datamängd som innehåller de ursprungliga raderna plus ett antal tillagda rader med fall av fall där antalet är begränsat.

Tips

Om du vill ta reda på vilka nya rader som har lagts till kan du använda modulerna Tillämpa SQL transformeringeller Koppla data.

Teknisk information

  • När du publicerar en modell som använder SMOTE-modulen tar du bort SMOTE från förutsägelseexperimentet innan det publiceras som en webbtjänst. Orsaken är att SMOTE är avsett att förbättra en modell under träning och inte är avsedd för bedömning. Du kan få ett felmeddelande om ett publicerat förutsägelseexperiment innehåller SMOTE-modulen.

  • Du kan ofta få bättre resultat om du använder rensning av värden som saknas eller andra omvandlingar för att åtgärda data innan du tillämpar SMOTE.

  • Vissa forskare har undersökt om SMOTE är effektivt på högdimensionella eller glesa data, till exempel de som används i textklassificering eller genomikdatamängder. Det här dokumentet innehåller en bra sammanfattning av effekterna och den teoretiska giltigheten med att tillämpa SMOTE i sådana fall: Blaji och Lusa: SMOTE för data med hög dimensionella obalanserade klasser

    Om SMOTE inte är effektivt i din datauppsättning kan andra metoder som du kan överväga omfatta olika metoder för att översampla de avvikande fallen eller undersampla majoritetsfallen, samt ensembletekniker som hjälper eleven direkt med hjälp av klustring, bagging eller adaptiv ökning.

Förväntade indata

Namn Typ Description
Exempel Datatabell En datauppsättning med exempel

Modulparametrar

Name Intervall Typ Standardvärde Description
SMOTE-procent >= 0 Integer 100 Mängd översampling i multiplar av 100.
Antal närmaste grannar >= 1 Integer 1 Antalet närmaste grannar som funktioner ska ritas från för nya ärenden
Slumpmässigt start seed Valfri Integer 0 Start seed för slumptalsgeneratorn

Utdata

Namn Typ Description
Tabell Datatabell En datatabell som innehåller de ursprungliga urvalen plus ytterligare ett antal syntetiska ursprungsklassexempel. Antalet nya urval är (smotePercent/100)*T, där T är antalet urval av beständiga klasser.

Se även

Exempel och delning
A-Z-modullista