Nedostatečné přizpůsobení a nadměrné přizpůsobení ve strojovém učení

Věřte tomu nebo ne, ale v reálném světě nikdy nebudeme mít k dispozici čistou a dokonalou datovou sadu. Každý dataset bude mít nějaké podivné nebo chybějící části nebo nevyvážená data. Nebo my jako vývojáři strojového učení vneseme do našeho modelu nějaké chyby nebo nedostatky. Jedním z hlavních důvodů je to, že chceme, aby náš model dokázal popsat základní vzor. Bohužel povaha reálných dat je taková, že obsahují určitou úroveň šumu a odlehlých hodnot, a většinou chceme, aby model zachytil signál v datech, a ne šum.

Aby model přesně zachytil základní vzor v datech, může být nutné zahrnout šum. Z toho vyplývá, že odvozený model dobře odpovídá modelovaným datům, ale není dostatečně dobře zobecněn na jiné vzorky, které nebyly zahrnuty do procesu modelování.

Existuje terminologie popisující, jak dobře se model strojového učení učí a zobecňuje na nová data, jedná se o overfitting a underfitting. Cílem dobrého modelu strojového učení je dobře zobecnit z trénovacího souboru dat na jakýkoli soubor dat z problémové oblasti. To nám umožňuje provádět předpovědi na základě datové sady, kterou model nikdy neviděl.

Ve statistice se fit označuje jako, jak blízko je váš model cílové třídě / funkci / hodnotě. Overfitting a underfitting jsou dvě největší příčiny špatného výkonu algoritmů nebo modelů strojového učení.

Pochopme, co je to Best Fit, Overfitting a Underfitting? Následuje několik kódů.

Co je Overfitting & Underfitting?

Overfitting označuje scénář, kdy model strojového učení nedokáže dobře zobecnit nebo zapadnout do neznámé sady dat. Jasnou známkou overfittingu strojového učení je, pokud je jeho chyba na testovací nebo validační datové sadě mnohem větší než chyba na trénovací datové sadě.

Overfitting je termín používaný ve statistice, který označuje chybu modelování, k níž dochází, když funkce příliš odpovídá datové sadě. V důsledku toho se může stát, že overfitting neodpovídá dalším datům, což může ovlivnit přesnost předpovědi budoucích pozorování.

K overfittingu dochází, když se model naučí detaily a šum v trénovací datové sadě do té míry, že to negativně ovlivní výkonnost modelu na nové datové sadě. To znamená, že šum nebo náhodné výkyvy v trénovací datové sadě model zachytí a naučí se je jako koncepty. Problém spočívá v tom, že tyto koncepty neplatí pro nové soubory dat a negativně ovlivňují schopnost modelu zobecňovat.

Opakem overfittingu je underfitting.

Underfitting označuje model, který nedokáže modelovat trénovací soubor dat ani zobecňovat na nový soubor dat. Nedostatečně přizpůsobený model strojového učení není vhodným modelem a bude zřejmé, že bude mít špatný výkon na trénovací datové sadě.

Nedostatečné přizpůsobení se často nediskutuje, protože je snadno odhalitelné vzhledem k dobré metrice výkonu.

Pochopení na příkladech

Příklad 1:

Řekněme, že se tři studenti připravovali na zkoušku z matematiky.

První student se učil pouze matematické operace sčítání a vynechal ostatní matematické operace, jako je odčítání, dělení, násobení atd.

Druhý student má obzvláště dobrou paměť. Druhý student si tedy zapamatoval všechny úlohy uvedené v učebnici.

Třetí student se naučil všechny matematické operace a je na zkoušku dobře připraven.

U zkoušky bude první student schopen řešit pouze otázky týkající se Sčítání a neuspěje v úlohách nebo položených otázkách týkajících se ostatních matematických operací.

Student dva bude schopen odpovědět pouze na otázky, které se náhodou objevily v učebnici (protože si ji zapamatoval), a nebude schopen odpovědět na žádné jiné otázky.

Student tři bude schopen poměrně dobře vyřešit všechny zkoušky.

Algoritmy strojového učení se chovají podobně jako naši tři studenti, někdy jsou modely generované algoritmem podobné prvnímu studentovi. Učí se pouze z malé části trénovacího souboru dat, v takových případech je model Underfitting.

Někdy si model zapamatuje celý trénovací soubor dat, jako druhý student. Na známých instancích si vedou velmi dobře, ale na neznámých datech nebo neznámých instancích špatně fungují. V takových případech se říká, že model je Overfitting.

A když si model vede dobře jak v trénovací datové sadě, tak na neznámých datech nebo neznámých instancích, jako student třetí, je to dobrý fitting.

Příklad 2. Model si dobře pamatuje trénovací datovou sadu i neznámé instance:

Uveďme si další příklad a uvažujme, že jste navštívili město „X“ a jeli jste taxíkem. Při rozhovoru s přáteli jste si později uvědomili, že vám taxikář naúčtoval dvakrát až třikrát vyšší cenu, než je standardní jízdné. K tomu došlo, protože jste byli ve městě noví a řidič vás doslova svezl.

Také jste si koupili nějaké zboží od pouličního prodejce a opět jste nakonec zaplatili více, než kolik stálo. Nakonec jste se rozhodli, že lidé ve městě „X“ jsou nepoctiví. Což je lidská vlastnost, lidé často zobecňují. Modely strojového učení mají také tuto slabinu, pokud si nedáme pozor, abychom se vyhnuli předpojatosti ve fázích vývoje: modelování, výběru algoritmů, funkcí, trénovacího souboru dat atd.

Předpokládejme, že ve stejném městě „X“ vám jiný taxikář účtoval přiměřeně a podle taxametru, ale na základě zkušeností se domníváte, že i tento řidič účtoval více. Tomu se říká Overfitting.

Z výše uvedených dvou příkladů můžeme říci, že pokud model dobře funguje na testovací nebo nezobrazené datové sadě, pak se jedná o nejlépe vyhovující nebo dobrý model. A pokud nefungoval dobře na testovací nebo neviděné datové sadě, ale fungoval dobře na trénovací datové sadě, pak se jedná o Overfit model. A jakýkoli model, který si nevedl dobře v trénovací datové sadě ani v testovací datové sadě, pak se jedná o Underfit model.

Následuje příklad s kódem Pythonu.

Příklad 3:

Tento příklad demonstruje problémy underfittingu a overfittingu a ukazuje, jak můžeme použít lineární regresi s polynomiálními funkcemi k aproximaci nelineárních funkcí.

Vytvořme dvě proměnné řekněme X a y. X bude mít nějaké náhodné číslo / vzorek, kdežto y je část kosinové funkce.

Na základě dat bude graf vypadat… jednoduché vykreslení X a y.

Natrénujme náš model pomocí lineární regrese, předpovídejme a vizualizujme jej.

Vizualizujme předpovězený model.

Vidíme, že přímka není schopna zachytit zákonitosti v datech. To je příklad nedostatečného přizpůsobení. Chyba bude u tohoto modelu obrovská.

Uvažujme polynomickou funkci s několika stupni a trénujme náš model.

Vidíme, že lineární funkce (polynom se stupněm 1) nestačí k tomu, aby odpovídala trénovacím vzorkům. Tomu se říká underfitting.

Polynom stupně 4 aproximuje skutečnou funkci téměř dokonale. Tomu se říká Best Fit neboli dobrý model.

V případě vyšších stupňů (se stupněm 15) však model příliš vyhoví trénovacímu souboru dat, tj. naučí se šumu trénovacích dat.

Kvantitativně vyhodnotíme overfitting / underfitting pomocí křížové validace.

Vypočítáme také střední kvadratickou chybu (MSE) na souboru validačních dat, čím vyšší, tím menší je pravděpodobnost, že model správně zobecní z trénovacího souboru dat.

Na celý kód lze odkázat z
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing

Detekce overfittingu nebo underfittingu

Klíčový problém detekce jakéhokoli druhu přizpůsobení (ať už jde o underfitting nebo nejlepší přizpůsobení či overfitting), je téměř nemožný před testováním dat. To může pomoci řešit inherentní vlastnosti overfittingu, což je neschopnost zobecnit soubor dat. Data lze proto rozdělit na různé podmnožiny, aby bylo možné je snadno trénovat a testovat. Data se rozdělí na dvě hlavní části, tj. na testovací a trénovací datovou sadu.

Technika rozdělení se může lišit podle typu datové sady a lze použít jakoukoli techniku rozdělení.

Pokud si náš model vede mnohem lépe na trénovací datové sadě než na testovací datové sadě, pak pravděpodobně dochází k overfittingu Například náš model si vedl s 99% přesností na trénovací datové sadě, ale pouze s 50-55% přesností na testovací datové sadě. Jedná se o Overfitting modelu a na nezkoumané datové sadě si nevedl dobře.

Pokud si náš model vede mnohem lépe na testovací datové sadě než na trénovací datové sadě, pak jsme pravděpodobně underfitting.

A pokud si náš model vede dobře na trénovací i testovací datové sadě, pak máme nejlepší fitting. Například náš model dosáhl na trénovací datové sadě 90% přesnosti a na testovací datové sadě dosahuje 88-92% přesnosti. Jedná se o nejlépe vyhovující model.

Dalším jednoduchým způsobem, jak to zjistit, je použití křížové validace. Ta se pokouší prověřit natrénovaný model s novým souborem dat a ověřit jeho přesnost predikce. Je dán soubor dat, jehož určitá část je zadržena (řekněme 30 %), zatímco zbytek je použit při trénování modelu. Po natrénování modelu se pak rezervovaná data použijí ke kontrole přesnosti modelu ve srovnání s přesností odvozenou z dat použitých při trénování. Výrazná odchylka v těchto dvou údajích signalizuje nadměrné přizpůsobení.

Jak zabránit nadměrnému nebo nedostatečnému přizpůsobení

Detekce nadměrného nebo nedostatečného přizpůsobení je užitečná, ale problém neřeší. Naštěstí máte několik možností, které můžete vyzkoušet. Zde je několik nejoblíbenějších řešení.

Napravení nedostatečného fitování, je přejít dál a vyzkoušet alternativní algoritmy strojového učení. Nicméně poskytuje dobrý protiklad k problému Overfittingu.

Pro prevenci Overfittingu existují různé způsoby a několik z nich je uvedeno níže.

  • Křížová validace:
    • Křížová validace je účinným preventivním opatřením proti Overfittingu.
    • Použijte svá počáteční trénovací data k vytvoření několika minirozdělení train-test. Pomocí těchto rozdělení vylaďte svůj model.
    • Ve standardní k-násobné křížové validaci rozdělíme data na k podmnožin, kterým říkáme záhyby. Poté iterativně trénujeme algoritmus na k-1 složkách, přičemž zbývající složku používáme jako testovací množinu (nazývanou „vyčkávací složka“).
    • Křížová validace umožňuje vyladit hyperparametry pouze s původní trénovací množinou dat. Díky tomu si můžete ponechat testovací datovou sadu jako skutečně neokoukanou datovou sadu pro výběr finálního modelu.
  • Trénujte s více daty
    • Nebude to fungovat pokaždé, ale trénování s více daty může algoritmům pomoci lépe detekovat signál.
    • Když uživatel dodá do modelu více trénovacích dat, model nebude schopen přebrat všechny vzorky a bude nucen zobecňovat, aby získal výsledky.
    • Uživatelé by měli neustále shromažďovat více dat, což je způsob, jak zvýšit přesnost modelu.
    • Tato metoda je však považována za nákladnou, a proto by uživatelé měli zajistit, aby používaná data byla relevantní a čistá.
    • To ovšem neplatí vždy. Pokud jen přidáme další zašuměná data, tato technika nám nepomůže. Proto byste se měli vždy ujistit, že data jsou čistá a relevantní.
  • Rozšíření dat
    • Alternativou k trénování s větším množstvím dat je rozšíření dat, které je ve srovnání s prvním způsobem méně nákladné.
    • Pokud nemůžete neustále shromažďovat další data, můžete dostupné datové sady upravit tak, aby vypadaly různorodě.
    • Rozšíření dat způsobí, že vzorek dat bude při každém zpracování modelem vypadat trochu jinak. Tento proces způsobí, že každý soubor dat se modelu jeví jako jedinečný, a zabrání modelu naučit se vlastnosti souborů dat.
  • Snížení složitosti neboli zjednodušení dat
    • K nadměrnému přizpůsobení může dojít v důsledku složitosti modelu, takže i při velkém objemu dat se modelu stále daří nadměrně přizpůsobovat trénovací soubor dat.
    • Metoda zjednodušení dat se používá ke snížení overfittingu tím, že se sníží složitost modelu, aby byl dostatečně jednoduchý a nedocházelo k overfittingu.
    • Některé z činností, které lze provést, zahrnují ořezání rozhodovacího stromu, snížení počtu parametrů v neuronové síti a použití dropoutu u neuronové sítě.
    • Zjednodušením modelu lze také model odlehčit a zrychlit jeho běh.
  • Regularizace
    • Regularizace označuje širokou škálu technik pro umělé vynucení zjednodušení modelu.
    • Metoda bude záviset na typu učícího se subjektu, který používáte. Můžete například ořezat rozhodovací strom, použít dropout u neuronové sítě nebo přidat penalizační parametr do nákladové funkce v regresi.
    • Často je metoda regularizace také hyperparametrem, což znamená, že ji lze vyladit pomocí křížové validace.
    • Chcete-li se o regularizaci dozvědět více, odkazujeme na článek https://datascience.foundation/datatalk/regularization-machine-learning-teacher, který napsal a velmi dobře vysvětlil Abhishek Mishra.
  • Ensembling
    • Ensembly jsou metody strojového učení pro kombinování předpovědí z více samostatných modelů. Existuje několik různých metod pro ensembling, ale dvě nejběžnější jsou: Boosting a Bagging.
    • Boosting funguje tak, že se pomocí jednoduchých základních modelů zvyšuje jejich souhrnná složitost. Trénuje velký počet slabých učících se uspořádaných v posloupnosti tak, že každý učící se v posloupnosti se učí z chyb učícího se před ním.
    • Boosting se pokouší zlepšit predikční flexibilitu jednoduchých modelů.
    • Boosting kombinuje všechny slabé učící se v posloupnosti, aby vznikl jeden silný učící se.
    • Bagging pracuje tak, že trénuje mnoho silných učících se uspořádaných paralelně a pak je kombinuje, aby optimalizoval jejich předpovědi.
    • Bagging se pokouší snížit pravděpodobnost nadměrného přizpůsobení složitých modelů.
    • Bagging pak kombinuje všechny silné učící se dohromady, aby „vyhladil“ jejich předpovědi.
  • Včasné zastavení
    • Při iteračním trénování učicího algoritmu můžete měřit, jak dobře si vede každá iterace modelu.
    • Do určitého počtu iterací nové iterace zlepšují model. Po tomto bodě však může schopnost modelu zobecňovat slábnout, protože se začne nadměrně přizpůsobovat trénovacím datům.
    • Předčasným zastavením se rozumí zastavení procesu trénování dříve, než učící se subjekt překročí tento bod.
    • Dnes se tato technika většinou používá v hlubokém učení, zatímco jiné techniky (např. regularizace) jsou preferovány pro klasické strojové učení.
  • V případě lineárních a SVM modelů je třeba přidat regularizaci.
  • U modelů rozhodovacích stromů můžete snížit maximální hloubku.
  • U neuronových sítí můžete zavést dropout vrstvu pro snížení overfittingu.

Rychlé shrnutí

Přefitování je chyba modelování, která vnáší do modelu zkreslení, protože je příliš úzce spojen se souborem dat.

Přefitování způsobuje, že model je relevantní pouze pro svůj soubor dat a je irelevantní pro jakékoli jiné soubory dat.

Mezi metody používané k zabránění přefitování patří ensembling, rozšiřování dat, zjednodušování dat a křížová validace.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.