====== Odhad chyby predikce ====== V minulém díle jsme viděli, že k vyjádření míry shody skutečných a modelem předpovězených hodnot (predikcí) je možné využít operátor ''Performance''. Ten nedělá nic jiného než že porovná odpovídající dvojice, agreguje odchylky a vydá míru přesnosti. To, co tato vypočtená "přesnost" modelu ve skutečnosti znamená, ale závisí na tom, na jakých datech tuto přesnost měříme. V minulém díle jsme přesnost měřili na stejných datech, která byla použita i k učení modelu. Odhad chyby byl proto příliš optimistický. V tomto díle si ukážeme, jak odhadnout přesnost lépe - na nezávislých datech a pomocí křížové validace. ===== Odhad chyby pomocí testovacích dat ===== Jednoduchá a velmi přímá metoda odhadu prediktivní schopnosti dat. Dostupná data se rozdělá na dvě sady, **trénovací** a **testovací**. Model se naučí na trénovacích datech a chyba se vyčíslí na testovacích datech. - Přetáhněte do procesu datovou sadu ''iris'' z repozitáře. - Napojte na ni operátor ''Evaluation/Validation/Split Validation''. Ten na svém vstupu očekává datovou sadu. Tuto sadu rozdělí na trénovací a testovací data. Trénovací data poskytne na vstup prvnímu vnitřnímu procesu, testovací data druhému procesu. Lze nastavit, jakým způsobem se mají data rozdělit. * První vnitřní proces by měl popisovat tvorbu modelu - na vstup modelu jsou připojena trénovací data a očekává se, že výstupem tohoto podprocesu bude natrénovaný model. Vložme sem tedy již známý operátor ''Decision Tree''. * Druhý proces realizuje odhad chyby modelu. Na vstup procesu jsou předána testovací data (operátorem ''SplitValidation'') a natrénovaný model (výstup z prvního podprocesu). Očekává se, že tento druhý podproces vydá na svůj výstup míru přesnosti predikce. Vložme tedy operátory ''Apply Model'' a ''Performance''. - Spusťme proces. Ve výsledcích bychom opět měli vidět odhad chyby i matici záměn. Přesnost modelu měřená na testovacích datech je menší než v předchozím případě. Všimněme si, že (podle nastaveného rozdělení dat) byla k odhadu chyby použita jen část původních dat. Podobně byla použita i pro učení jen menší část dat. V následující sekci se seznámíte s metodou, která umožní správně odhadnout prediktivní přesnost (na všech dostupných datech) a model také naučit na všech dostupných datech. ===== Křížová validace ===== Výpočet chyby na testovacích datech poskytuje sice nevychýlený odhad prediktivní chyby, nicméně odhad může mít větší rozptyl, protože je počítán z menšího množství dat. [[wp>Cross-validation (statistics)|Křížová validace]] je metoda, které umožní použít všechna data jak k učení modelu, tak i k výpočtu odhadu chyby predikce, ovšem za cenu opakovaného učení modelu na různých podmnožinách dat. Princip je jednoduchý. Datová sada se rozdělí na //k// částí, dejme tomu na 5 a označme je A,...,E. Křížová validace pak provede 5 iterací: - Použij části A..D jako trénovací, část E jako testovací, neboli nauč model na A..D, odhadni chybu na E. - Použij části A..C a E jako trénovací, D jako testovací. - ... - Použij části B..D jako trénovací a A jako testovací. Nyní máme 5 odhadů chyby. Průměr těchto 5 hodnot je finální odhad prediktivní chyby modelu (každé pozorování do něj přispělo právě 1x). Nyní můžeme model naučit znovu na celé datové sadě. Postup tvorby procesu je stejný jako v předchozím případě, jen místo operátoru ''Split Validation'' použijeme operátor ''Evaluation/Validation/X-Validation''. Odhadnutá chyba predikce je nyní 93%.