Posilnenie a zbalenie: Ako vyvinúť robustný algoritmus strojového učenia

Strojové učenie a veda o údajoch vyžadujú viac ako len hádzanie údajov do knižnice Python a využitie všetkého, čo vyjde

Bootstrapping / Vrecovanie / Podpora

Strojové učenie a veda o údajoch vyžadujú viac ako len hádzanie údajov do knižnice Python a využitie všetkého, čo vyjde.

Vedci údajov musia skutočne porozumieť údajom a procesom, ktoré sú za nimi, aby mohli implementovať úspešný systém.

Jednou z kľúčových metodológií implementácie je vedieť, kedy by model mohol mať úžitok z využívania metód zavádzania systému. To sa nazýva kompletné modely. Niektoré príklady súborových modelov sú AdaBoost a Stochastic Gradient Boosting.

Prečo používať komplikované modely?

Môžu pomôcť vylepšiť presnosť algoritmu alebo vylepšiť model. Dva príklady sú posilňovanie a balenie do vrecka. Podpora a vrecovanie sú témy, ktoré musia vedci údajov a technici strojového učenia poznať, najmä ak plánujete pohovor s údajmi / strojovým učením.

V zásade je kompletné učenie pravdivé slovu ensemble. Okrem toho, že namiesto toho, aby niekoľko ľudí spievalo v rôznych oktávach, vytvárali jednu krásnu harmóniu (každá hlasová výplň je prázdna druhej), učenie v rámci súboru používa stovky až tisíce modelov rovnakého algoritmu, ktoré spolupracujú pri hľadaní správnej klasifikácie.

Ďalším spôsobom, ako premýšľať o komplexnom učení, je bajka nevidiacich a slonov. V tomto príklade sa každý slepec cíti ako iná časť slona, ​​takže sa nezhodujú na tom, čo cítia. Ak by sa však spojili a prediskutovali o tom, mohli by zistiť, že sa pozerajú na rôzne časti tej istej veci.

Používanie techník, ako je podpora a vrecovanie, viedlo k zvýšeniu odolnosti štatistických modelov a zníženiu rozptylu.

Teraz sa stáva otázkou, aký je rozdiel medzi všetkými týmito rôznymi slovami „B“?

Bootstrapping

Poďme najprv hovoriť o veľmi dôležitej koncepcii bootstrappingu. Mnoho vedcov údajov to prehliada a priamo sa venuje vysvetleniu podpory a balenia. Ale oboje vyžadujú bootstrapping.

Obrázok 1 Zavádzanie systému

V strojovom učení sa metóda bootstrap týka náhodného vzorkovania s nahradením. Táto vzorka sa označuje ako prevzorkovanie. To umožňuje modelu alebo algoritmu lepšie porozumieť rôznym predsudkom, odchýlkam a funkciám, ktoré existujú v prevzorkovaní. Odobratie vzorky údajov umožňuje prevzorkovaniu obsahovať iné charakteristiky, ako by mohli obsahovať ako celok. Toto je demonštrované na obrázku 1, kde každá vzorková populácia má odlišné kúsky a žiadna z nich nie je identická. To by potom ovplyvnilo celkový priemer, štandardnú odchýlku a ďalšie opisné metriky množiny údajov. Na druhej strane môže vyvinúť robustnejšie modely.

Bootstrapping je vynikajúci aj pre súbory dát malej veľkosti, ktoré môžu mať tendenciu nadmerne sa prispôsobovať. V skutočnosti sme to odporúčali jednej spoločnosti, ktorá sa obávala, že ich súbory údajov neboli ani zďaleka „Big Data“. V tomto prípade môže byť riešením zavádzanie, pretože algoritmy využívajúce bootstrapping môžu byť robustnejšie a spracovávať nové súbory údajov, v závislosti od metodika (podpora alebo balenie).

Dôvodom použitia metódy bootstrap je to, že môže otestovať stabilitu riešenia. Môže zvýšiť odolnosť použitím viacerých súborov údajov vzoriek a testovaním viacerých modelov. Jeden súbor údajov má pravdepodobne väčší priemer ako iný alebo inú smerodajnú odchýlku. Môže to poškodiť model, ktorý bol nadmerne prispôsobený a netestovaný pomocou súborov údajov s rôznymi variáciami.

Jedným z mnohých dôvodov, prečo sa zavádza zavádzanie systému, je zvýšenie výpočtového výkonu. To umožňuje vykonať omnoho viac permutácií s rôznymi vzorkami, ako by bolo inak možné. Bootstrapping sa používa pri vreckovaní aj pri posilňovaní, ako bude uvedené nižšie.

vrecovanie

Bagging skutočne odkazuje na (Bootstrap Agregátory). Takmer každý príspevok alebo príspevok, ktorý odkazuje pomocou vrecovacích algoritmov, sa bude odvolávať aj na Leo Breimana, ktorý v roku 1996 napísal dokument s názvom „Predvádzanie baggingu“.

Tam, kde Leo popisuje vrecovanie ako:

„Prediktory sáčkovania sú metódou na generovanie viacerých verzií prediktora a ich pomocou na získanie agregovaného prediktora.“

Sťahovanie pomáha znižovať odchýlky od modelov, ktoré môžu byť veľmi presné, ale iba na údajoch, na ktorých boli trénované. Toto je tiež známe ako nadmerné vybavenie.

Overfitting je, keď funkcia vyhovuje údajom príliš dobre. Zvyčajne je to preto, že skutočná rovnica je príliš komplikovaná na to, aby sa vzal do úvahy každý dátový bod a odľahlý údaj.

Obrázok 2 Overfitting

Ďalším príkladom algoritmu, ktorý ľahko zvládne, je strom rozhodovania. Modely vyvinuté pomocou rozhodovacích stromov vyžadujú veľmi jednoduchú heuristiku. Rozhodovacie stromy sa skladajú zo súboru vyhlásení „ak je to iné“ v konkrétnom poradí. Ak sa teda sada údajov zmení na novú sadu údajov, ktorá by mohla mať oproti základným prvkom v porovnaní s predchádzajúcou sadou určité skreslenie alebo rozdiel, model nebude taký presný. Dôvodom je skutočnosť, že údaje sa tiež nehodia k modelu (čo je každopádne spätné vyhlásenie).

Sťahovanie to obchádza vytvorením vlastného rozptylu medzi údajmi vzorkovaním a nahradením údajov, zatiaľ čo testuje viacero hypotéz (modelov). Na druhej strane to znižuje hluk využívaním viacerých vzoriek, ktoré by boli s najväčšou pravdepodobnosťou tvorené údajmi s rôznymi atribútmi (stredný, priemerný atď.).

Keď každý model vyvinul hypotézu, modely používajú hlasovanie pre klasifikáciu alebo spriemerovanie pre regresiu. Tu prichádza do úvahy „Agregácia“ v „Agregácia bootovania“. Každá hypotéza má rovnakú váhu ako všetky ostatné. Keď neskôr diskutujeme o posilňovaní, je to jedno z miest, kde sa tieto dve metodiky líšia.

Obrázok 3

V podstate všetky tieto modely fungujú súčasne a hlasovanie o tom, ktorá hypotéza je najpresnejšia.

To pomáha znižovať rozptyl, t. J.

posilňovanie

Posilnenie sa týka skupiny algoritmov, ktoré využívajú vážené priemery na to, aby sa slabí študenti stali silnejšími študentmi. Na rozdiel od baggingu, ktorý mal každý model spustený nezávisle a potom agregoval výstupy na konci bez toho, aby uprednostňoval akýkoľvek model, je podpora predovšetkým o „tímovej práci“. Každý model, ktorý beží, určuje, na ktoré funkcie sa bude nasledujúci model zameriavať.

Posilnenie tiež vyžaduje zavedenie systému bootstrapping. Je tu však ďalší rozdiel. Na rozdiel od zabalenia, zvýšenie váhy každej vzorky údajov. To znamená, že niektoré vzorky budú bežať častejšie ako iné.

Prečo kladieme váhy na vzorky údajov?

Obrázok 4 Zvýšenie

Pri posilňovaní beží každý model, sleduje, ktoré vzorky údajov sú najúspešnejšie a ktoré nie. Súbory údajov s najviac neklasifikovanými výstupmi majú vyššie váhy. Tieto údaje sa považujú za údaje, ktoré sú zložitejšie a vyžadujú si viac iterácií, aby sa model správne vycvičil.

Počas skutočnej klasifikačnej fázy je tiež rozdiel v tom, ako vylepšovanie zaobchádza s modelmi. Pri vylepšovaní sa sleduje miera chybovosti modelu, pretože lepším modelom sa dáva vyššia váha.

Ak sa teda vyskytne „hlasovanie“, napríklad pri vrecovaní, modely s lepšími výsledkami majú výraznejší vplyv na konečný výstup.

zhrnutie

Zvyšovanie a vrecovanie sú skvelé techniky na zníženie rozptylu. Metódy súboru všeobecne prevyšujú jeden model. Preto veľa výhercov spoločnosti Kaggle využilo súborové metodiky. Jeden, o ktorom sa tu nehovorilo, bol stohovanie. (Vyžaduje si to vlastný príspevok.)

Neopravia však každý problém a sami majú svoje problémy. Existujú rôzne dôvody, prečo by ste ich mali používať jeden nad druhým. Sáčkovanie je skvelé na zníženie rozptylu, keď je model nadmerne prispôsobený. Posilnenie je však omnoho pravdepodobnejšie lepším výberom týchto dvoch metód. Posilnenie tiež pravdepodobne spôsobí problémy s výkonom. Je to tiež skvelé pre zníženie zaujatosti v modeli s podprsenkou.

Tu prichádzajú skúsenosti a odborné znalosti o predmete! Je ľahké skočiť na prvý fungujúci model. Je však dôležité analyzovať algoritmus a všetky funkcie, ktoré vyberie. Napríklad, ak rozhodovací strom nastaví konkrétne listy, otázkou sa stáva! Ak to nemôžete podporiť inými dátovými bodmi a vizuálmi, pravdepodobne by sa nemalo implementovať.

Nejde iba o vyskúšanie AdaBoost alebo o náhodné lesy na rôznych súboroch údajov. Konečný algoritmus závisí od dosiahnutých výsledkov a od podpory.