====== Strojové učení -- výběr optimálního klasifikátoru ====== Termín odevzdání úlohy je v [[https://cw.felk.cvut.cz/upload/|Upload Systému]]. Odevzdává se do upload systému. **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ů]** 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 je soubor (odkaz je níže), se kterým budete při řešení úlohy pracovat. Předpokládá se, že k řešení úlohy bude použit Python. Do odevzdávacího systému se odevzdává **pdf report** a implementace související s částí **Hlavně bezpečně**. Celková délka reportu by měla být rozhodně **kratší než dvě strany A4**. **Doporučená délka reportu je jedna strana A4.** 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$. Výsledek klasifikace daného klasifikátoru lze tedy vyjádřit jako funkci $C(\bf x, \alpha) \in \{0,1\}$, kde $\bf x$ je vektor náležící vzorku, který chceme klasifikovat. Všechny klasifikátory pustíme na testovací množině $X = \{{\bf x}_0, {\bf x}_1, \dots, {\bf x}_{99} \}$. Zároveň vyzkoušíme 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\}$ (viz //C1//, //C2//, //C3//, //C4//, //C5// v {{ :courses:b3b33kui:cviceni:strojove_uceni:classif_result_tables.zip |classif_result_tables.zip}}). Dále máme k dispozici skutečnou příslušnost vzorků $\bf x_0, \bf x_1, \dots, \bf x_{99}$ z testovací množiny (viz //GT// v ''classif_result_tables.zip''). ===== 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 (tabulka //C1//) 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 krátkém **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. ===== 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 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 tabulkách //C1//, //C2//, //C3//, //C4//, //C5// (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. ===== 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// s výsledky klasifikace na testovací množině pro různé parametry $\alpha$ (ve stejném formátu jako //C1//, //C2//, atd.) a případně dalšími parametry dle uvážení. 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é řešící funkci.