Pytlování, posilování a stohování ve strojovém učení

Jaké jsou podobnosti a rozdíly mezi těmito 3 metodami:

  • Bagging,
  • Posilování,
  • skládání?

Který je nejlepší? A proč?

Můžete mi dát příklad pro každého?

Komentáře

  • pro odkaz na učebnici doporučuji: “ Metody souboru: nadace a algoritmy “ od Zhoua, Zhi-Hua
  • viz zde související otázku .

Odpověď

Všechny tři jsou takzvané „meta-algoritmy“: přístupy kombinující několik technik strojového učení do jednoho prediktivního modelu za účelem snížení rozptylu ( pytlování ), zkreslení ( zesílení ) nebo zlepšení prediktivní síly ( stohování alias soubor ).

Každý algoritmus se skládá ze dvou kroků:

  1. Produkce distr použití jednoduchých modelů ML na podmnožiny původních dat.

  2. Kombinace distribuce do jednoho „agregovaného“ modelu.

Zde je krátký popis všech tří metod:

  1. Bagging (zkratka pro B ootstrap Agg regat ing ) je způsob, jak snížit rozptyl vaší predikce generováním dalších dat pro trénink z vaší původní datové sady pomocí kombinací s opakováním k vytvoření multisetů stejné mohutnosti / velikosti jako vaše původní data. Zvětšením tréninkové sady nemůžete vylepšit prediktivní sílu modelu, ale pouze zmenšit rozptyl a úzce vyladit předpověď na očekávaný výsledek.

  2. Posilování je dvoustupňový přístup, kde se jako první používají podmnožiny aby původní data vytvořila řadu průměrně výkonných modelů a poté „zvýšila“ jejich výkonnost jejich kombinací pomocí určité nákladové funkce (= většina hlasů). Na rozdíl od pytlování v klasické zesílení vytvoření podmnožiny není náhodné a závisí na výkonu předchozích modelů: každá nová podmnožina obsahuje prvky, které byly (pravděpodobně budou) chybně klasifikovány předchozími modely.

  3. Skládání je podobné jako podpora : na původní data použijete také několik modelů. Rozdíl je v tom, nicméně, že nemáte jen empirický vzorec pro svoji váhovou funkci, spíše zavedete metaúroveň a použijete jiný model / přístup k odhadu vstupu společně s výstupy každého modelu k odhadu vah, nebo jinými slovy k určení, které modely fungují dobře a co špatně vzhledem k těmto vstupním údajům.

Zde je srovnávací tabulka:

Srovnávací tabulka

Jak vidíte, jedná se o různé přístupy ke kombinování několika modelů do lepšího a existuje zde není jediný vítěz: vše závisí na vaší doméně a na tom, co budete dělat. S stohováním můžete stále zacházet jako s jakýmsi dalším pokrokem posilováním , ale obtížnost nalezení dobrého přístupu pro vaši metaúrovnu ztěžuje použití tohoto přístupu v praxi .

Krátké příklady každého z nich:

  1. Bagging : Údaje o ozónu .
  2. Posílení : slouží ke zlepšení přesnosti optického rozpoznávání znaků (OCR).
  3. Stacking : se používá v klasifikaci rakovinových mikročipů v medicíně.

Komentáře

  • Zdá se, že vaše definice podpory se liší od definice ve wiki (na kterou jste odkazovali) nebo v tomto příspěvku . Oba říkají, že při posilování dalšího klasifikátoru se používají výsledky dříve trénovaných, ale nezmiňovali jste to ‚. Metoda, kterou popisujete na druhou stranu, se podobá některým technikám průměrování hlasování / modelování.
  • @ a-rodin: Děkuji za poukázání na tento důležitý aspekt, tuto část jsem zcela přepsal, abych to lépe odrážela. Pokud jde o vaši druhou poznámku, chápu, že podpora je také typem hlasování / průměrování, nebo jsem vám rozuměl špatně?
  • @AlexanderGalkin Měl jsem na mysli podporu přechodu v době komentování: ne ‚ Vypadá to jako hlasování, ale spíše jako technika iterativní aproximace funkcí. Nicméně např. AdaBoost vypadá spíš jako hlasování, takže o tom nebudu ‚ polemizovat.
  • Ve své první větě říkáte, že Boosting snižuje zkreslení, ale ve srovnávací tabulce říkáte zvyšuje prediktivní sílu.Jsou oba pravdivé?

Odpověď

Pytlování :

  1. paralelní soubor: každý model je vytvořen samostatně

  2. cílem je snížit odchylku , nikoli zkreslení

  3. vhodné pro modely s vysokou odchylkou a nízkou odchylkou (složité modely)

  4. příklad metodou založenou na stromech je náhodný les , který vyvíjí plně vzrostlé stromy (všimněte si, že RF upravuje postup pěstování, aby se snížila korelace mezi stromy)

Posílení :

  1. sekvenční soubor: zkuste přidat nové modely, které dobře fungují tam, kde předchozí modely chybí

  2. cílem je snížit b ias , ne variance

  3. vhodné pro modely s nízkou odchylkou a vysokou odchylkou

  4. příkladem metody založené na stromech je zvýšení gradientu

Komentáře

  • Komentování každého z bodů za účelem odpovědi proč je to tak a jak je toho dosaženo by bylo skvělé vylepšení vaší odpovědi.
  • Můžete sdílet jakýkoli dokument / odkaz, který vysvětluje, že podpora zmenšuje rozptyl a jak to dělá? Chci jen porozumět hlouběji
  • Díky Timovi, ‚ přidám později několik komentářů. @ML_Pro, z postupu podpory (např. Strana 23 v cs.cornell.edu/courses/cs578/2005fa/… ), je ‚ pochopitelné, že podpora může snížit zkreslení.

Odpovědět

Trochu rozvedeme Yuqianovu odpověď. Myšlenkou pytlování je, že když OVERFIT použijete neparametrickou regresní metodu (obvykle regresní nebo klasifikační stromy, ale může to být téměř každá neparametrická metoda), mají tendenci přecházet na vysokou odchylku, žádná (nebo nízká) zkreslení část kompromisu zkreslení / odchylky. Důvodem je, že model overfitting je velmi flexibilní (tak nízké zkreslení u mnoha převzorkování ze stejné populace, pokud byly k dispozici), ale má vysoká variabilita (pokud shromáždím vzorek a nadhodím jej, a vy shromáždíte vzorek a nadbytečně jej použijete, naše výsledky se budou lišit, protože neparametrická regrese sleduje hluk v datech). Co můžeme udělat? bootstrapping) , každý nadměrně a průměrně je dohromady. To by mělo vést ke stejnému zkreslení (nízkému), ale alespoň teoreticky zrušit některé odchylky.

Zvýšení gradientu v jeho jádru funguje s NEPARFETNÍ neparametrickými regresemi, které jsou příliš jednoduché a tudíž nejsou dostatečně flexibilní, aby popsal skutečný vztah v datech (tj. zaujatý), ale protože jsou nedostatečně přizpůsobené, mají nízkou variabilitu (při shromažďování nových datových sad byste měli tendenci získat stejný výsledek). Jak to opravujete? V zásadě platí, že pokud nejste fit, REZIDUÁLY vašeho modelu stále obsahují užitečnou strukturu (informace o populaci), takže rozšiřujete strom, který máte (nebo jakýkoli neparametrický prediktor) o strom postavený na zbytcích. To by mělo být pružnější než původní strom. Opakovaně generujete více a více stromů, každý v kroku k rozšířený o vážený strom na základě stromu přizpůsobeného zbytkům z kroku k-1. Jeden z těchto stromů by měl být optimální, takže buď skončíte vážením všech těchto stromů dohromady, nebo vyberete ten, který se jeví jako nejvhodnější. Zvýšení gradientu je tedy způsob, jak vybudovat spoustu flexibilnějších kandidátských stromů.

Stejně jako všechny neparametrické regresní nebo klasifikační přístupy funguje někdy pytlování nebo posilování skvěle, někdy je jeden nebo druhý průměrný a někdy jeden nebo jiný přístup (nebo oba) zhroucení a vypálení.

Obě tyto techniky lze také použít na regresní přístupy jiné než stromy, ale jsou nejčastěji spojeny se stromy, možná proto, že je obtížné nastavit parametry tak, aby nedocházelo k nedostatečnému nebo nadměrnému vybavení.

Komentáře

  • +1 pro argument overfit = variance, underfit = bias! Jedním z důvodů pro použití rozhodovacích stromů je, že jsou strukturálně nestabilní, a proto těží spíše z mírných změn podmínek. ( abbottanalytics.com / assets / pdf / … )

odpověď

odpověď

Stručně shrnuto: Bagging a Posílení se obvykle používají uvnitř jednoho algoritmu, zatímco skládání je obvykle slouží k shrnutí několika výsledků z různých algoritmů.

  • Pytlování : Bootstrap podmnožiny funkcí a ukázek pro získání několika předpovědí a průměr (nebo jinými způsoby) výsledky, například Random Forest, které eliminují rozptyl a nemají problém s nadměrným vybavováním.
  • Posílení : Rozdíl oproti pytlování spočívá v tom, že se pozdější model snaží naučit se chybu, kterou udělal předchozí, například GBM a XGBoost, které odstraňují rozptyl, ale mají problém s převyšováním.
  • Stohování : Normálně se používá v soutěžích, když jeden používá více algoritmů k trénování na stejné datové sadě a průměru (max. min. nebo jiné kombinace) výsledek za účelem dosažení vyšší přesnosti predikce.

Odpovědět

oba balíčky a posílení použití jediného algoritmu učení pro všechny kroky; ale při manipulaci s tréninkovými vzorky používají různé metody. oba jsou metodou učení souboru, která kombinuje rozhodnutí z více modelů
Pytlování :
1. převzorkování tréninkových dat M podmnožiny (bootstrapping);
2. trénuje M klasifikátory (stejný algoritmus) na základě M datových souborů (různé vzorky);
3. Konečný klasifikátor kombinuje M výstupů hlasováním;
váha vzorků rovnoměrně;
váha klasifikátorů stejně;
snižuje chyby zmenšením rozptylu
Posílení : zde se zaměřte na algoritmus adaboost
1. začněte se stejnou váhou pro všechny vzorky v prvním kole;
2. v následujících kolech M-1 zvyšte váhy vzorků, které jsou v posledním kole chybně klasifikovány, snižte váhy vzorků správně klasifikovaných v posledním kole
3. pomocí váženého hlasování finální klasifikátor kombinuje více klasifikátorů z předchozích kol a dává větší váhy klasifikátorům s méně chybnými klasifikacemi.
postupné vážení vzorků; váhy pro každé kolo na základě výsledků z posledního kola
opětovné zvážení vzorků (zvýšení) namísto převzorkování (pytlování).

Odpověď

Pytlování

Bootstrap AGGregatING (Bagging) je metoda generování souboru, která používá variace vzorků používaných k trénování základních klasifikátorů. Pro každý klasifikátor, který má být vygenerován, Bagging vybere (s opakováním) N vzorků z tréninkové sady s velikostí N a trénuje základní klasifikátor. Toto se opakuje, dokud není dosaženo požadované velikosti souboru.

Pytlování by mělo být používáno s nestabilními klasifikátory, tj. Klasifikátory, které jsou citlivé na odchylky v tréninkové sadě, jako jsou Rozhodovací stromy a Perceptrony.

Random Subspace je zajímavý podobný přístup, který používá variace funkcí namísto variací vzorků, které jsou obvykle označeny v datových sadách s více dimenzemi a řídkým prostorem funkcí.

Posílení

Posílení vygeneruje soubor pomocí přidání klasifikátorů , které správně klasifikují „obtížné vzorky“ . Pro každou iteraci zvyšuje aktualizace aktualizace váhy vzorků, takže vzorky, které jsou nesprávně klasifikovány souborem, mohou mít vyšší váhu, a proto vyšší pravděpodobnost, že budou vybrány pro školení nového klasifikátoru.

Posílení je zajímavý přístup, ale je velmi citlivý na hluk a je účinný pouze při použití slabých klasifikátorů. Existuje několik variant technik posilování AdaBoost, BrownBoost (…), každá z nich má své vlastní pravidlo aktualizace hmotnosti, aby se předešlo některým konkrétním problémům (hluk, nevyváženost třídy…).

Stohování

Stohování je meta-learningový přístup , ve kterém se soubor používá k „extrakci funkcí“ , které budou použity další vrstva souboru. Následující obrázek (z Průvodce sestavením Kaggle ) ukazuje, jak to funguje.

zde zadejte popis obrázku

Nejprve (dole) je pomocí cvičné sady proškoleno několik různých klasifikátorů a jejich výstupy (pravděpodobnosti) jsou slouží k trénování další vrstvy (střední vrstvy), nakonec jsou výstupy (pravděpodobnosti) klasifikátorů ve druhé vrstvě kombinovány pomocí průměru (AVG).

Existuje několik strategií využívajících křížová validace, míchání a další přístupy, aby nedocházelo k překrývání stohování. Některými obecnými pravidly je však vyhnout se takovému přístupu k malým datovým souborům a pokusit se používat různé klasifikátory, aby se mohly navzájem „doplňovat“.

Stohování bylo použito v několika soutěžích v oblasti strojového učení, jako jsou Kaggle a Top Kodér. Ve strojovém učení je to určitě nutnost.

Odpověď

Pytlování a posilování mají tendenci používat mnoho homogenních modelů.

Stohování kombinuje výsledky z heterogenních typů modelů.

Jelikož žádný typ modelu nebývá nejvhodnější pro celou distribuci, můžete vidět, proč to může zvýšit prediktivní sílu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *