SMOTE

Tento článek popisuje, jak pomocí komponenty SMOTE v návrháři služby Azure Machine Learning zvýšit počet nedostatečně zastoupených případů v datové sadě, která se používá pro strojové učení. SMOTE je lepší způsob, jak zvýšit počet vzácných případů, než jednoduše duplikovat existující případy.

Připojíte komponentu SMOTE k datové sadě, která je nevyvážená. Existuje mnoho důvodů, proč může být datová sada nevyvážená. Například kategorie, na kterou cílíte, může být v populaci vzácná nebo může být obtížné shromažďovat data. SMOTE se obvykle používá, když je třída , kterou chcete analyzovat, nedostatečně reprezentovaná.

Komponenta vrátí datovou sadu, která obsahuje původní ukázky. Vrátí také řadu syntetických minoritních vzorků v závislosti na zadaném procentu.

Více o SMOTE

Synthetic Minority Oversampling Technique (SMOTE) je statistická technika pro vyvážené zvýšení počtu případů v datové sadě. Komponenta funguje tak, že generuje nové instance z existujících menšinových případů, které zadáte jako vstup. Tato implementace SMOTE nemění počet většinových případů.

Nové instance nejsou jen kopiemi existujících minoritních případů. Místo toho algoritmus odebírá vzorky prostoru funkcí pro každou cílovou třídu a její nejbližší sousedy. Algoritmus pak vygeneruje nové příklady, které kombinují funkce cílového případu s vlastnostmi jeho sousedů. Tento přístup zvyšuje dostupnost funkcí pro každou třídu a zobecňuje ukázky.

SMOTE přijímá jako vstup celou datovou sadu, ale zvyšuje procento pouze minoritních případů. Předpokládejme například, že máte nevyrovnanou datovou sadu, kde pouze 1 procento případů má cílovou hodnotu A (minoritní třída) a 99 % případů má hodnotu B. Pokud chcete zvýšit procento minoritních případů na dvojnásobek předchozího procenta, zadejte do vlastností komponenty hodnotu 200 pro procento SMOTE .

Příklady

Doporučujeme zkusit použít SMOTE s malou datovou sadou, abyste zjistili, jak funguje. Následující příklad používá datovou sadu Darování krve, která je k dispozici v návrháři služby Azure Machine Learning.

Pokud přidáte datovou sadu do kanálu a na výstupu datové sady vyberete Vizualizovat , uvidíte, že ze 748 řádků nebo případů v datové sadě je 570 případů (76 procent) třídy 0 a 178 případů (24 procent) je třídy 1. I když tento výsledek není příliš nevyvážený, třída 1 představuje lidi, kteří darovali krev, takže tyto řádky obsahují prostor funkcí , který chcete modelovat.

Pokud chcete zvýšit počet případů, můžete nastavit hodnotu procent SMOTE pomocí násobků 100 následujícím způsobem:

Třída 0 Třída 1 celkem
Původní datová sada

(odpovídá procentu = SMOTE0)
570

76%
178

24%
748
Procento = SMOTE 100 570

62%
356

38%
926
Procento = SMOTE 200 570

52%
534

48%
1 104
Procento = SMOTE 300 570

44%
712

56%
1,282

Upozornění

Zvýšení počtu případů pomocí SMOTE nezaručuje vytváření přesnějších modelů. Vyzkoušejte pipelining s různými procenty, různými sadami funkcí a různými počty nejbližších sousedů a zjistěte, jak přidávání případů ovlivňuje váš model.

Postup konfigurace SMOTE

  1. Přidejte komponentu SMOTE do kanálu. Komponentu najdete v části Komponenty transformace dat v kategorii Manipulace .

  2. Připojte datovou sadu, kterou chcete zvýšit. Pokud chcete určit prostor funkcí pro vytváření nových případů, buď pomocí pouze konkrétních sloupců, nebo vyloučením některých, použijte komponentu Vybrat sloupce v datové sadě . Potom můžete izolovat sloupce, které chcete použít před použitím SMOTE.

    V opačném případě je vytváření nových případů prostřednictvím SMOTE založené na všech sloupcích, které zadáte jako vstupy. Nejméně jeden sloupec sloupců funkcí je číselný.

  3. Ujistěte se, že je vybraný sloupec obsahující popisek nebo cílovou třídu. SMOTE přijímá pouze binární popisky.

  4. Komponenta SMOTE automaticky identifikuje třídu minorit ve sloupci popisku a pak získá všechny příklady pro třídu minorit. Všechny sloupce nemůžou mít hodnoty NaN.

  5. V možnosti Procento SMOTE zadejte celé číslo, které označuje cílové procento minoritních případů ve výstupní datové sadě. Příklad:

    • Zadáte 0. Komponenta SMOTE vrátí přesně stejnou datovou sadu, kterou jste zadali jako vstup. Nepřidá žádné nové případy menšiny. V této datové sadě se nezměnil poměr tříd.

    • Zadáte 100. Komponenta SMOTE generuje nové minoritní případy. Přidá stejný počet minoritních případů, které byly v původní datové sadě. Vzhledem k tomu, že funkce SMOTE nezvyšuje počet většinových případů, změnil se podíl případů každé třídy.

    • Zadáte 200. Komponenta zdvojnásobí procento minoritních případů v porovnání s původní datovou sadou. To nemá za následek dvakrát tolik menšinových případů jako předtím. Místo toho se velikost datové sady zvětší takovým způsobem, že počet většinových případů zůstane stejný. Počet minoritních případů se zvyšuje, dokud neodpovídá požadované procentuální hodnotě.

    Poznámka

    Pro procento SMOTE používejte pouze násobky 100.

  6. Pomocí možnosti Počet nejbližších sousedů určete velikost prostoru funkcí, který algoritmus SMOTE používá při vytváření nových případů. Nejbližší soused je řádek dat (případ), který se podobá cílovému případu. Vzdálenost mezi libovolnými dvěma případy se měří kombinací vážených vektorů všech vlastností.

    • Zvýšením počtu nejbližších sousedů získáte funkce z více případů.
    • Když zachováte nízký počet nejbližších sousedů, použijete funkce, které se více podobají těm v původní ukázce.
  7. Pokud chcete zajistit stejné výsledky při spuštěních stejného kanálu se stejnými daty, zadejte hodnotu do pole Náhodné počáteční hodnoty. V opačném případě komponenta při nasazení kanálu vygeneruje náhodné počáteční hodnoty na základě hodnot hodin procesoru. Generování náhodného semene může způsobit mírně odlišné výsledky v průběhu běhů.

  8. Odešlete kanál.

    Výstupem komponenty je datová sada, která obsahuje původní řádky a počet přidaných řádků s minoritními případy.

Technické poznámky

  • Při publikování modelu, který používá komponentu SMOTE , odeberte SMOTE z prediktivního kanálu předtím, než se publikuje jako webová služba. Důvodem je, že funkce SMOTE je určená ke zlepšení modelu během trénování, ne k bodování. Pokud publikovaný kanál prediktivního vkládání obsahuje komponentu SMOTE, může dojít k chybě.

  • Často můžete dosáhnout lepších výsledků, pokud před použitím SMOTE vyčistíte chybějící hodnoty nebo použijete jiné transformace k opravě dat.

  • Někteří výzkumníci zkoumali, jestli je SMOTE efektivní u vysoce dimenzionálních nebo řídkých dat, jako jsou data používaná při klasifikaci textu nebo v datových sadách genomiky. Tento dokument obsahuje dobré shrnutí účinků a teoretické platnosti použití SMOTE v takových případech: Blagus a Lusa: SMOTE pro vysokodimenzionální data s nevyváženou třídou.

  • Pokud SMOTE není v datové sadě efektivní, můžete zvážit další přístupy:

    • Metody převzorkování menšinových případů nebo nedostatečného převzorkování většinových případů.
    • Techniky ensemble, které pomáhají přímo žáku pomocí clusteringu, baggingu nebo adaptivního posílení.

Další kroky

Podívejte se na sadu komponent dostupných pro Azure Machine Learning.