Křížová validace

Křížová validace rozděluje data opakovaně na trénovací a validační sady za účelem posouzení a zlepšení zobecnění modelu ve strojovém učení.

Křížová validace je statistická metoda používaná k hodnocení a porovnávání modelů strojového učení rozdělením dat na trénovací a validační sady opakovaně. Hlavní myšlenkou je posoudit, jak budou výsledky modelu zobecňovat na nezávislá data, aby model fungoval dobře nejen na trénovacích datech, ale i na neznámých datech. Tato technika je zásadní pro zmírnění problémů, jako je přeučení (overfitting), kdy se model naučí trénovací data příliš dobře včetně šumu a odlehlých hodnot, ale na nových datech pak dosahuje špatných výsledků.

Co je křížová validace?

Křížová validace zahrnuje rozdělení datové sady na vzájemně doplňující se podmnožiny, z nichž jedna se používá pro trénování modelu a druhá pro jeho validaci. Tento proces se několikrát opakuje, přičemž v každém kole se použijí jiné podmnožiny pro trénování a validaci. Validační výsledky se následně zprůměrují, aby bylo možné získat jednotné hodnocení výkonnosti modelu. Tato metoda poskytuje přesnější měření prediktivní výkonnosti modelu než jednorázové rozdělení na trénovací a testovací sadu.

Typy křížové validace

  1. K-Fold křížová validace

    • Datová sada je rozdělena na ‘k’ stejných částí (foldů).
    • V každé iteraci slouží jeden fold jako validační sada a zbývajících ‘k-1’ foldů jako trénovací sada.
    • Tento proces se opakuje ‘k’ krát. Výsledky se průměrují pro konečný odhad výkonnosti.
    • Typická hodnota ‘k’ je 10, ale může se lišit.
  2. Stratifikovaná K-Fold křížová validace

    • Podobné jako k-fold, ale zachovává stejné zastoupení tříd ve všech foldech.
    • Vhodné pro nevyvážené datové sady.
  3. Leave-One-Out křížová validace (LOOCV)

    • Každý záznam v datové sadě je jednou použit jako validační sada, ostatní tvoří trénovací sadu.
    • Výpočetně náročné, ale vhodné pro malé datové sady.
  4. Metoda holdout

    • Datová sada je rozdělena na dvě části: jedna pro trénování, druhá pro testování.
    • Jednoduchá metoda, ale méně robustní, protože výsledek závisí na konkrétním rozdělení.
  5. Křížová validace časových řad

    • Navržena pro data časových řad.
    • Respektuje časové pořadí, aby nebyla budoucí data použita při trénování na dřívějších sadách.
  6. Leave-P-Out křížová validace

    • ‘p’ datových bodů je vynecháno jako validační sada, model je trénován na zbytku.
    • Postup se opakuje pro všechny možné podmnožiny ‘p’ bodů; důkladné, ale velmi výpočetně náročné.
    • Více o náročnosti
  7. Monte Carlo křížová validace (Shuffle-Split)

    • Data jsou náhodně rozdělena na trénovací a validační sady opakovaně.
    • Výsledky se průměrují, což poskytuje větší variabilitu rozdělení oproti k-fold.

Význam ve strojovém učení

Křížová validace je klíčovou součástí hodnocení modelů strojového učení. Poskytuje přehled o tom, jak si model povede na neznámých datech, a pomáhá při ladění hyperparametrů tím, že umožňuje trénovat a validovat model na různých podmnožinách dat. Tento proces usnadňuje výběr modelu s nejlepší výkonností i optimálních hyperparametrů a zvyšuje schopnost modelu zobecňovat.

Prevence přeučení a podučení

Jedním z hlavních přínosů křížové validace je její schopnost detekovat přeučení. Validací modelu na více podmnožinách dat poskytuje realističtější odhad schopnosti modelu zobecňovat. Zajišťuje, že se model pouze nenaučí zpaměti trénovací data, ale skutečně předpovídá nová data přesně. Na druhou stranu, pokud model dosahuje špatných výsledků napříč všemi validačními sadami, lze identifikovat podučení (underfitting), což znamená, že model nedokáže zachytit základní vzory v datech.

Příklady a využití

Příklad: K-Fold křížová validace

Uvažujme datovou sadu s 1000 záznamy. Při 5-fold křížové validaci:

  • Datová sada je rozdělena na 5 částí po 200 záznamech.
  • V první iteraci je prvních 200 určeno pro validaci, zbývajících 800 pro trénování.
  • Tento proces se opakuje pětkrát, přičemž každý fold slouží jednou jako validační sada.
  • Výsledky z každé iterace se průměrují pro odhad výkonnosti.

Využití: Ladění hyperparametrů

Křížová validace je zásadní při ladění hyperparametrů. Například při trénování Support Vector Machine (SVM):

  • Volba typu jádra a regularizačního parametru ‘C’ výrazně ovlivňuje výkonnost.
  • Testováním různých kombinací pomocí křížové validace lze nalézt optimální konfiguraci maximalizující přesnost.

Využití: Výběr modelu

Pokud je více modelů kandidátem pro nasazení:

  • Ověřte modely jako Random Forest, Gradient Boosting a neuronové sítě na stejné datové sadě pomocí křížové validace.
  • Robustně porovnejte jejich výkonnost a vyberte model s nejlepší zobecnitelností.

Využití: Predikce časových řad

U dat časových řad:

  • Použijte křížovou validaci časových řad, kdy trénujete na minulých datech a validujete na budoucích bodech.
  • Zajistíte tak robustní předpovědi na základě historických vzorců.

Implementace v Pythonu

Python knihovny jako Scikit-learn poskytují vestavěné funkce pro křížovou validaci.

Ukázka implementace k-fold křížové validace pomocí Scikit-learn:

from sklearn.model_selection import cross_val_score, KFold
from sklearn.svm import SVC
from sklearn.datasets import load_iris

# Načtení datové sady
iris = load_iris()
X, y = iris.data, iris.target

# Vytvoření SVM klasifikátoru
svm_classifier = SVC(kernel='linear')

# Definice počtu foldů
num_folds = 5
kf = KFold(n_splits=num_folds, shuffle=True, random_state=42)

# Provedení křížové validace
cross_val_results = cross_val_score(svm_classifier, X, y, cv=kf)

# Vyhodnocení výsledků
print(f'Výsledky křížové validace (přesnost): {cross_val_results}')
print(f'Průměrná přesnost: {cross_val_results.mean()}')

Výzvy a úvahy

Výpočetní náročnost

  • Křížová validace (zejména LOOCV) může být výpočetně velmi náročná, protože vyžaduje opakované trénování modelu.
  • Velké datové sady nebo složité modely zvyšují výpočetní nároky.

Kompromis bias-variance

  • Výběr hodnoty ‘k’ v k-fold ovlivňuje bias a varianci.
    • Menší ‘k’: vyšší variabilita, nižší bias
    • Větší ‘k’: nižší variabilita, vyšší bias
  • Klíčové je nalézt rovnováhu.

Práce s nevyváženými daty

  • U nevyvážených datových sad stratifikovaná křížová validace zajistí, že každý fold odráží celkové zastoupení tříd.
  • Tím se předejde biasu ve prospěch většinové třídy.

Vědecké články týkající se křížové validace

Křížová validace je statistická metoda používaná k odhadu schopnosti modelů strojového učení. Primárně je využívána v aplikovaném strojovém učení k odhadu výkonnosti modelu na nových datech. Křížová validace zahrnuje rozdělení datové sady na doplňkové podmnožiny, provedení analýzy na jedné (trénovací) podmnožině a ověření výsledků na druhé (testovací) podmnožině. Pro hlubší porozumění křížové validaci lze odkázat na několik vědeckých článků:

  1. Approximate Cross-validation: Guarantees for Model Assessment and Selection
    Ashia Wilson, Maximilian Kasy, and Lester Mackey (2020)
    Zabývá se výpočetní náročností křížové validace s mnoha foldy, navrhuje aproximaci pomocí jednoho Newtonova kroku a poskytuje záruky i pro nespojité predikční úlohy.
    Více zde

  2. Counterfactual Cross-Validation: Stable Model Selection Procedure for Causal Inference Models
    Yuta Saito and Shota Yasui (2020)
    Zaměřuje se na výběr modelu pro predikci podmíněných průměrných efektů léčby, navrhuje nový metriku pro stabilní a přesné hodnocení výkonu, vhodné pro kauzální inferenci.
    Více zde

  3. Blocked Cross-Validation: A Precise and Efficient Method for Hyperparameter Tuning
    Giovanni Maria Merola (2023)
    Představuje blokovou křížovou validaci (BCV), která poskytuje přesnější odhady chyb s menším počtem výpočtů a zvyšuje efektivitu ladění hyperparametrů.
    Více zde

Často kladené otázky

Co je křížová validace ve strojovém učení?

Křížová validace je statistická metoda, která rozděluje data na více trénovacích a validačních sad za účelem hodnocení výkonnosti modelu a zajištění jeho dobrého zobecnění na neznámá data.

Proč je křížová validace důležitá?

Pomáhá odhalit přeučení nebo podučení, poskytuje realistický odhad výkonnosti modelu a slouží k ladění hyperparametrů a výběru modelu.

Jaké jsou běžné typy křížové validace?

Mezi běžné typy patří K-Fold, Stratifikovaná K-Fold, Leave-One-Out (LOOCV), metoda holdout, křížová validace časových řad, Leave-P-Out a Monte Carlo křížová validace.

Jak se křížová validace používá pro ladění hyperparametrů?

Trénováním a hodnocením modelů na více podmnožinách dat pomáhá křížová validace určit optimální kombinaci hyperparametrů maximalizujících validační výkon.

Jaké jsou výzvy spojené s křížovou validací?

Křížová validace může být výpočetně náročná, zejména u velkých dat či metod jako LOOCV, a vyžaduje pečlivé zvážení u nevyvážených dat nebo časových řad.

Jste připraveni tvořit vlastní AI?

Chytré chatboty a AI nástroje pod jednou střechou. Spojte intuitivní bloky a proměňte své nápady v automatizované toky.

Zjistit více

Křížová entropie

Křížová entropie

Křížová entropie je klíčovým pojmem v informační teorii i strojovém učení a slouží jako metrika pro měření rozdílu mezi dvěma pravděpodobnostními rozděleními. V...

4 min čtení
Cross-Entropy Machine Learning +3
Křivka učení

Křivka učení

Křivka učení v umělé inteligenci je grafické znázornění, které ilustruje vztah mezi výkonností modelu a proměnnými, jako je velikost datové sady nebo počet trén...

5 min čtení
AI Machine Learning +3
Validace dat

Validace dat

Validace dat v AI označuje proces posuzování a zajištění kvality, přesnosti a spolehlivosti dat používaných pro trénování a testování AI modelů. Zahrnuje identi...

2 min čtení
Data Validation AI +3