====== 6. Strojové učení: výběr klasifikátoru ====== V této úloze si vyzkoušíte, jak vybrat optimální klasifikátor v různých situacích. * Termín odevzdání úlohy je v [[https://cw.felk.cvut.cz/BRUTE/|BRUTE]]. Tamtéž se i odevzdává. * Budete pracovat s těmito daty: {{ :courses:b3b33kui:cviceni:strojove_uceni:classif_result_tables.zip |classif_result_tables.zip}} Úlohu vypracujte v [[courses:b3b33kui:cviceni:python_version|požadované verzi Pythonu]]! ===== Co odevzdat a hodnocení ===== Odevzdávejte ZIP archiv se dvěma soubory: * PDF s reportem obsahujícím řešení níže uvedených částí * Pythonský skript související s částí **Hlavně bezpečně** Report by měl být rozhodně **kratší než dvě strany A4**. Doporučená délka reportu je jedna strana A4. **Hodnocení bude uděleno na základě PDF reportu v závislosti na optimalitě řešení a kvalitě zdůvodnění zvoleného řešení. [0–5 bodů]** ===== Zadání ===== Při řešení praktických úloh strojového učení máme často k dispozici více klasifikátorů a musíme se rozhodnout, který je nejvhodnější pro danou úlohu. V ZIP balíčku (viz výše) jsou datové soubory, s nimiž budete při řešení úlohy pracovat. Mějme 5 různých natrénovaných binárních klasifikátorů. Výsledek klasifikace každého z klasifikátorů je závislý na hodnotě parametru $\alpha$ a lze jej tedy vyjádřit jako funkci $C(\bf x, \alpha) \in \{0,1\}$, kde $\bf x$ je vektor popisující objekt, který chceme klasifikovat. Všechny klasifikátory jsme aplikovali na testovací množinu $X = \{{\bf x}_0, {\bf x}_1, \dots, {\bf x}_{99} \}$. Zároveň jsme vyzkoušeli všechny přípustné hodnoty parametru $\alpha\in\{\alpha_0, \alpha_1, \dots, \alpha_{49}\}$. Pro klasifikátor $i\in\{1,2, \dots,5\}$ dostane tabulku s hodnotami $C_i(\bf x_j,\alpha_k)\in \{0,1\}$, kde $j \in \{0, 1,.., 99\}$, $k \in \{0, 1,.., 49\}$ (soubory ''C1.dsv'' až ''C5.dsv''). Dále máme k dispozici skutečnou třídu vzorků $\bf x_0, \bf x_1, \dots, \bf x_{99}$ z testovací množiny (soubor ''GT.dsv''). ==== 1. Výběr vhodného parametru ==== V této části předpokládejme, že klasifikátory slouží k binární klasifikaci obrázků (např. jestli je na obrázku pes). Pro klasifikátor 1 (soubor ''C1.dsv'') určete, která hodnota parametru $\{\alpha_0, \alpha_1, \dots, \alpha_{49}\}$ je nejvhodnější. Uvědomte si, že zatím nevíte, pro jakou konkrétní úlohu bude daný klasifikátor použit, a proto je nutné použít dostatečně obecnou úvahu. Tedy použitá úvaha by neměla použití klasifikátoru eliminovat na jednu konkrétní úlohu. V **PDF reportu** vaší volbu parametru zdůvodněte (užijte pojmy jako např. sensitivita, falešně pozitivní, ROC křivka atd.). Do reportu také vykreslete ROC křivku a na této křivce znázorněte bod, který odpovídá optimální hodnotě parametru $\alpha$. ==== 2. Přísně tajné! ==== Nyní si představte, že jste agent/ka 00111 a chcete k zabezpečení velmi tajných dokumentů použít svůj otisk prstu. Jedná se o velmi citlivá data, takže pokud nebudou kvalitně zabezpečena, tak bude lepší je zničit. K odemčení dat je vždy dostatek času. K dispozici máte 5 natrénovaných klasifikátorů (s různými hodnotami parametru $\alpha$). Vstupem klasifikátoru (vektor $\bf x$) je sken otisku prstu a v případě, že se jedná o váš otisk prstu, tak požadovaným výstupem klasifikátoru je hodnota 1 (dojde k odemčení dat), jinak hodnota 0. Všechny klasifikátory byly otestovány na testovací množině $X$ pro všechny hodnoty parametru $\alpha$. Výsledky testu pro jednotlivé klasifikátory jsou uloženy v souborech ''C1.dsv'' až ''C5.dsv'' (viz výše). K dispozici je také skutečná příslušnost jednotlivých otisků prstů (viz //GT//). Vyberte vhodný klasifikátor a jeho parametr $\alpha$. V **PDF reportu** uveďte svoji volbu a vysvětlete, podle jakých kritérií byla provedena. ==== 3. Hlavně bezpečně ==== Tato část navazuje na předchozí část **Přísně tajné!** Váš kolega, také agent, se nabídne, že vám poskytne svůj klasifikátor, který je opět závislý na parametru $\alpha$. Protože není jisté, jestli se nejedná o dvojitého agenta, tak bude dobré nejdříve zjistit, jestli je klasifikátor lepší než klasifikátor vybraný v předchozí části. Z bezpečnostních důvodů bude muset rozhodnutí provést předem vytvořená funkce. Vstupem funkce bude tabulka //C6// uložená v souboru ''C6.dsv'', který v tuto chvíli nemáte k dispozici. Soubor bude mít stejný formát, jako soubory ''C1.dsv'' až ''C5.dsv''. Výstupem funkce bude rozhodnutí, zda je nový klasifikátor lepší než ten z předchozí části (''True'', pokud je klasifikátor lepší, jinak ''False''). V **PDF reportu** vysvětlete, podle jakých kritérií se bude funkce rozhodovat, a odevzdejte také funkci, která tuto úlohu řeší (soubor ''.py'' se může jmenovat libovolně, ale odevzdejte v ZIPu jen jeden).