AI 101

Co je snížení dimenzionality?

mm

Co je snížení dimenzionality?

Snížení dimenzionality je proces, který se používá ke snížení dimenzionality datové sady, přičemž mnoho vlastností se zastupuje několika vlastnostmi. Například snížení dimenzionality by se mohlo použít ke snížení datové sady se dvaceti vlastnostmi na pouhé几 vlastnosti. Snížení dimenzionality se běžně používá v nepřímo řízených úkolech k automatickému vytváření tříd z mnoha vlastností. Abychom lépe pochopili proč a jak se snížení dimenzionality používá, budeme se zabývat problémy spojenými s vysokodimenzionálními daty a nejběžnějšími metodami snížení dimenzionality.

Více dimenzí vede k přeučení

Dimenzionality odkazuje na počet vlastností/sloupců v datové sadě.

Často se předpokládá, že v strojovém učení je více vlastností lepší, protože vytváří přesnější model. Nicméně, více vlastností neznamená automaticky lepší model.

Vlastnosti datové sady se mohou velmi lišit v užitečnosti pro model, přičemž mnoho vlastností má malý význam. Kromě toho, čím více vlastností datová sada obsahuje, tím více vzorků je potřeba k zajištění toho, aby různé kombinace vlastností byly dobře reprezentovány v datech. Proto se počet vzorků zvyšuje úměrně s počtem vlastností. Více vzorků a více vlastností znamená, že model musí být složitější, a protože modely jsou složitější, stávají se více citlivými na přeučení. Model se naučí vzory v trénovacích datech příliš dobře a nezobecní na data mimo vzorek.

Snížení dimenzionality datové sady má několik výhod. Jak bylo zmíněno, jednodušší modely jsou méně náchylné k přeučení, protože model musí dělat méně předpokladů o vztazích mezi vlastnostmi. Kromě toho méně dimenzí znamená méně výpočetního výkonu, který je potřeba k trénování algoritmů. Stejně tak je potřeba méně úložného prostoru pro datovou sadu, která má menší dimenzionality. Snížení dimenzionality datové sady může také umožnit použití algoritmů, které nejsou vhodné pro datové sady s mnoha vlastnostmi.

Běžné metody snížení dimenzionality

Snížení dimenzionality lze provést pomocí výběru vlastností nebo inženýrství vlastností. Výběr vlastností je proces, při kterém inženýr identifikuje nejrelevantnější vlastnosti datové sady, zatímco inženýrství vlastností je proces vytváření nových vlastností kombinací nebo transformací jiných vlastností.

Výběr a inženýrství vlastností lze provádět programově nebo ručně. Při ručním výběru a inženýrství vlastností je typické vizualizovat data, aby se objevily korelace mezi vlastnostmi a třídami. Provádění snížení dimenzionality tímto způsobem může být bastante časově náročné a proto některé z nejběžnějších způsobů snížení dimenzionality zahrnují použití algoritmů dostupných v knihovnách jako Scikit-learn pro Python. Tyto běžné algoritmy snížení dimenzionality zahrnují: Analýzu hlavních komponent (PCA), Singulární hodnotu dekompozice (SVD) a Lineární diskriminační analýzu (LDA).

Algoritmy používané ve snížení dimenzionality pro nepřímo řízené úkoly jsou typicky PCA a SVD, zatímco ty, které se používají pro řízené úkoly snížení dimenzionality, jsou typicky LDA a PCA. V případě řízených modelů se nově vytvořené vlastnosti jednoduše zadávají do klasifikátoru strojového učení. Poznámka, že použití zde popsaná jsou pouze obecné případy a nejsou jedinými podmínkami, za kterých se tyto techniky používají. Algoritmy snížení dimenzionality popsané výše jsou prostě statistickými metodami a používají se mimo modely strojového učení.

Analýza hlavních komponent

Foto: Matice s identifikovanými hlavními komponentami

Analýza hlavních komponent (PCA) je statistická metoda, která analyzuje charakteristiky/vlastnosti datové sady a souhrnně popisuje vlastnosti, které jsou nejvlivnější. Vlastnosti datové sady se kombinují do reprezentací, které zachovávají většinu charakteristik dat, ale jsou rozloženy přes méně dimenzí. Můžete si to představit jako “stlačení” dat z vyšší dimenzionální reprezentace na reprezentaci s pouze několika dimenzemi.

Jako příklad situace, kdy by se PCA mohlo hodit, přemýšlejte o různých způsobech, jak popsat víno. Zatímco je možné popsat víno pomocí mnoha velmi specifických vlastností, jako je úroveň CO2, úroveň aerace atd., tyto specifické vlastnosti mohou být relativně zbytečné při identifikaci konkrétního typu vína. Místo toho by bylo více rozumné identifikovat typ na základě obecnějších vlastností, jako je chuť, barva a věk. PCA lze použít ke kombinaci specifičtějších vlastností a vytvoření vlastností, které jsou obecnější, užitečnější a méně pravděpodobně způsobí přeučení.

PCA se provádí určením, jak vstupní vlastnosti se liší od průměru ve vztahu k sobě navzájem, určením, zda existují nějaké vztahy mezi vlastnostmi. K tomu se vytváří kovarianční matice, která vytváří matici složenou z kovariancí ve vztahu k možným párům vlastností datové sady. To se používá k určení korelací mezi proměnnými, přičemž záporná kovarianční indikuje inverzní korelaci a pozitivní korelaci indikuje pozitivní korelaci.

Hlavní (nejvlivnější) komponenty datové sady se vytvářejí vytvořením lineárních kombinací počátečních proměnných, což se provádí s pomocí lineární algebry konceptů nazývaných hodnoty a vektory. Kombinace se vytvářejí tak, aby hlavní komponenty byly nekorelovány navzájem. Většina informací obsažených v počátečních proměnných je komprimována do prvních několika hlavních komponent, což znamená, že byly vytvořeny nové vlastnosti (hlavní komponenty), které obsahují informace z původní datové sady v menší dimenzionální prostoru.

Singulární hodnota dekompozice

Foto: Autor Cmglee – Vlastní dílo, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297

Singulární hodnota dekompozice (SVD) se používá ke zjednodušení hodnot uvnitř matice, snížení matice na její složky a usnadnění výpočtů s touto maticí. SVD lze použít pro reálné i komplexní matice, ale pro účely tohoto vysvětlení se budeme zabývat tím, jak dekomponovat matici reálných hodnot.

Předpokládejme, že máme matici složenou z reálných dat a náš cíl je snížit počet sloupců/vlastností uvnitř matice, podobně jako cíl PCA. Jako PCA bude SVD komprimovat dimenzionality matice, zatímco zachová většinu variability matice. Pokud chceme pracovat s maticí A, můžeme reprezentovat matici A jako tři další matice nazývané U, D a V. Matice A se skládá z původních x * y prvků, zatímco matice U se skládá z prvků X * X (je to ortogonální matice). Matice V je jiná ortogonální matice obsahující y * y prvků. Matice D obsahuje prvky x * y a je to diagonální matice.

K dekompozici hodnot pro matici A potřebujeme převést původní singulární maticové hodnoty na diagonální hodnoty nalezené v nové matici. Při práci s ortogonálními maticemi se jejich vlastnosti nezmění, pokud se násobí jinými čísly. Proto můžeme aproximovat matici A tím, že využijeme této vlastnosti. Když násobíme ortogonální matice společně s transpozicí matice V, výsledkem je matici ekvivalentní k naší původní A.

Když je matice A dekomponována na matice U, D a V, obsahují data nalezená v matici A. Nicméně, levé sloupce matic budou obsahovat většinu dat. Můžeme vzít pouze tyto první几 sloupce a mít reprezentaci matice A, která má mnohem méně dimenzí a většinu dat uvnitř A.

Lineární diskriminační analýza

 

Vlevo: Matice před LDA, Vpravo: Osa po LDA, nyní separovatelná

Lineární diskriminační analýza (LDA) je proces, který bere data z multidimenzionálního grafu a projektuje je na lineární graf. Můžete si to představit tak, že máte dvourozměrný graf plný datových bodů, které patří do dvou různých tříd. Předpokládejme, že body jsou rozptýleny tak, že žádná linie nemůže být nakreslena tak, aby oddělila dvě třídy. Abychom tento problém vyřešili, body v 2D grafu lze snížit na 1D graf (linii). Tato linie bude mít všechny datové body rozložené po ní a bude se snažit je rozdělit na dvě části, které reprezentují nejlepší možnou separaci dat.

Při provádění LDA jsou dva hlavní cíle. První cíl je minimalizovat variaci pro třídy, zatímco druhý cíl je maximalizovat vzdálenost mezi prostředky dvou tříd. Tyto cíle se dosahují vytvořením nové osy, která bude existovat v 2D grafu. Nová osa působí tak, aby oddělila dvě třídy na základě dříve popsaných cílů. Po vytvoření osy se body v 2D grafu umístí podél osy.

Existují tři kroky, které jsou nutné k přesunu původních bodů do nové polohy na nové ose. V prvním kroku se vypočítá vzdálenost mezi průměry jednotlivých tříd (variance mezi třídami), aby se určila separovatelnost tříd. Ve druhém kroku se vypočítá variace uvnitř jednotlivých tříd, a to stanovením vzdálenosti mezi vzorkem a průměrem třídy. Ve třetím kroku se vytváří nižší dimenzionální prostor, který maximalizuje variaci mezi třídami.

Technika LDA dosahuje nejlepších výsledků, když jsou průměry cílových tříd daleko od sebe. LDA nemůže účinně oddělit třídy lineární osou, pokud se průměry distribucí překrývají.

V posledním kroku se nižší dimenzionální prostor, který maximalizuje variaci mezi třídami, vytváří. Technika LDA dosahuje nejlepších výsledků, když jsou průměry cílových tříd daleko od sebe. LDA nemůže účinně oddělit třídy lineární osou, pokud se průměry distribucí překrývají.

Blogger a programátor se specializací na Machine Learning a Deep Learning témata. Daniel doufá, že pomůže ostatním využít sílu AI pro sociální dobro.