S rostoucím počtem prvků nebo dimenzí v datové sadě exponenciálně roste množství dat potřebných k získání statisticky významného výsledku. To může vést k problémům, jako je přemontování, delší výpočetní čas a snížená přesnost modelů strojového učení, což je známé jako prokletí problémů s rozměrem, které vznikají při práci s vysokorozměrnými daty.
S rostoucím počtem dimenzí se exponenciálně zvyšuje počet možných kombinací vlastností, což ztěžuje výpočetně obtížné získání reprezentativního vzorku dat a stává se nákladným provádět úkoly, jako je shlukování nebo klasifikace, protože se to stává. Navíc některé strojové učení Algoritmy mohou být citlivé na počet dimenzí a vyžadují více dat k dosažení stejné úrovně přesnosti jako data o nižších dimenzích.
Na adresu prokletí dimenzionality , Funkce inženýrství používají se techniky, které zahrnují výběr vlastností a extrakci vlastností. Redukce rozměrů je typ techniky extrakce příznaků, jehož cílem je snížit počet vstupních příznaků a zároveň zachovat co nejvíce původních informací.
V tomto článku budeme diskutovat o jedné z nejpopulárnějších technik redukce rozměrů, tj. Analýza hlavních komponent (PCA).
Co je analýza hlavních součástí (PCA)?
Analýza hlavních komponent (PCA) technika byla zavedena matematikem Karl Pearson v roce 1901 . Funguje za podmínky, že zatímco data v prostoru vyšších dimenzí jsou mapována na data v prostoru nižších dimenzí, rozptyl dat v prostoru nižších dimenzí by měl být maximální.
- Analýza hlavních komponent (PCA) je statistická procedura, která využívá ortogonální transformaci, která převádí sadu korelovaných proměnných na sadu nekorelovaných proměnných. PCA je nejrozšířenějším nástrojem v průzkumné analýze dat a ve strojovém učení pro prediktivní modely. Navíc,
- Principal Component Analysis (PCA) je an učení bez dozoru technika algoritmu používaná ke zkoumání vzájemných vztahů mezi sadou proměnných. Je také známá jako obecná faktorová analýza, kde regrese určuje linii nejlépe vyhovující.
- Hlavním cílem analýzy hlavních komponent (PCA) je snížit dimenzionalitu souboru dat při zachování nejdůležitějších vzorců nebo vztahů mezi proměnnými bez jakékoli předchozí znalosti cílových proměnných.
Principal Component Analysis (PCA) se používá ke snížení dimenzionality souboru dat nalezením nové sady proměnných, menší než původní sada proměnných, uchovává většinu informací o vzorku a je užitečná pro regrese a klasifikace dat.
Analýza hlavních komponent
mapový java iterátor
- Principal Component Analysis (PCA) je technika pro redukci rozměrů, která identifikuje sadu ortogonálních os, nazývaných hlavní komponenty, které zachycují maximální rozptyl v datech. Hlavní komponenty jsou lineární kombinace původních proměnných v datové sadě a jsou seřazeny podle klesající důležitosti. Celkový rozptyl zachycený všemi hlavními složkami se rovná celkovému rozptylu v původním souboru dat.
- První hlavní složka zachycuje největší odchylky v datech, ale druhá hlavní složka zachycuje maximum rozptyl to znamená ortogonální k první hlavní složce a tak dále.
- Analýza hlavních komponent může být použita pro různé účely, včetně vizualizace dat, výběru funkcí a komprese dat. Při vizualizaci dat lze PCA použít k vykreslení vysoce dimenzionálních dat ve dvou nebo třech rozměrech, což usnadňuje interpretaci. Při výběru funkcí lze PCA použít k identifikaci nejdůležitějších proměnných v datové sadě. Při kompresi dat lze PCA použít ke zmenšení velikosti datové sady bez ztráty důležitých informací.
- V analýze hlavních komponent se předpokládá, že informace jsou neseny v rozptylu vlastností, to znamená, že čím vyšší je variace prvku, tím více informací nese prvky.
Celkově je PCA výkonným nástrojem pro analýzu dat a může pomoci zjednodušit složité datové sady, což usnadňuje jejich pochopení a práci s nimi.
Vysvětlení krok za krokem PCA (analýza hlavních komponent)
Krok 1: Standardizace
Za prvé, musíme standardizovat náš soubor dat, abychom zajistili, že každá proměnná bude mít průměr 0 a směrodatnou odchylku 1.
Tady,
-
je průměrem nezávislých vlastností
-
je standardní odchylka nezávislých funkcí
Krok 2: Výpočet kovarianční matice
Kovariance měří sílu společné variability mezi dvěma nebo více proměnnými, což ukazuje, jak moc se mění ve vztahu k sobě navzájem. K nalezení kovariance můžeme použít vzorec:
Hodnota kovariance může být kladná, záporná nebo nulová.
- Pozitivní: Jak se x1 zvyšuje, x2 se také zvyšuje.
- Negativní: Jak se x1 zvyšuje, x2 také klesá.
- Nuly: Žádný přímý vztah
Krok 3: Vypočtěte vlastní čísla a vlastní vektory kovarianční matice pro identifikaci hlavních komponent
Nechť A je čtvercová matice nXn a X je nenulový vektor, pro který
pro některé skalární hodnoty . pak
je známý jako vlastní hodnota matice A a X je známá jako vlastní vektor matice A pro odpovídající vlastní hodnotu.
Může být také zapsán jako:
kde I jsem matice identity stejného tvaru jako matice A. A výše uvedené podmínky budou pravdivé pouze tehdy, když bude neinvertibilní (tj. singulární matice). To znamená,
Z výše uvedené rovnice můžeme najít vlastní čísla lambda, a proto lze pomocí rovnice najít odpovídající vlastní vektor .
Jak funguje analýza hlavních komponent (PCA)?
PCA tedy využívá lineární transformaci, která je založena na zachování největšího rozptylu v datech při použití nejmenšího počtu dimenzí. Zahrnuje následující kroky:
Python3
import> pandas as pd> import> numpy as np> # Here we are using inbuilt dataset of scikit learn> from> sklearn.datasets> import> load_breast_cancer> # instantiating> cancer> => load_breast_cancer(as_frame> => True> )> # creating dataframe> df> => cancer.frame> # checking shape> print> (> 'Original Dataframe shape :'> ,df.shape)> # Input features> X> => df[cancer[> 'feature_names'> ]]> print> (> 'Inputs Dataframe shape :'> , X.shape)> |
>
>
Výstup :
Original Dataframe shape : (569, 31) Inputs Dataframe shape : (569, 30)>
Nyní použijeme první krok, kterým je standardizace dat, a proto budeme muset nejprve vypočítat průměr a směrodatnou odchylku každého prvku v prostoru prvků.
Python3
# Mean> X_mean> => X.mean()> # Standard deviation> X_std> => X.std()> # Standardization> Z> => (X> -> X_mean)> /> X_std> |
>
>
The kovariance matice nám pomáhá vizualizovat, jak silná je vzájemná závislost dvou prvků v prostoru prvků.
Python3
# covariance> c> => Z.cov()> # Plot the covariance matrix> import> matplotlib.pyplot as plt> import> seaborn as sns> sns.heatmap(c)> plt.show()> |
>
>
Výstup :
Nyní budeme počítat vlastní vektory a vlastní čísla pro náš hraný prostor, který slouží skvělému účelu při identifikaci hlavních komponent našeho hraného prostoru.
Python3
eigenvalues, eigenvectors> => np.linalg.eig(c)> print> (> 'Eigen values:
'> , eigenvalues)> print> (> 'Eigen values Shape:'> , eigenvalues.shape)> print> (> 'Eigen Vector Shape:'> , eigenvectors.shape)> |
>
>
Výstup :
Eigen values: [1.32816077e+01 5.69135461e+00 2.81794898e+00 1.98064047e+00 1.64873055e+00 1.20735661e+00 6.75220114e-01 4.76617140e-01 4.16894812e-01 3.50693457e-01 2.93915696e-01 2.61161370e-01 2.41357496e-01 1.57009724e-01 9.41349650e-02 7.98628010e-02 5.93990378e-02 5.26187835e-02 4.94775918e-02 1.33044823e-04 7.48803097e-04 1.58933787e-03 6.90046388e-03 8.17763986e-03 1.54812714e-02 1.80550070e-02 2.43408378e-02 2.74394025e-02 3.11594025e-02 2.99728939e-02] Eigen values Shape: (30,) Eigen Vector Shape: (30, 30)>
Seřaďte vlastní čísla v sestupném pořadí a podle toho seřaďte odpovídající vlastní vektory.
Python3
# Index the eigenvalues in descending order> idx> => eigenvalues.argsort()[::> -> 1> ]> # Sort the eigenvalues in descending order> eigenvalues> => eigenvalues[idx]> # sort the corresponding eigenvectors accordingly> eigenvectors> => eigenvectors[:,idx]> |
>
>
Vysvětlená odchylka je termín, který nám dává představu o velikosti celkové odchylky, která byla zachována výběrem hlavních komponent namísto původního prostoru prvků.
Python3
explained_var> => np.cumsum(eigenvalues)> /> np.> sum> (eigenvalues)> explained_var> |
>
>
Výstup :
array([0.44272026, 0.63243208, 0.72636371, 0.79238506, 0.84734274, 0.88758796, 0.9100953 , 0.92598254, 0.93987903, 0.95156881, 0.961366 , 0.97007138, 0.97811663, 0.98335029, 0.98648812, 0.98915022, 0.99113018, 0.99288414, 0.9945334 , 0.99557204, 0.99657114, 0.99748579, 0.99829715, 0.99889898, 0.99941502, 0.99968761, 0.99991763, 0.99997061, 0.99999557, 1. ])>
Určete počet hlavních součástí
Zde můžeme uvažovat buď počet hlavních složek libovolné hodnoty dle našeho výběru, nebo omezením vysvětleného rozptylu. Zde uvažuji vysvětlený rozptyl více než rovný 50 %. Podívejme se, kolik hlavních součástí do toho vstupuje.
Python3
n_components> => np.argmax(explained_var>> => 0.50> )> +> 1> n_components> |
>
>
Výstup :
2>
Promítněte data do vybraných hlavních komponent
- Najděte projekční matici, Je to matice vlastních vektorů odpovídajících největším vlastním hodnotám kovarianční matice dat. promítá vysokorozměrnou datovou sadu do podprostoru nižší dimenze
- Vlastní vektory kovarianční matice dat se označují jako hlavní osy dat a projekce instancí dat na tyto hlavní osy se nazývá hlavní složky.
Python3
# PCA component or unit matrix> u> => eigenvectors[:,:n_components]> pca_component> => pd.DataFrame(u,> > index> => cancer[> 'feature_names'> ],> > columns> => [> 'PC1'> ,> 'PC2'> ]> > )> # plotting heatmap> plt.figure(figsize> => (> 5> ,> 7> ))> sns.heatmap(pca_component)> plt.title(> 'PCA Component'> )> plt.show()> |
>
>
Výstup :
- Poté promítneme naši datovou sadu pomocí vzorce:
- Snížení rozměrů je pak dosaženo pouze zachováním těch os (rozměrů), které tvoří většinu rozptylu, a vyřazením všech ostatních.
Hledání projekce v PCA
Python3
# Matrix multiplication or dot Product> Z_pca> => Z @ pca_component> # Rename the columns name> Z_pca.rename({> 'PC1'> :> 'PCA1'> ,> 'PC2'> :> 'PCA2'> }, axis> => 1> , inplace> => True> )> # Print the Pricipal Component values> print> (Z_pca)> |
>
>
Výstup :
PCA1 PCA2 0 9.184755 1.946870 1 2.385703 -3.764859 2 5.728855 -1.074229 3 7.116691 10.266556 4 3.931842 -1.946359 .. ... ... 564 6.433655 -3.573673 565 3.790048 -3.580897 566 1.255075 -1.900624 567 10.365673 1.670540 568 -5.470430 -0.670047 [569 rows x 2 columns]>
Vlastní vektory kovarianční matice dat se označují jako hlavní osy dat a projekce instancí dat na tyto hlavní osy se nazývá hlavní složky. Snížení rozměrů je pak dosaženo pouze zachováním těch os (rozměrů), které tvoří většinu rozptylu, a vyřazením všech ostatních.
PCA pomocí Sklearn
Existují různé knihovny, ve kterých je celý proces analýzy hlavních komponent automatizován tím, že je implementován v balíčku jako funkce a my musíme pouze předat počet hlavních komponent, které bychom chtěli mít. Sklearn je jednou takovou knihovnou, kterou lze použít pro PCA, jak je uvedeno níže.
Python3
# Importing PCA> from> sklearn.decomposition> import> PCA> # Let's say, components = 2> pca> => PCA(n_components> => 2> )> pca.fit(Z)> x_pca> => pca.transform(Z)> # Create the dataframe> df_pca1> => pd.DataFrame(x_pca,> > columns> => [> 'PC{}'> .> > format> (i> +> 1> )> > for> i> in> range> (n_components)])> print> (df_pca1)> |
>
>
Výstup:
PC1 PC2 0 9.184755 1.946870 1 2.385703 -3.764859 2 5.728855 -1.074229 3 7.116691 10.266556 4 3.931842 -1.946359 .. ... ... 564 6.433655 -3.573673 565 3.790048 -3.580897 566 1.255075 -1.900624 567 10.365673 1.670540 568 -5.470430 -0.670047 [569 rows x 2 columns]>
Můžeme porovnat z výše uvedeného Z_pca výsledek, z toho jsou přesně stejné hodnoty.
Python3
# giving a larger plot> plt.figure(figsize> => (> 8> ,> 6> ))> plt.scatter(x_pca[:,> 0> ], x_pca[:,> 1> ],> > c> => cancer[> 'target'> ],> > cmap> => 'plasma'> )> # labeling x and y axes> plt.xlabel(> 'First Principal Component'> )> plt.ylabel(> 'Second Principal Component'> )> plt.show()> |
>
>
Výstup:
Python3
# components> pca.components_> |
>
>
Výstup :
array([[ 0.21890244, 0.10372458, 0.22753729, 0.22099499, 0.14258969, 0.23928535, 0.25840048, 0.26085376, 0.13816696, 0.06436335, 0.20597878, 0.01742803, 0.21132592, 0.20286964, 0.01453145, 0.17039345, 0.15358979, 0.1834174 , 0.04249842, 0.10256832, 0.22799663, 0.10446933, 0.23663968, 0.22487053, 0.12795256, 0.21009588, 0.22876753, 0.25088597, 0.12290456, 0.13178394], [-0.23385713, -0.05970609, -0.21518136, -0.23107671, 0.18611302, 0.15189161, 0.06016536, -0.0347675 , 0.19034877, 0.36657547, -0.10555215, 0.08997968, -0.08945723, -0.15229263, 0.20443045, 0.2327159 , 0.19720728, 0.13032156, 0.183848 , 0.28009203, -0.21986638, -0.0454673 , -0.19987843, -0.21935186, 0.17230435, 0.14359317, 0.09796411, -0.00825724, 0.14188335, 0.27533947]])>
Výhody analýzy hlavních komponent
- Redukce rozměrů : Principal Component Analysis je populární technika používaná pro zmenšení rozměrů , což je proces snižování počtu proměnných v datové sadě. Snížením počtu proměnných PCA zjednodušuje analýzu dat, zlepšuje výkon a usnadňuje vizualizaci dat.
- Výběr funkcí : Lze použít analýzu hlavních komponent výběr funkcí , což je proces výběru nejdůležitějších proměnných v datové sadě. To je užitečné ve strojovém učení, kde může být počet proměnných velmi velký a je obtížné identifikovat nejdůležitější proměnné.
- Vizualizace dat : Lze použít analýzu hlavních komponent Multikolinearita : K řešení lze použít analýzu hlavních komponent multikolinearita , což je běžný problém v regresní analýze, kde jsou dvě nebo více nezávislých proměnných vysoce korelované. PCA může pomoci identifikovat základní strukturu v datech a vytvořit nové, nekorelované proměnné, které lze použít v regresním modelu.
- Redukce hluku : Analýza hlavních komponent může být použita ke snížení šumu v datech. Odstraněním hlavních komponent s nízkým rozptylem, o kterých se předpokládá, že představují šum, může analýza hlavních komponent zlepšit poměr signálu k šumu a usnadnit identifikaci základní struktury v datech.
- Komprese dat : Pro kompresi dat lze použít analýzu hlavních komponent. Reprezentací dat pomocí menšího počtu hlavních komponent, které zachycují většinu změn v datech, může PCA snížit požadavky na úložiště a urychlit zpracování.
- Detekce odlehlých hodnot : Analýza hlavních komponent může být použita pro detekci odlehlých hodnot. Odlehlé hodnoty jsou datové body, které se výrazně liší od ostatních datových bodů v datové sadě. Principal Component Analysis dokáže identifikovat tyto odlehlé hodnoty hledáním datových bodů, které jsou daleko od ostatních bodů v prostoru hlavních komponent.
Nevýhody analýzy hlavních komponent
- Interpretace hlavních komponent : Hlavní komponenty vytvořené analýzou hlavních komponent jsou lineární kombinace původních proměnných a často je obtížné je interpretovat z hlediska původních proměnných. To může ztížit vysvětlení výsledků PCA ostatním.
- Měřítko dat : Analýza hlavních komponent je citlivá na rozsah dat. Pokud data nejsou správně škálována, PCA nemusí fungovat správně. Proto je důležité škálovat data před použitím analýzy hlavních komponent.
- Ztráta informací : Analýza hlavních komponent může vést ke ztrátě informací. Analýza hlavních komponent sice snižuje počet proměnných, ale může také vést ke ztrátě informací. Stupeň ztráty informací závisí na počtu vybraných hlavních komponent. Proto je důležité pečlivě vybrat počet hlavních součástí, které se mají zachovat.
- Nelineární vztahy : Analýza hlavních komponent předpokládá, že vztahy mezi proměnnými jsou lineární. Pokud však mezi proměnnými existují nelineární vztahy, analýza hlavních komponent nemusí fungovat dobře.
- Výpočetní složitost : Výpočetní analýza hlavních komponent může být výpočetně nákladná pro velké soubory dat. To platí zejména v případě, že je počet proměnných v datové sadě velký.
- Přetahování : Analýza hlavních komponent může někdy vést k přepastování , což je případ, kdy model příliš dobře odpovídá trénovacím datům a na nových datech funguje špatně. To se může stát, pokud je použito příliš mnoho hlavních komponent nebo pokud je model trénován na malém datovém souboru.
Často kladené otázky (FAQ)
1. Co je analýza hlavních součástí (PCA)?
PCA je technika redukce rozměrů používaná ve statistice a strojovém učení k transformaci vysokorozměrných dat do reprezentace nižších rozměrů, při zachování nejdůležitějších informací.
2. Jak PCA funguje?
Hlavní komponenty jsou lineární kombinace původních funkcí, které PCA najde a používá k zachycení největší odchylky v datech. Tyto ortogonální složky jsou uspořádány v pořadí podle velikosti rozptylu, kterou vysvětlují.
3. Kdy by měla být aplikována PCA?
Použití PCA je výhodné při práci s multikolineárními nebo vysokorozměrnými datovými sadami. Extrakce funkcí, redukce šumu a předzpracování dat jsou jeho prominentní použití.
4. Jak jsou interpretovány hlavní složky?
Nové osy jsou v prostoru prvků reprezentovány každou hlavní komponentou. Indikátorem významu komponenty při zachycování variability dat je její schopnost vysvětlit větší rozptyl.
5. Jaký je význam hlavních komponent?
Hlavní komponenty představují směry, ve kterých se data nejvíce liší. Prvních několik komponent obvykle zachycuje většinu rozptylu dat, což umožňuje stručnější reprezentaci.