logo

Analýza hlavných komponentov (PCA)

So zvyšujúcim sa počtom prvkov alebo dimenzií v množine údajov sa exponenciálne zvyšuje množstvo údajov potrebných na získanie štatisticky významného výsledku. To môže viesť k problémom, ako je nadmerné prispôsobenie, zvýšený výpočtový čas a znížená presnosť modelov strojového učenia, čo je známe ako prekliatie problémov s rozmermi, ktoré vznikajú pri práci s vysokorozmernými údajmi.

So zvyšujúcim sa počtom dimenzií sa počet možných kombinácií funkcií zvyšuje exponenciálne, čo sťažuje výpočtovo získať reprezentatívnu vzorku údajov a je nákladné vykonávať úlohy, ako je zhlukovanie alebo klasifikácia, pretože sa to stáva. Navyše, niektoré strojové učenie Algoritmy môžu byť citlivé na počet rozmerov a vyžadujú si viac údajov na dosiahnutie rovnakej úrovne presnosti ako údaje s nižšími rozmermi.

Na adresu prekliatie dimenzionality , Funkcia inžinierstva používajú sa techniky, ktoré zahŕňajú výber a extrakciu vlastností. Zníženie rozmerov je typ techniky extrakcie funkcií, ktorej cieľom je znížiť počet vstupných funkcií a zároveň zachovať čo najviac pôvodných informácií.



V tomto článku budeme diskutovať o jednej z najpopulárnejších techník redukcie rozmerov, t. j. o analýze hlavných komponentov (PCA).

Čo je analýza hlavných komponentov (PCA)?

Analýza hlavných komponentov Techniku ​​(PCA) zaviedol matematik Karl Pearson v roku 1901 . Funguje za predpokladu, že kým dáta v priestore vyššej dimenzie sú mapované na dáta v priestore nižšej dimenzie, rozptyl údajov v priestore nižšej dimenzie by mal byť maximálny.

  • Analýza hlavných komponentov (PCA) je štatistický postup, ktorý využíva ortogonálnu transformáciu, ktorá konvertuje súbor korelovaných premenných na súbor nekorelovaných premenných. PCA je najrozšírenejším nástrojom v prieskumnej analýze údajov a v strojovom učení pre prediktívne modely. navyše
  • Analýza hlavných komponentov (PCA) je an učenie bez dozoru technika algoritmu používaná na skúmanie vzájomných vzťahov medzi súborom premenných. Je tiež známa ako všeobecná faktorová analýza, kde regresia určuje najvhodnejšiu líniu.
  • Hlavným cieľom analýzy hlavných komponentov (PCA) je znížiť rozmernosť súboru údajov pri zachovaní najdôležitejších vzorov alebo vzťahov medzi premennými bez predchádzajúcej znalosti cieľových premenných.

Analýza hlavných komponentov (PCA) sa používa na zníženie dimenzionality súboru údajov nájdením nového súboru premenných, menších ako pôvodný súbor premenných, ktoré uchovávajú väčšinu informácií o vzorke a sú užitočné pre regresia a klasifikácia údajov.

Analýza hlavných komponentov

binárny vyhľadávací algoritmus
  1. Analýza hlavných komponentov (PCA) je technika na zníženie rozmerov, ktorá identifikuje súbor ortogonálnych osí, nazývaných hlavné komponenty, ktoré zachytávajú maximálny rozptyl v údajoch. Hlavné komponenty sú lineárne kombinácie pôvodných premenných v súbore údajov a sú usporiadané v klesajúcom poradí dôležitosti. Celkový rozptyl zachytený všetkými hlavnými komponentmi sa rovná celkovému rozptylu v pôvodnom súbore údajov.
  2. Prvý hlavný komponent zachytáva najväčšie rozdiely v údajoch, ale druhý hlavný komponent zachytáva maximum rozptyl to jest ortogonálne k prvej hlavnej zložke atď.
  3. Analýza hlavných komponentov sa môže použiť na rôzne účely vrátane vizualizácie údajov, výberu funkcií a kompresie údajov. Pri vizualizácii údajov možno PCA použiť na vykreslenie vysokorozmerných údajov v dvoch alebo troch rozmeroch, čo uľahčuje interpretáciu. Pri výbere funkcií možno PCA použiť na identifikáciu najdôležitejších premenných v súbore údajov. Pri kompresii údajov možno PCA použiť na zmenšenie veľkosti súboru údajov bez straty dôležitých informácií.
  4. V analýze hlavných komponentov sa predpokladá, že informácie sú prenášané v rozptyle vlastností, to znamená, že čím väčšia je variácia prvku, tým viac informácií nesie vlastnosti.

Celkovo je PCA výkonným nástrojom na analýzu údajov a môže pomôcť zjednodušiť zložité súbory údajov, čím sa zjednoduší ich pochopenie a práca s nimi.

Krok za krokom vysvetlenie PCA (analýza hlavných komponentov)

Krok 1: Štandardizácia

Po prvé, musíme štandardizovať náš súbor údajov, aby sme zabezpečili, že každá premenná bude mať priemer 0 a štandardnú odchýlku 1.

Z = frac{X-mu}{sigma}

Tu,

Krok 2: Výpočet kovariančnej matice

Kovariancia meria silu kĺbovej variability medzi dvoma alebo viacerými premennými, pričom ukazuje, do akej miery sa navzájom menia. Na nájdenie kovariancie môžeme použiť vzorec:

cov(x1,x2) = frac{sum_{i=1}^{n}(x1_i-ar{x1})(x2_i-ar{x2})}{n-1}

Hodnota kovariancie môže byť kladná, záporná alebo nulová.

  • Pozitívne: So zvyšujúcim sa x1 sa zvyšuje aj x2.
  • Negatívne: Keď sa x1 zvyšuje, x2 sa tiež znižuje.
  • Nuly: Žiadna priama súvislosť

Krok 3: Výpočet vlastných hodnôt a vlastných vektorov kovariančnej matice na identifikáciu hlavných komponentov

Nech A je štvorcová matica nXn a X je nenulový vektor, pre ktorý

AX = lambda X

pre niektoré skalárne hodnoty lambda. potom lambdaje známy ako vlastná hodnota matice A a X je známa ako vlastný vektor matice A pre zodpovedajúcu vlastnú hodnotu.

Môže byť napísaný aj ako:

egin{aligned} AX-lambda X &= 0  (A-lambda I)X &= 0 end{aligned}

kde som matica identity rovnakého tvaru ako matica A. A vyššie uvedené podmienky budú platiť len vtedy, ak (A - lambda I)bude neinvertibilná (t.j. singulárna matica). To znamená,

|A - lambda I| = 0

Z vyššie uvedenej rovnice môžeme nájsť vlastné hodnoty lambda, a preto zodpovedajúci vlastný vektor možno nájsť pomocou rovnice AX = lambda X.

Ako funguje analýza hlavných komponentov (PCA)?

PCA teda využíva lineárnu transformáciu, ktorá je založená na zachovaní najväčšieho rozptylu v údajoch s použitím najmenšieho počtu rozmerov. Zahŕňa nasledujúce 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ýkon :

Original Dataframe shape : (569, 31) Inputs Dataframe shape : (569, 30)>

Teraz použijeme prvý krok, ktorým je štandardizácia údajov, a preto budeme musieť najprv vypočítať priemer a štandardnú odchýlku každého prvku v priestore prvkov.

Python3

# Mean> X_mean>=> X.mean()> # Standard deviation> X_std>=> X.std()> # Standardization> Z>=> (X>-> X_mean)>/> X_std>
>
>

The kovariancia matica nám pomáha vizualizovať, aká silná je vzájomná závislosť dvoch prvkov v priestore prvkov.

Python3

# covariance> c>=> Z.cov()> # Plot the covariance matrix> import> matplotlib.pyplot as plt> import> seaborn as sns> sns.heatmap(c)> plt.show()>
>
>

Výkon :

Teraz budeme počítať vlastné vektory a vlastné hodnoty pre náš priestor funkcií, ktorý slúži skvelému účelu pri identifikácii hlavných komponentov nášho priestoru funkcií.

Python3

eigenvalues, eigenvectors>=> np.linalg.eig(c)> print>(>'Eigen values: '>, eigenvalues)> print>(>'Eigen values Shape:'>, eigenvalues.shape)> print>(>'Eigen Vector Shape:'>, eigenvectors.shape)>
>
>

Výkon :

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)>

Zoraďte vlastné hodnoty v zostupnom poradí a podľa toho zoraďte zodpovedajúce 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]>
>
>

Vysvetlený rozptyl je termín, ktorý nám dáva predstavu o množstve celkového rozptylu, ktorý sa zachoval výberom hlavných komponentov namiesto pôvodného priestoru prvkov.

Python3

explained_var>=> np.cumsum(eigenvalues)>/> np.>sum>(eigenvalues)> explained_var>
>
>

Výkon :

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čite počet hlavných komponentov

Tu môžeme buď zvážiť počet hlavných komponentov ľubovoľnej hodnoty podľa vlastného výberu alebo obmedzením vysvetleného rozptylu. Tu uvažujem o vysvetlenom rozptyle viac ako 50%. Pozrime sa, koľko hlavných komponentov do toho vstupuje.

linux $home

Python3

n_components>=> np.argmax(explained_var>>=> 0.50>)>+> 1> n_components>
>
>

Výkon :

2>

Premietnite údaje na vybrané hlavné komponenty

  • Nájdite projekčnú maticu, Je to matica vlastných vektorov zodpovedajúcich najväčším vlastným hodnotám kovariančnej matice údajov. premieta vysokorozmerný súbor údajov do podpriestoru nižšej dimenzie
  • Vlastné vektory kovariančnej matice údajov sa označujú ako hlavné osi údajov a projekcia inštancií údajov na tieto hlavné osi sa nazývajú hlavné komponenty.

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ýkon :

konvertovať dátum reťazca
  • Potom premietneme našu množinu údajov pomocou vzorca:

egin{aligned} Proj_{P_i}(u) &= frac{P_icdot u}u  &=P_icdot u end{aligned}

  • Zníženie rozmerov sa potom dosiahne iba zachovaním tých osí (rozmerov), ktoré tvoria väčšinu rozptylu, a vypustením všetkých ostatných.

Hľadanie projekcie 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ýkon :

 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čnej matice údajov sa označujú ako hlavné osi údajov a projekcia inštancií údajov na tieto hlavné osi sa nazývajú hlavné komponenty. Zníženie rozmerov sa potom dosiahne iba zachovaním tých osí (rozmerov), ktoré tvoria väčšinu rozptylu, a vypustením všetkých ostatných.

PCA pomocou použitia Sklearn

Existujú rôzne knižnice, v ktorých je celý proces analýzy hlavných komponentov zautomatizovaný tým, že sa implementuje do balíka ako funkcia a my musíme len odovzdať počet hlavných komponentov, ktoré by sme chceli mať. Sklearn je jednou z takýchto knižníc, ktoré možno použiť pre PCA, ako je uvedené nižšie.

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ýkon:

 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 porovnať z vyššie uvedeného Z_pca výsledok z toho sú úplne rovnaké 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ýkon:

Python3

# components> pca.components_>
>
>

Výkon :

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 komponentov

  1. Zníženie rozmerov : Analýza hlavných komponentov je populárna technika používaná na redukcia rozmerov , čo je proces znižovania počtu premenných v množine údajov. Znížením počtu premenných PCA zjednodušuje analýzu údajov, zlepšuje výkon a uľahčuje vizualizáciu údajov.
  2. Výber funkcií : Môže sa použiť analýza hlavných komponentov výber funkcií , čo je proces výberu najdôležitejších premenných v súbore údajov. To je užitočné pri strojovom učení, kde môže byť počet premenných veľmi veľký a je ťažké identifikovať najdôležitejšie premenné.
  3. Vizualizácia dát : Môže sa použiť analýza hlavných komponentov Multikolinearita : Na riešenie je možné použiť analýzu hlavných komponentov multikolinearita , čo je bežný problém pri regresnej analýze, kde dve alebo viac nezávislých premenných vysoko koreluje. PCA môže pomôcť identifikovať základnú štruktúru v údajoch a vytvoriť nové, nekorelované premenné, ktoré možno použiť v regresnom modeli.
  4. Redukcia hluku : Analýza hlavných komponentov sa môže použiť na zníženie šumu v údajoch. Odstránením hlavných komponentov s nízkym rozptylom, o ktorých sa predpokladá, že predstavujú šum, môže analýza hlavných komponentov zlepšiť pomer signálu k šumu a uľahčiť identifikáciu základnej štruktúry v údajoch.
  5. Kompresia údajov : Na kompresiu údajov možno použiť analýzu hlavných komponentov. Reprezentáciou údajov pomocou menšieho počtu hlavných komponentov, ktoré zachytávajú väčšinu variácií v údajoch, môže PCA znížiť požiadavky na úložisko a urýchliť spracovanie.
  6. Detekcia odľahlých hodnôt : Analýza hlavných komponentov sa môže použiť na detekciu odľahlých hodnôt. Odľahlé hodnoty sú údajové body, ktoré sa výrazne líšia od ostatných údajových bodov v súbore údajov. Analýza hlavných komponentov dokáže identifikovať tieto odľahlé hodnoty hľadaním údajových bodov, ktoré sú ďaleko od ostatných bodov v priestore hlavných komponentov.

Nevýhody analýzy hlavných komponentov

  1. Výklad hlavných komponentov : Hlavné komponenty vytvorené analýzou hlavných komponentov sú lineárne kombinácie pôvodných premenných a často je ťažké ich interpretovať z hľadiska pôvodných premenných. To môže sťažiť vysvetľovanie výsledkov PCA ostatným.
  2. Škálovanie údajov : Analýza hlavných komponentov je citlivá na rozsah údajov. Ak údaje nie sú správne škálované, PCA nemusí fungovať správne. Preto je dôležité škálovať údaje pred použitím analýzy hlavných komponentov.
  3. Strata informácií : Analýza hlavných komponentov môže viesť k strate informácií. Hoci analýza hlavných komponentov znižuje počet premenných, môže viesť aj k strate informácií. Stupeň straty informácií závisí od počtu vybraných hlavných komponentov. Preto je dôležité starostlivo vybrať počet hlavných komponentov, ktoré sa majú zachovať.
  4. Nelineárne vzťahy : Analýza hlavných komponentov predpokladá, že vzťahy medzi premennými sú lineárne. Ak však existujú nelineárne vzťahy medzi premennými, analýza hlavných komponentov nemusí fungovať dobre.
  5. Výpočtová zložitosť : Výpočtová analýza hlavných komponentov môže byť pri veľkých súboroch údajov výpočtovo nákladná. Platí to najmä vtedy, ak je počet premenných v súbore údajov veľký.
  6. Overfitting : Analýza hlavných komponentov môže niekedy viesť k nadmerná montáž , čo je prípad, keď model príliš dobre zapadá do trénovacích údajov a na nových údajoch funguje zle. To sa môže stať, ak sa použije príliš veľa hlavných komponentov alebo ak sa model trénuje na malom súbore údajov.

Často kladené otázky (FAQ)

1. Čo je analýza hlavných komponentov (PCA)?

PCA je technika znižovania rozmerov, ktorá sa používa v štatistike a strojovom učení na transformáciu vysokorozmerných údajov na reprezentáciu nižšej dimenzie, pričom sa zachovajú najdôležitejšie informácie.

2. Ako funguje PCA?

Hlavné komponenty sú lineárne kombinácie pôvodných funkcií, ktoré PCA nachádza a používa na zachytenie najväčšej odchýlky v údajoch. Tieto ortogonálne zložky sú usporiadané v poradí podľa množstva rozptylu, ktorý vysvetľujú.

3. Kedy sa má PCA aplikovať?

Použitie PCA je výhodné pri práci s multikolineárnymi alebo vysokorozmernými súbormi údajov. Extrakcia funkcií, redukcia šumu a predspracovanie údajov sú jeho hlavnými použitiami.

4. Ako sa interpretujú hlavné zložky?

Nové osi sú v priestore prvkov reprezentované každým hlavným komponentom. Indikátorom významu komponentu pri zachytávaní variability údajov je jej schopnosť vysvetliť väčší rozptyl.

5. Aký je význam hlavných komponentov?

Hlavné komponenty predstavujú smery, v ktorých sa údaje najviac líšia. Prvých niekoľko komponentov zvyčajne zachytáva väčšinu rozptylu údajov, čo umožňuje stručnejšie znázornenie.