SMOTE

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

U verbindt het ONDERDEEL SMOTE met een gegevensset die onevenwichtig is. Er zijn veel redenen waarom een gegevensset onevenwichtig kan zijn. De categorie waarop u zich richt, kan bijvoorbeeld zeldzaam zijn 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 minderheidsstalen, afhankelijk van het percentage dat u opgeeft.

Meer over SMOTE

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

De nieuwe exemplaren zijn niet alleen kopieën van bestaande minderheidszaken. 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 functies van de buren. Deze aanpak vergroot 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) 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

We raden u aan smote te gebruiken met een kleine gegevensset om te zien hoe het werkt. In het volgende voorbeeld wordt de gegevensset Bloeddonatie gebruikt die beschikbaar is in azure Machine Learning Designer.

Als u de gegevensset toevoegt aan een pijplijn en Visualiseren 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 178 cases (24 procent) van klasse 1. 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 PERCENTAGE SMOTE als volgt instellen door veelvouden van 100 te gebruiken:

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%
1,104
SMOTE-percentage = 300 570

44%
712

56%
1,282

Waarschuwing

Het verhogen van het aantal gevallen door gebruik te maken 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 ONDERDEEL SMOTE toe aan uw pijplijn. U vindt het onderdeel onder Onderdelen van gegevenstransformatie in de categorie Manipulatie .

  2. Maak verbinding met de gegevensset die u wilt verbeteren. Als u de functieruimte voor het bouwen van de nieuwe cases wilt opgeven, door alleen specifieke kolommen te gebruiken 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 wordt het maken van nieuwe cases 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 voor de minderheidsklasse op. Niet alle kolommen mogen NaN-waarden bevatten.

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

    • U voert 0 in. Het onderdeel SMOTE retourneert precies dezelfde gegevensset die u als invoer hebt opgegeven. Er worden geen nieuwe minderheidszaken toegevoegd. In deze gegevensset is de klasseverhouding niet gewijzigd.

    • U voert 100 in. De SMOTE-component genereert nieuwe minderheidszaken. Hiermee wordt hetzelfde aantal minderheidsgevallen toegevoegd als in de oorspronkelijke gegevensset. Omdat SMOTE het aantal meerderheidszaken 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 minderheidszaken als voorheen. In plaats daarvan wordt de grootte van de gegevensset zodanig vergroot dat het aantal gevallen in de meeste gevallen hetzelfde blijft. Het aantal minderheidsgevallen wordt verhoogd totdat het overeenkomt met de gewenste percentagewaarde.

    Notitie

    Gebruik alleen veelvouden van 100 voor het PERCENTAGE SMOTE.

  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 cases. Een dichtstbijzijnde buur is een rij 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 cases.
    • 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 Willekeurig seed in als u wilt zorgen voor dezelfde resultaten voor uitvoeringen van dezelfde pijplijn met dezelfde gegevens. Anders genereert het onderdeel een willekeurige seed op basis van klokwaarden van de processor wanneer de pijplijn wordt geïmplementeerd. Het genereren van een willekeurige seed kan leiden tot iets andere resultaten 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 opmerkingen

  • 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 is dat SMOTE is bedoeld voor het verbeteren van een model tijdens de training, niet voor het scoren. Er kan een fout optreden 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 hoogdimensionale of sparse gegevens, zoals gegevens die worden gebruikt in tekstclassificatie of genomics-gegevenssets. Dit artikel bevat een goede samenvatting 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, zijn andere benaderingen die u kunt overwegen:

    • Methoden voor het oversampling van de minderheidsgevallen of het ondersampen van de meerderheidsgevallen.
    • 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.