====== Redukce dimenzionality (PCA) ====== **Redukce dimenzionality** je proces snižování počtu vstupních proměnných (rysů/dimenzí) v datové sadě. Cílem je zjednodušit data, odstranit šum a umožnit vizualizaci při zachování co největšího množství původních informací. Nejznámější a nejpoužívanější lineární metodou pro tento úkol je **Analýza hlavních komponent** (Principal Component Analysis – **PCA**). ===== 1. Proč redukovat dimenze? ===== * **Prokletí dimenzionality (Curse of Dimensionality):** S rostoucím počtem dimenzí se data stávají "řídkými", což zhoršuje výkon mnoha algoritmů (např. [[it:ml:clustering|K-Means]] nebo k-NN). * **Vizualizace:** Lidé dokáží vnímat data maximálně ve 3D. PCA umožní promítnout např. 100-rozměrná data do 2D grafu. * **Odstranění multikolinearity:** PCA vytvoří nové rysy, které mezi sebou nejsou korelované. * **Zrychlení výpočtů:** Méně dat znamená rychlejší trénování modelů a nižší nároky na paměť. ===== 2. Jak PCA funguje? (Princip) ===== PCA matematicky transformuje data do nového souřadnicového systému: 1. **Hledání směru největšího rozptylu:** Algoritmus najde směr (osu), ve kterém se data nejvíce mění. Tato osa se nazývá **První hlavní komponenta (PC1)**. 2. **Ortogonalita:** Druhá hlavní komponenta (**PC2**) musí být kolmá na první a musí vysvětlovat druhý největší podíl zbývajícího rozptylu. 3. **Projekce:** Původní data jsou promítnuta na tyto nové osy. ===== 3. Postup výpočtu (Algoritmus) ===== Pro zájemce o matematické pozadí probíhá PCA v těchto krocích: * **Standardizace:** Data musí mít průměr 0 a rozptyl 1 (jinak by proměnné s velkými čísly dominovaly). * **Výpočet kovarianční matice:** Určení vztahů mezi všemi dvojicemi rysů. * **Výpočet vlastních čísel (eigenvalues) a vlastních vektorů (eigenvectors):** Ty určují směr a sílu hlavních komponent. * **Seřazení:** Komponenty se seřadí podle velikosti vlastních čísel. ===== 4. Praktické využití ===== * **Komprese obrazu:** Snížení počtu pixelů při zachování rozpoznatelnosti objektů. * **Genetika:** Analýza tisíců genů a jejich seskupování do skupin podle podobnosti. * **Finance:** Identifikace hlavních faktorů ovlivňujících trh (např. úrokové sazby, inflace). * **Preprocessing pro ML:** Často se používá jako krok před nasazením [[it:ml:regrese|regrese]] nebo klasifikace. ===== 5. Omezení PCA ===== * **Ztráta interpretovatelnosti:** Hlavní komponenty jsou lineární kombinací původních rysů. Např. PC1 už není "věk", ale složitý vzorec složený z věku, příjmu a vzdělání. * **Lineární omezení:** PCA předpokládá lineární vztahy. Pro nelineární data jsou vhodnější metody jako **t-SNE** nebo [[it:ai:autoencoders|Autoenkodéry]]. ===== Ukázka v Pythonu (Scikit-Learn) ===== from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler # 1. Standardizace dat X_std = StandardScaler().fit_transform(X) # 2. Inicializace PCA (chceme zachovat 2 nejdůležitější komponenty) pca = PCA(n_components=2) X_pca = pca.fit_transform(X_std) # 3. Zjištění, kolik informací jsme zachovali print(f"Zachovaný rozptyl: {pca.explained_variance_ratio_.sum()}") ---- //Související články:// * [[it:ml:standardization|Standardizace a normalizace dat]] * [[it:ai:autoencoders|Autoenkodéry (Nelineární redukce)]] * [[it:ml:clustering|Shlukování a jeho problémy v mnoha dimenzích]] //Tagy: {{tag>ai ml pca statistika dimensionality_reduction math}}//