Delen via


SMOTE

In dit artikel wordt beschreven hoe u het SMOTE-onderdeel in de Azure Machine Learning-ontwerpfunctie gebruikt om het aantal ondervertegenwoordigde gevallen in een gegevensset te verhogen die wordt gebruikt voor machine learning. SMOTE is een betere manier om het aantal zeldzame gevallen te verhogen dan alleen maar bestaande gevallen te dupliceren.

U verbindt het SMOTE-onderdeel met een gegevensset die onevenwichtig is. Er zijn veel redenen waarom een gegevensset mogelijk onevenwichtig is. De categorie waarop u zich richt, kan bijvoorbeeld zelden voorkomen in de populatie of de gegevens zijn moeilijk te verzamelen. Normaal gesproken gebruikt u SMOTE wanneer de klasse die u wilt analyseren ondervertegenwoordigd is.

Het onderdeel retourneert een gegevensset die de oorspronkelijke voorbeelden bevat. Het retourneert ook een aantal synthetische minderheidsmonsters, afhankelijk van het percentage dat u opgeeft.

Meer informatie over SMOTE

Synthetic Minority Oversampling Technique (SMOTE) is een statistische techniek om het aantal gevallen in uw gegevensset op een evenwichtige manier te vergroten. Het onderdeel werkt door nieuwe exemplaren te genereren van bestaande minderheidscases die u als invoer opgeeft. Deze implementatie van SMOTE verandert niet het aantal meerderheidsgevallen.

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

SMOTE neemt de volledige gegevensset als invoer, maar verhoogt het percentage van alleen de minderheidsgevallen. Stel dat u een onevenwichtige gegevensset hebt waarbij slechts 1 procent van de gevallen de doelwaarde A (de minderheidsklasse) heeft en 99 procent van de gevallen de waarde B heeft. Als u het percentage minderheidsgevallen wilt verhogen tot twee keer het vorige percentage, voert u 200 in voor HET PERCENTAGE SMOTE in de eigenschappen van het onderdeel.

Voorbeelden

U wordt aangeraden SMOTE te gebruiken met een kleine gegevensset om te zien hoe deze werkt. In het volgende voorbeeld wordt de gegevensset Bloeddonatie gebruikt die beschikbaar is in de Azure Machine Learning-ontwerpfunctie.

Als u de gegevensset toevoegt aan een pijplijn en Visualize selecteert in de uitvoer van de gegevensset, ziet u dat van de 748 rijen of cases in de gegevensset 570 cases (76 procent) klasse 0 zijn en dat 178 gevallen (24 procent) van klasse 1 zijn. Hoewel dit resultaat niet erg onevenwichtig is, vertegenwoordigt klasse 1 de mensen die bloed hebben gedoneerd, dus deze rijen bevatten de functieruimte die u wilt modelleren.

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

Klasse 0 Klasse 1 total
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%
1,282

Waarschuwing

Het verhogen van het aantal gevallen met behulp van SMOTE is niet gegarandeerd om nauwkeurigere modellen te produceren. Probeer pipelining 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 het SMOTE-onderdeel toe aan uw pijplijn. U vindt het onderdeel onder Onderdelen voor gegevenstransformatie in de categorie Manipulatie .

  2. Verbind de gegevensset die u wilt verbeteren. Als u de functieruimte wilt opgeven voor het bouwen van de nieuwe gevallen, hetzij met behulp van alleen specifieke kolommen of door sommige uit te sluiten, gebruikt u het onderdeel Kolommen selecteren in gegevensset . Vervolgens kunt u de kolommen isoleren die u wilt gebruiken voordat u SMOTE gebruikt.

    Anders is het maken van nieuwe aanvragen via SMOTE gebaseerd op alle kolommen die u als invoer opgeeft. Ten minste één kolom van de functiekolommen is numeriek.

  3. Zorg ervoor dat de kolom met het label of de doelklasse is geselecteerd. SMOTE accepteert alleen binaire labels.

  4. Het ONDERDEEL SMOTE identificeert automatisch de minderheidsklasse in de labelkolom en haalt vervolgens alle voorbeelden op voor de minderheidsklasse. Alle kolommen kunnen geen NaN-waarden hebben.

  5. Voer in de optie SMOTE-percentage een geheel getal in dat het doelpercentage van minderheidsgevallen in de uitvoergegevensset aangeeft. Voorbeeld:

    • U voert 0 in. Het ONDERDEEL SMOTE retourneert precies dezelfde gegevensset die u hebt opgegeven als invoer. Er worden geen nieuwe minderheidsgevallen toegevoegd. In deze gegevensset is het klassepercentage niet gewijzigd.

    • U voert 100 in. Het ONDERDEEL SMOTE genereert nieuwe minderheidszaken. Hiermee wordt hetzelfde aantal minderheidsgevallen toegevoegd dat zich in de oorspronkelijke gegevensset bevindt. Omdat SMOTE het aantal meerderheidsgevallen niet verhoogt, is het aandeel gevallen van elke klasse gewijzigd.

    • U voert 200 in. Het onderdeel verdubbelt het percentage minderheidsgevallen in vergelijking met de oorspronkelijke gegevensset. Dit leidt niet tot twee keer zoveel minderheidsgevallen als voorheen. In plaats daarvan wordt de grootte van de gegevensset zodanig verhoogd dat het aantal meeste gevallen hetzelfde blijft. Het aantal minderheidsgevallen 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 door het SMOTE-algoritme wordt gebruikt bij het bouwen van nieuwe gevallen. Een dichtstbijzijnde buur is een rij met gegevens (een case) die vergelijkbaar is met een doelcase. De afstand tussen twee gevallen 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 lijken op die in het oorspronkelijke voorbeeld.
  7. Voer een waarde in het vak Willekeurige seed in als u dezelfde resultaten wilt controleren op uitvoeringen van dezelfde pijplijn, met dezelfde gegevens. Anders genereert het onderdeel een willekeurige seed op basis van processorklokwaarden wanneer de pijplijn wordt geïmplementeerd. Het genereren van een willekeurig zaad kan enigszins verschillende resultaten veroorzaken tijdens uitvoeringen.

  8. Verzend de pijplijn.

    De uitvoer van het onderdeel is een gegevensset die de oorspronkelijke rijen plus een aantal toegevoegde rijen met minderheidsgevallen bevat.

Technische notities

  • Wanneer u een model publiceert dat gebruikmaakt van het ONDERDEEL SMOTE, verwijdert u SMOTE uit de voorspellende pijplijn voordat het wordt gepubliceerd als een webservice. De reden hiervoor is dat SMOTE is bedoeld voor het verbeteren van een model tijdens de training, niet voor scoren. Mogelijk krijgt u een fout als een gepubliceerde voorspellende pijplijn het ONDERDEEL SMOTE bevat.

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

  • Sommige onderzoekers hebben onderzocht of SMOTE effectief is op high-dimensionale of parse gegevens, zoals gegevens die worden gebruikt in tekstclassificatie of genomics-gegevenssets. Dit document bevat een goed overzicht van de effecten en van de theoretische geldigheid van het toepassen van SMOTE in dergelijke gevallen: Blagus en Lusa: SMOTE voor high-dimensionale klasse-onevenwichtige gegevens.

  • Als SMOTE niet effectief is in uw gegevensset, kunt u het volgende overwegen:

    • Methoden voor het oversamplen van de minderheidsgevallen of het ondersamplen van de meeste gevallen.
    • Ensembletechnieken die de cursist rechtstreeks helpen door clustering, bagging of adaptieve boost te gebruiken.

Volgende stappen

Bekijk de set onderdelen die beschikbaar zijn voor Azure Machine Learning.