O trénovacích, validačních a testovacích sadách ve strojovém učení
On 17 října, 2021 by adminTento článek má být krátkou učebnicí pro každého, kdo potřebuje znát rozdíl mezi různými rozděleními datových sad při trénování modelů strojového učení.
Pro tento článek bych citoval základní definice z vynikajícího článku Jasona Brownleeho na stejné téma, je poměrně obsáhlý, podívejte se na něj pro více informací.
Training Dataset:
Současný soubor dat, který používáme k trénování modelu (váhy a zkreslení v případě neuronové sítě). Model tato data vidí a učí se z nich.
Validační datová sada
Validační datová sada: Vzorek dat, který slouží k nezkreslenému vyhodnocení shody modelu s trénovací množinou dat při ladění hyperparametrů modelu. Vyhodnocení se stává více zkresleným s tím, jak se do konfigurace modelu začleňují dovednosti na validační datové sadě.
Validační sada se používá k vyhodnocení daného modelu, ale jedná se o časté vyhodnocení. My jako inženýři strojového učení používáme tato data k doladění hyperparametrů modelu. Model tedy tato data občas vidí, ale nikdy se z nich „neučí“. Používáme výsledky validační sady a aktualizujeme hyperparametry vyšší úrovně. Validační sada tedy ovlivňuje model, ale pouze nepřímo. Validační množina se také nazývá Dev set nebo Development set. To dává smysl, protože tato datová sada pomáhá ve fázi „vývoje“ modelu.
Testovací datová sada
Testovací datová sada:
Testovací soubor dat poskytuje zlatý standard používaný k vyhodnocení modelu. Používá se až po úplném natrénování modelu(pomocí trénovací a validační sady). Testovací sada je obvykle to, co se používá k vyhodnocení konkurenčních modelů (Například v mnoha soutěžích Kaggle je validační sada zveřejněna na začátku spolu s trénovací sadou a skutečná testovací sada je zveřejněna až ve chvíli, kdy se soutěž blíží ke konci, a o vítězi rozhoduje výsledek modelu na testovací sadě). Mnohdy se validační sada používá jako testovací sada, ale to není dobrý postup. Testovací množina je obecně dobře kurátorovaná. Obsahuje pečlivě vybraná data, která pokrývají různé třídy, s nimiž by se model setkal při použití v reálném světě.
O poměru rozdělení datové sady
Teď, když víte, co tyto datové sady dělají, možná hledáte doporučení, jak rozdělit datovou sadu na trénovací, validační a testovací.
To závisí především na dvou věcech. Zaprvé na celkovém počtu vzorků ve vašich datech a zadruhé na skutečném modelu, který trénujete.
Některé modely potřebují k trénování značné množství dat, takže v takovém případě byste optimalizovali pro větší tréninkové sady. Modely s velmi malým počtem hyperparametrů se budou snadno ověřovat a ladit, takže pravděpodobně můžete zmenšit velikost validační sady, ale pokud má váš model mnoho hyperparametrů, chtěli byste mít také velkou validační sadu(i když byste měli zvážit také křížovou validaci). Také pokud náhodou máte model bez hyperparametrů nebo s hyperparametry, které nelze snadno vyladit, pravděpodobně validační sadu také nepotřebujete!
Podle všeho, stejně jako mnoho dalších věcí ve strojovém učení, je poměr rozdělení trénovat-testovat-validovat také zcela specifický pro váš případ použití a je snazší jej posoudit, když trénujete a vytváříte stále více modelů.
Poznámka ke křížové validaci: Mnohokrát se stává, že lidé nejprve rozdělí svou datovou sadu na dvě části – trénovat a testovat. Poté si ponechají stranou Testovací sadu a náhodně vyberou X % své Tréninkové datové sady jako skutečnou Tréninkovou sadu a zbývajících (100-X)% jako Validační sadu, kde X je pevné číslo (řekněme 80 %), model je pak iterativně trénován a validován na těchto různých sadách. Existuje více způsobů, jak to provést, a běžně se tomu říká křížová validace. V podstatě používáte trénovací množinu k vytvoření několika rozdělení trénovací a validační množiny. Křížová validace zabraňuje nadměrnému přizpůsobování a je stále populárnější, přičemž nejoblíbenější metodou křížové validace je K-fold Cross Validation. Více informací naleznete zde.
Napsat komentář