\[ \def\_#1{\mathbf{#1}} \def\bb#1{\mathbb{#1}} \] ====== PCA: Volby ====== (vytvořil [[http://cmp.felk.cvut.cz/~cechj|Jan Čech]] 2017) Občanské sdružení [[http://kohovolit.eu|KohoVolit.eu]] připravilo pro poslední volby do Poslanecké sněmovny parlamentu ČR tzv. Volební kalkulačku. Základní myšlenka volební kalkulačky je pomoci voliči, aby se rychle zorientoval v programu politických stran, a to tak, že se měří shoda vlastních voličových názorů s programovými otázkami kandidátních stran prostřednictvím sady otázek z mnoha oblastí. Byla vytvořena sada 100 otázek, na které lze odpovědět Ano/Ne/Nevím. Kandidující politické strany byly obeslány, 25 z nich dodalo odpovědi. Volič na webu následně odpoví na stejné otázky a volební kalkulačka vyhodnotí shodu jeho odpovědí a seřadí a doporučí politické strany. Existuje i kratší verze kalkulačky, kde je jen podmnožina 35 otázek. My se ale nadále budeme zabývat úplnou sadou 100 otázek. Data jsme stáhli a převedli do formátu vhodného pro zpracování v Matlabu: {{volby_2017.mat}} (používáte-li octave, bude se Vám spíš hodit {{volby_2017_ascii.mat}}, lišící se jen absencí diakritiky v textových řetězcích [octave si neporadí s UTF-8]). Soubor obsahuje následující datové struktury: * T.data matice 100x25, kde řádky znamenají otázky, sloupce politické strany. Prvky této matice jsou: 1 odpověď ANO, -1 odpověď NE, 0 (všechny ostatní případy, tj. odpověď nepovažují za jednoznačnou, neví, nechtějí se vyjádřit). * T.comments 100x25 cell array komentářů politických stran k odpovědím. * T.questions 100x1 cell array otázek. * T.strana_zkratka 1x25 cell array zkratky politických stran. * T.strana 1x25 cell array plné názvy politických stran. * T.color 1x25 RGB vektor politické strany * T.pref_last 1x25 odhadované preference podle posledního průzkumu agentury Median před volbami (říjen 2017) ===== Úkol 1 ===== Jednotlivé politické strany $\{a_1, \dots, a_{25}\}$, kde $a_i \in \bb R^{100} $ je možné chápat jako body v prostoru odpovědí na referenční programové otázky. Chtěli bychom tento prostor vhodně vizualizovat. To uděláme tak, že body $a_i$ proložíme **afinním** podprostorem dimenze 2, tak aby součet kvadrátů vzdáleností původních $a_i$ a promítnutých bodů $a_i'$ byl minimální. Následně promítnuté body zobrazíme v souřadnicích báze nalezeného afinního podprostoru. - Formulujte optimalizační problém. [výstup: rovnice, slovní vysvětlení symbolů] - Vyřeště optimalizační problém. [výstup: symbolický zápis optimálního řešení, hodnota kriteria] - Najděte ortonormální bázi nalezeného afinního podprostoru $\mbox{span}\{a_1',\dots,a_{25}'\} + a_0$ a jednotlivé politické strany zobrazte v souřadnicích této báze (jejíž vektory ztotožníte s osami 2D grafu). Zakreslené body obarvěte barvou strany (podle T.color). [výstup: graf] - Interpretujte výsledek. [výstup: stručné slovní hodnocení] ===== Úkol 2 ===== Vizualizovat tato data je možné i z opačného pohledu. Jednotlivé otázky $\{b_1, \dots, b_{100}\}$, kde $b_i \in \bb R^{25}$ jsou body v prostoru politických stran. Otázky zobrazíme opět v prostoru dimenze 2. - Postupujte obdobně jako v minulém příkladu a zakreselete jednotlivé otázky v souřadnicích ortonormální báze dimenze 2 prostoru proložení ve smyslu nejmenších čtverců. Výsledné body obarvěte podle toho, zda většina politických stran odpovídá ano. [výstup: graf] - Interpretujte výsledek. [výstup: stručné slovní hodnocení] - Je možné nalézt ortonormální bázi hledaného podprostoru a souřadnice promítnutých bodů v této bázi využitím výpočtu z předchozího úkolu? Pokud ano, vysvětlete. [výstup: slovní vysvětlení případně vzorce]. Prosíme také o odevzdání kódu (což je povinné u každé domácí úlohy, viz [[../../start#domaci_ulohy|stránka cvičení]]).