Delen via


SMOTE

Belangrijk

De ondersteuning voor Azure Machine Learning-studio (klassiek) eindigt op 31 augustus 2024. U wordt aangeraden om vóór die datum over te stappen naar Azure Machine Learning.

Vanaf 1 december 2021 kunt u geen nieuwe resources voor Azure Machine Learning-studio (klassiek) meer maken. Tot en met 31 augustus 2024 kunt u de bestaande resources van Azure Machine Learning-studio (klassiek) blijven gebruiken.

De documentatie van ML-studio (klassiek) wordt buiten gebruik gesteld en wordt in de toekomst mogelijk niet meer bijgewerkt.

Verhoogt het aantal voorbeelden met weinig incidenten in een gegevensset met synthetische oversampling

Categorie: Gegevenstransformatie/manipulatie

Notitie

Van toepassing op: Machine Learning Studio (klassiek)

Vergelijkbare modules met slepen en neerzetten zijn beschikbaar in Azure Machine Learning designer.

Moduleoverzicht

In dit artikel wordt beschreven hoe u de SMOTE-module in Machine Learning Studio (klassiek) gebruikt om het aantal te kleine gevallen in een gegevensset die wordt gebruikt voor machine learning. SMOTE is een betere manier om het aantal zeldzame gevallen te verhogen dan alleen bestaande gevallen te dupliceren.

U verbindt de SMOTE-module met een gegevensset die niet in balans is. Er zijn veel redenen waarom een gegevensset niet in balans kan zijn: de categorie die u als doel hebt, kan zeer zeldzaam zijn in de populatie, of de gegevens kunnen eenvoudig moeilijk te verzamelen zijn. Normaal gesproken gebruikt u SMOTE wanneer de klasse die u wilt analyseren, te klein is.

De module retourneert een gegevensset die de oorspronkelijke voorbeelden bevat, plus een extra aantal synthetische steekproeven, afhankelijk van het percentage dat u opgeeft.

Meer informatie over SMOTE

SMOTE staat voor Synthetische oversamplingstechniek voor synthetische oversampling. Dit is een statistische techniek om het aantal cases in uw gegevensset op een evenwichtige manier te verhogen. De module werkt door nieuwe exemplaren te genereren op basis van bestaande cases die u als invoer oplevert. Deze implementatie van SMOTE wijzigt het aantal meerderheidsgevallen niet.

De nieuwe exemplaren zijn niet alleen kopieën van bestaande cases; In plaats daarvan neemt het algoritme voorbeelden van de functieruimte voor elke doelklasse en de dichtstbijzijnde buren en genereert het nieuwe voorbeelden die functies van de doelcase combineren met kenmerken van de aangrenzende klasse. Deze aanpak verhoogt de functies die beschikbaar zijn voor elke klasse en maakt de voorbeelden algemener.

SMOTE gebruikt de hele gegevensset als invoer, maar verhoogt het percentage van alleen de kleine cases. Stel dat u een onevenwichtige gegevensset hebt waarbij slechts 1% van de cases de doelwaarde A (de klasse van de kinderen) heeft en 99% van de gevallen de waarde B heeft. Als u het percentage kleine cases wilt verhogen tot twee keer het vorige percentage, voert u 200 voor SMOTE-percentage in de eigenschappen van de module in.

Voorbeelden

We raden u aan SMOTE te gebruiken met een kleine gegevensset om te zien hoe deze werkt. In het volgende voorbeeld wordt de gegevensset Bloedonderzoek gebruikt die beschikbaar is in Machine Learning Studio (klassiek).

Als u de gegevensset aan een experiment toevoegt en klikt op Visualiseren op de uitvoer van de gegevensset, ziet u dat er van de 748 rijen of cases in de gegevensset 570 cases (76%) van klasse 0 en 178 cases (24%) van klasse 1 zijn. Hoewel dit niet erg onevenwichtig is, vertegenwoordigt klasse 1 de personen die bloed hebben doneerd en bevatten deze rijen dus de functieruimte die u wilt modelleren.

Als u het aantal cases wilt verhogen, kunt u als volgt de waarde van smote-percentage instellen met behulp van veelvouden van 100:

Klasse 0 Klasse 1 totaal
Oorspronkelijke gegevensset

(gelijk aan SMOTE-percentage = 0)
570

76%
178

24%
748
SMOTE-percentage = 100 570

62%
356

38%
926
SMOTE-percentage = 200 570

52%
534

48%
1104
SMOTE-percentage = 300 570

44%
712

56%
1282

Waarschuwing

Het verhogen van het aantal gevallen met SMOTE is niet gegarandeerd nauwkeurigere modellen te produceren. Probeer te experimenteren met verschillende percentages, verschillende functiesets en verschillende aantallen dichtstbijzijnde buren om te zien hoe het toevoegen van cases van invloed is op uw model.

SMOTE configureren

  1. Voeg de SMOTE-module toe aan uw experiment. U vindt de module onder Modules voor gegevenstransformatie in de manipulatiecategorie.

  2. Verbinding maken de gegevensset die u wilt verbeteren. Als u de functieruimte wilt opgeven voor het bouwen van de nieuwe cases, door alleen specifieke kolommen te gebruiken of door enkele uit te sluiten, gebruikt u de module Kolommen in gegevensset selecteren om de kolommen te isoleren die u wilt gebruiken voordat u SMOTE gebruikt.

    Anders wordt het maken van nieuwe cases met SMOTEgebaseerd op alle kolommen die u als invoer op geeft.

  3. Zorg ervoor dat de kolom met het label of de doelklasse als zodanig is gemarkeerd.

    Als er geen labelkolom is, gebruikt u de module Edit Metadata om de kolom met de klasselabels te selecteren en selecteert u Labelin de vervolgkeuzelijst Velden.

  4. De SMOTE-module identificeert automatisch de klasse class class class in de labelkolom en haalt vervolgens alle voorbeelden op voor de klasse .

  5. In de optie SMOTE-percentage typt u een geheel getal dat het doelpercentage van de kleine cases in de uitvoerset aangeeft. Bijvoorbeeld:

    • U typt 0 (%). De SMOTE-module retourneert exact dezelfde gegevensset die u hebt opgegeven als invoer, zonder nieuwe cases toe te voegen. In deze gegevensset is het klasseverhouding niet gewijzigd.

    • U typt 100 (%). De SMOTE-module genereert nieuwe kleine cases, waarbij hetzelfde aantal kleine cases wordt toegevoegd als in de oorspronkelijke gegevensset. Omdat SMOTE het aantal meerderheidsgevallen niet verhoogt, is het aandeel cases van elke klasse nu gewijzigd.

    • U typt 200 (%). In de module wordt het percentage kleine cases verdubbeld ten opzichte van de oorspronkelijke gegevensset. Dit leidt er niet toe dat er twee keer zoveel kleine gevallen zijn als voorheen. In plaats van dat de grootte van de gegevensset zodanig wordt verhoogd dat het aantal cases in de meeste gevallen hetzelfde blijft en het aantal cases wordt verhoogd totdat deze overeenkomt met de gewenste percentagewaarde.

    Notitie

    Gebruik slechts veelvouden van 100 voor het SMOTE-percentage.

  6. Gebruik de optie Aantal dichtstbijzijnde buren om de grootte te bepalen van de functieruimte die het SMOTE-algoritme gebruikt bij het bouwen van nieuwe cases. Een dichtstbijzijnde buur is een rij met gegevens (een geval) die erg lijkt op een doelgeval. De afstand tussen twee cases wordt gemeten door de gewogen vectoren van alle kenmerken te combineren.

    • Door het aantal dichtstbijzijnde buren te verhogen, krijgt u functies uit meer gevallen.
    • Door het aantal dichtstbijzijnde buren laag te houden, gebruikt u functies die meer lijkt op die in de oorspronkelijke steekproef.
  7. Typ een waarde in het tekstvak Willekeurige seed als u dezelfde resultaten wilt garanderen voor de runs van hetzelfde experiment, met dezelfde gegevens. Anders genereert de module een willekeurige seed op basis van processor clock waarden wanneer het experiment wordt geïmplementeerd, wat kan leiden tot iets andere resultaten over runs.

  8. Voer het experiment uit.

    De uitvoer van de module is een gegevensset die de oorspronkelijke rijen bevat, plus een aantal toegevoegde rijen met in totaal gevallen.

Tip

Als u wilt weten welke nieuwe rijen zijn toegevoegd, kunt u de modules Apply SQL Transformation of Join Data gebruiken.

Technische opmerkingen

  • Wanneer u een model publiceert dat gebruikmaakt van de SMOTE-module , verwijdert u SMOTE uit het voorspellende experiment voordat het wordt gepubliceerd als een webservice. De reden hiervoor is dat SMOTE is bedoeld voor het verbeteren van een model tijdens de training en niet is bedoeld voor scoren. Mogelijk krijgt u een foutmelding als een gepubliceerd voorspellend experiment de SMOTE-module bevat.

  • U kunt vaak betere resultaten krijgen als u ontbrekende waarden opschoont of andere transformaties gebruikt om gegevens op te lossen voordat u SMOTE gaat toepassen.

  • Sommige onderzoekers hebben onderzocht of SMOTE effectief is op hoogdimensionale of verspreide gegevens, zoals gegevens die worden gebruikt in tekstclassificatie of genomics-gegevenssets. Dit document geeft een goed overzicht van de effecten en de theoretische geldigheid van het toepassen van SMOTE in dergelijke gevallen: Blaore en Lusa: SMOTE voor high-dimensional class-imbalanced gegevens

    Als SMOTE niet effectief is in uw gegevensset, zijn andere methoden die u kunt overwegen verschillende methoden voor het oversampen van de hoofdgevallen of het ondersampen van de hoofdgevallen, evenals ensembletechnieken die de leerlingen rechtstreeks helpen, door gebruik te maken van clustering, bagging of adaptieve boosting.

Verwachte invoer

Naam Type Description
Voorbeelden Gegevenstabel Een gegevensset met voorbeelden

Moduleparameters

Name Bereik Type Standaard Beschrijving
SMOTE-percentage >= 0 Geheel getal 100 Hoeveelheid oversampling in veelvouden van 100.
Aantal dichtstbijzijnde buren >= 1 Geheel getal 1 Het aantal dichtstbijzijnde buren van waaruit kenmerken voor nieuwe gevallen moeten worden tekenen
Willekeurige seed Alle Geheel getal 0 Seed voor de generator voor willekeurige getallen

Uitvoer

Naam Type Description
Tabel Gegevenstabel Een gegevenstabel met de oorspronkelijke voorbeelden plus een extra aantal synthetische klassevoorbeelden. Het aantal nieuwe steekproeven is (smotePercent/100)*T, waarbij T het aantal klassevoorbeelden is.

Zie ook

Voorbeeld en splitsen
Lijst met A-Z-modules