SMOTE
Tento článek popisuje, jak pomocí komponenty SMOTE v návrháři služby Azure Machine Learning zvýšit počet nedostatečně reprezentovaný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 stávající případy.
Komponentu SMOTE připojíte 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 obvykle používáte, když je třída , kterou chcete analyzovat, reprezentována.
Komponenta vrátí datovou sadu, která obsahuje původní ukázky. Vrátí také řadu syntetických menšinových vzorků v závislosti na zadaném procentu.
SMOTE – podrobnější informace
Syntetická menšinová převzorkovací technika (SMOTE) je statistická technika pro zvýšení počtu případů v datové sadě vyváženým způsobem. Komponenta funguje generováním nových instancí z existujících menšinových případů, které zadáte jako vstup. Tato implementace SMOTE nemění počet většiny případů.
Nové instance nejsou jen kopiemi stávajících menšinových případů. Místo toho algoritmus přebírá ukázky 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 funkcemi jeho sousedů. Tento přístup zvyšuje funkce dostupné pro každou třídu a zobecňuje ukázky obecněji.
SMOTE přebírá jako vstup celou datovou sadu, ale zvyšuje procento pouze menšinových případů. Předpokládejme například, že máte nevyváženou datovou sadu, ve které má jen 1 procento případů cílovou hodnotu A (menšinová třída) a 99 procent případů má hodnotu B. Pokud chcete procento menšinových případů zvýšit na dvojnásobek předchozího procenta, zadáte hodnotu 200 pro procento SMOTE ve vlastnostech komponenty.
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 darů krve dostupnou v návrháři služby Azure Machine Learning.
Pokud přidáte datovou sadu do kanálu a vyberete Vizualizovat ve výstupu datové sady, uvidíte, že z 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řída 1. I když tento výsledek není příliš nevyrovnaný, 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 procentuální hodnoty SMOTE pomocí násobků 100 následujícím způsobem:
Třída 0 | Třída 1 | total | |
---|---|---|---|
Původní datová sada (ekvivalentní k Procento = SMOTE 0) |
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 |
Upozorňující
Zvýšení počtu případů pomocí SMOTE není zaručeno, že se vytvoří přesnější modely. Zkuste vytvořit kanál s různými procenty, různými sadami funkcí a různými čísly nejbližších sousedů, abyste viděli, jak přidávání případů ovlivňuje váš model.
Konfigurace SMOTE
Přidejte do kanálu komponentu SMOTE. Komponentu najdete v části Komponenty transformace dat v kategorii Manipulace .
Připojte datovou sadu, kterou chcete zvýšit. Pokud chcete určit prostor funkcí pro vytváření nových případů, a to buď pomocí konkrétních sloupců, nebo vyloučením některých, použijte komponentu Vybrat sloupce v datové sadě . Před použitím SMOTE pak můžete izolovat sloupce, které chcete použít.
Jinak vytvoření nových případů prostřednictvím SMOTE vychází ze všech sloupců, které zadáte jako vstupy. Nejméně jeden sloupec sloupců funkcí je číselný.
Ujistěte se, že je vybraný sloupec obsahující popisek nebo cílovou třídu. SMOTE přijímá pouze binární popisky.
Komponenta SMOTE automaticky identifikuje menšinovou třídu ve sloupci popisku a pak získá všechny příklady menšinové třídy. Všechny sloupce nemůžou mít hodnoty NaN.
V procentech SMOTE zadejte celé číslo, které označuje cílové procento menšinový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é menšinové případy. V této datové sadě se poměr tříd nezměnil.
Zadáte 100. Komponenta SMOTE generuje nové menšinové případy. Sečte stejný počet menšinových případů, které byly v původní datové sadě. Vzhledem k tomu, že SMOTE nezvyšuje počet případů ve většině případů, poměr případů každé třídy se změnil.
Zadáte 200. Komponenta zdvojnásobí procento menšinových případů v porovnání s původní datovou sadou. To nemá za následek dvakrát tolik případů menšin jako předtím. Místo toho je velikost datové sady zvýšena tak, aby počet většiny případů zůstal stejný. Počet menšinových případů se zvýší, dokud neodpovídá požadované procentuální hodnotě.
Poznámka:
Pro procento SMOTE použijte pouze násobky 100.
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ý je podobný cílovému případu. Vzdálenost mezi 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ž necháte minimální počet nejbližších sousedů, použijete funkce, které jsou v původním vzorku více podobné.
Pokud chcete zajistit stejné výsledky při spuštění 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 vygeneruje náhodné počáteční hodnoty na základě hodnot hodin procesoru při nasazení kanálu. Generování náhodných počátečních hodnot může způsobit mírně odlišné výsledky při spuštění.
Odešlete kanál.
Výstupem komponenty je datová sada, která obsahuje původní řádky a počet přidaných řádků s menšinovými případy.
Technické poznámky
Když publikujete model, který používá komponentu SMOTE, odeberte před publikováním jako webovou službu Z prediktivního kanálu SMOTE. Důvodem je, že SMOTE je určená ke zlepšení modelu během trénování, nikoli k bodování. Pokud publikovaný prediktivní kanál obsahuje komponentu SMOTE, může se zobrazit chyba.
Lepší výsledky můžete často získat, pokud před použitím funkce SMOTE vyčistíte chybějící hodnoty nebo použijete jiné transformace k opravě dat.
Někteří vědci prozkoumali, jestli je SMOTE efektivní u vysoce dimenzionálních nebo řídkých dat, jako jsou data použitá při klasifikaci textu nebo v datových sadách genomiky. Tento dokument má dobrý souhrn účinků a teoretické platnosti použití SMOTE v takových případech: Blagus a Lusa: SMOTE pro vysoce dimenzionální data nevyrovnaná data.
Pokud SMOTE ve vaší datové sadě není efektivní, můžete zvážit další přístupy, které byste mohli zvážit:
- Metody převzorkování menšinových případů nebo podvzorkování většiny případů.
- Techniky souborů, které pomáhají učení přímo pomocí shlukování, sáček nebo adaptivního zvýšení.
Další kroky
Podívejte se na sadu komponent dostupných pro Azure Machine Learning.