Křížová validace

Supervised Learning with scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Motivace pro křížovou validaci

  • Výkon modelu závisí na způsobu rozdělení dat

  • Není reprezentativní pro schopnost modelu generalizovat na nová data

  • Řešení: Křížová validace!

Supervised Learning with scikit-learn

Základy křížové validace

záhlaví tabulky: split 1, fold 1, fold 2, fold 3, fold 4 a fold 5

Supervised Learning with scikit-learn

Základy křížové validace

split 1 vyhrazen jako testovací sada

Supervised Learning with scikit-learn

Základy křížové validace

foldy 2–5 použity jako trénovací data

Supervised Learning with scikit-learn

Základy křížové validace

výpočet metriky na těchto foldech

Supervised Learning with scikit-learn

Základy křížové validace

Fold 2 jako testovací data

Supervised Learning with scikit-learn

Základy křížové validace

Foldy 1, 3, 4 a 5 jako trénovací data

Supervised Learning with scikit-learn

Základy křížové validace

znovu výpočet metriky

Supervised Learning with scikit-learn

Základy křížové validace

opakování s třetím foldem

Supervised Learning with scikit-learn

Základy křížové validace

opakování se čtvrtým foldem

Supervised Learning with scikit-learn

Základy křížové validace

opakování s pátým foldem

Supervised Learning with scikit-learn

Křížová validace a výkon modelu

  • 5 foldů = 5-fold CV

  • 10 foldů = 10-fold CV

  • k foldů = k-fold CV

  • Více foldů = Vyšší výpočetní náročnost

Supervised Learning with scikit-learn

Křížová validace v scikit-learn

from sklearn.model_selection import cross_val_score, KFold

kf = KFold(n_splits=6, shuffle=True, random_state=42)
reg = LinearRegression()
cv_results = cross_val_score(reg, X, y, cv=kf)
Supervised Learning with scikit-learn

Vyhodnocení výkonu křížové validace

print(cv_results)
[0.70262578, 0.7659624, 0.75188205, 0.76914482, 0.72551151, 0.73608277]
print(np.mean(cv_results), np.std(cv_results))
0.7418682216666667 0.023330243960652888
print(np.quantile(cv_results, [0.025, 0.975]))
array([0.7054865, 0.76874702])
Supervised Learning with scikit-learn

Pojďme si procvičit!

Supervised Learning with scikit-learn

Preparing Video For Download...