logo

Analiza glavnih komponent (PCA)

Ko se število funkcij ali dimenzij v naboru podatkov poveča, se količina podatkov, potrebnih za pridobitev statistično pomembnega rezultata, eksponentno poveča. To lahko privede do težav, kot so prekomerno opremljanje, podaljšan računski čas in zmanjšana natančnost modelov strojnega učenja, kar je znano kot prekletstvo dimenzionalnih težav, ki se pojavijo pri delu z visokodimenzionalnimi podatki.

Ko se število razsežnosti poveča, se število možnih kombinacij funkcij eksponentno poveča, zaradi česar je računalniško težko pridobiti reprezentativen vzorec podatkov in postane drago izvajanje nalog, kot je združevanje v gruče ali klasifikacija, ker to postane. Poleg tega nekateri strojno učenje algoritmi so lahko občutljivi na število dimenzij in zahtevajo več podatkov, da dosežejo enako raven natančnosti kot podatki z nižjo dimenzijo.

Za obravnavo prekletstvo dimenzionalnosti , Inženiring funkcij uporabljene so tehnike, ki vključujejo izbiro in ekstrakcijo značilnosti. Zmanjšanje dimenzij je vrsta tehnike ekstrakcije funkcij, katere namen je zmanjšati število vhodnih funkcij, hkrati pa ohraniti čim več izvirnih informacij.



V tem članku bomo razpravljali o eni najbolj priljubljenih tehnik zmanjševanja dimenzij, tj. analizi glavnih komponent (PCA).

Kaj je analiza glavnih komponent (PCA)?

Analiza glavnih komponent (PCA) tehniko je uvedel matematik Karl Pearson leta 1901 . Deluje pod pogojem, da medtem ko so podatki v prostoru višje dimenzije preslikani v podatke v prostoru nižje dimenzije, mora biti varianca podatkov v prostoru nižje dimenzije največja.

  • Analiza glavnih komponent (PCA) je statistični postopek, ki uporablja ortogonalno transformacijo, ki pretvori niz koreliranih spremenljivk v niz nekoreliranih spremenljivk. PCA je najpogosteje uporabljeno orodje v raziskovalni analizi podatkov in strojnem učenju za napovedne modele. Še več,
  • Analiza glavnih komponent (PCA) je nenadzorovano učenje algoritemska tehnika, ki se uporablja za preučevanje medsebojnih odnosov med nizom spremenljivk. Znana je tudi kot splošna faktorska analiza, pri kateri regresija določi črto, ki se najbolje prilega.
  • Glavni cilj analize glavnih komponent (PCA) je zmanjšati dimenzionalnost nabora podatkov, hkrati pa ohraniti najpomembnejše vzorce ali razmerja med spremenljivkami brez predhodnega poznavanja ciljnih spremenljivk.

Analiza glavnih komponent (PCA) se uporablja za zmanjšanje dimenzionalnosti nabora podatkov z iskanjem novega nabora spremenljivk, ki je manjši od prvotnega nabora spremenljivk, obdrži večino informacij vzorca in je uporaben za regresija in klasifikacija podatkov.

Analiza glavnih komponent

  1. Analiza glavnih komponent (PCA) je tehnika za zmanjšanje dimenzionalnosti, ki identificira niz pravokotnih osi, imenovanih glavne komponente, ki zajemajo največjo varianco v podatkih. Glavne komponente so linearne kombinacije izvirnih spremenljivk v naboru podatkov in so razvrščene po padajočem vrstnem redu pomembnosti. Skupna varianca, ki jo zajamejo vse glavne komponente, je enaka skupni varianci v izvirnem nizu podatkov.
  2. Prva glavna komponenta zajame največ variacij v podatkih, druga glavna komponenta pa zajame največ varianca to je pravokoten do prve glavne komponente itd.
  3. Analizo glavnih komponent je mogoče uporabiti za različne namene, vključno z vizualizacijo podatkov, izbiro funkcij in stiskanjem podatkov. Pri vizualizaciji podatkov lahko PCA uporabimo za risanje visokodimenzionalnih podatkov v dveh ali treh dimenzijah, kar olajša interpretacijo. Pri izbiri funkcij lahko PCA uporabite za identifikacijo najpomembnejših spremenljivk v naboru podatkov. Pri stiskanju podatkov lahko PCA uporabite za zmanjšanje velikosti nabora podatkov, ne da bi pri tem izgubili pomembne informacije.
  4. Pri analizi glavnih komponent se predpostavlja, da se informacije prenašajo v varianci značilnosti, kar pomeni, da večja kot je variacija v funkciji, več informacij nosi značilnost.

Na splošno je PCA zmogljivo orodje za analizo podatkov in lahko pomaga poenostaviti zapletene nize podatkov, tako da jih je lažje razumeti in delati z njimi.

Korak za korakom razlaga PCA (analize glavnih komponent)

1. korak: Standardizacija

Najprej moramo standardizirati naš nabor podatkov, da zagotovimo, da ima vsaka spremenljivka povprečje 0 in standardni odklon 1.

Z = frac{X-mu}{sigma}

tukaj,

2. korak: Izračun kovariančne matrike

Kovarianca meri jakost skupne variabilnosti med dvema ali več spremenljivkami in kaže, koliko se spremenijo glede na drugo. Za iskanje kovariance lahko uporabimo formulo:

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

Vrednost kovariance je lahko pozitivna, negativna ali ničelna.

  • Pozitivno: Ko se x1 poveča, se poveča tudi x2.
  • Negativno: Ko x1 narašča, se tudi x2 zmanjšuje.
  • Ničle: Ni neposredne povezave

3. korak: Izračunajte lastne vrednosti in lastne vektorje kovariančne matrike za identifikacijo glavnih komponent

Naj bo A kvadratna matrika nXn in X neničelni vektor, za katerega

AX = lambda X

za nekatere skalarne vrednosti lambda. potem lambdaje znan kot lastna vrednost matrike A in X je znan kot lastni vektor matrike A za ustrezno lastno vrednost.

Lahko se zapiše tudi kot:

foreach tipkopis

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

kjer sem I identitetna matrika enake oblike kot matrika A. In zgornji pogoji bodo resnični le, če (A - lambda I)bo neinvertibilna (tj. singularna matrika). To pomeni,

|A - lambda I| = 0

Iz zgornje enačbe lahko najdemo lastne vrednosti lambda, zato lahko ustrezen lastni vektor najdemo z enačbo AX = lambda X.

Kako deluje analiza glavnih komponent (PCA)?

Zato PCA uporablja linearno transformacijo, ki temelji na ohranjanju največje variance v podatkih z najmanjšim številom dimenzij. Vključuje naslednje korake:

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

Izhod :

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

Zdaj bomo uporabili prvi največji korak, ki je standardizacija podatkov, za to pa bomo morali najprej izračunati povprečje in standardni odklon vsake značilnosti v prostoru funkcij.

Python3

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

The kovarianca matrika nam pomaga vizualizirati, kako močna je medsebojna odvisnost dveh funkcij v prostoru funkcij.

Python3

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

Izhod :

Zdaj bomo izračunali lastni vektorji in lastne vrednosti za naš prostor funkcij, ki služijo velikemu namenu pri prepoznavanju glavnih komponent za naš prostor funkcij.

Python3

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

Izhod :

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

Lastne vrednosti razvrstite v padajočem vrstnem redu in ustrezno razvrstite ustrezne lastne vektorje.

kako pretvoriti str v int

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

Razložena varianca je izraz, ki nam daje predstavo o količini skupne variance, ki je bila ohranjena z izbiro glavnih komponent namesto prvotnega prostora značilnosti.

Python3

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

Izhod :

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

Določite število glavnih komponent

Tu lahko upoštevamo število glavnih komponent katere koli vrednosti po naši izbiri ali pa omejimo razloženo varianco. Tu upoštevam pojasnjeno varianco več kot enako 50 %. Preverimo, koliko glavnih komponent je vključenih v to.

Python3

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

Izhod :

2>

Projicirajte podatke na izbrane glavne komponente

  • Poiščite projekcijsko matriko. Je matrika lastnih vektorjev, ki ustrezajo največjim lastnim vrednostim kovariančne matrike podatkov. projicira visokodimenzionalni nabor podatkov na nižjedimenzionalni podprostor
  • Lastni vektorji kovariančne matrike podatkov se imenujejo glavne osi podatkov, projekcije podatkovnih primerkov na te glavne osi pa se imenujejo glavne komponente.

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

Izhod :

  • Nato naš nabor podatkov projiciramo z uporabo formule:

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

  • Zmanjšanje dimenzionalnosti se nato doseže tako, da se ohranijo samo tiste osi (dimenzije), ki predstavljajo večino variance, in zavržejo vse druge.

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

Izhod :

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

Lastni vektorji kovariančne matrike podatkov se imenujejo glavne osi podatkov, projekcije podatkovnih primerkov na te glavne osi pa se imenujejo glavne komponente. Zmanjšanje dimenzionalnosti se nato doseže tako, da se ohranijo samo tiste osi (dimenzije), ki predstavljajo večino variance, in zavržejo vse druge.

PCA z uporabo Sklearn

Obstajajo različne knjižnice, v katerih je bil celoten proces analize glavnih komponent avtomatiziran z implementacijo v paketu kot funkciji in le posredovati moramo število glavnih komponent, ki jih želimo imeti. Sklearn je ena taka knjižnica, ki jo je mogoče uporabiti za PCA, kot je prikazano spodaj.

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

Izhod:

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

Iz zgornjega rezultata Z_pca lahko primerjamo popolnoma enake vrednosti.

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

Izhod:

Python3

# components> pca.components_>
>
>

Izhod :

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

Prednosti analize glavnih komponent

  1. Zmanjšanje dimenzionalnosti : Analiza glavnih komponent je priljubljena tehnika, ki se uporablja za zmanjšanje dimenzionalnosti , ki je postopek zmanjševanja števila spremenljivk v naboru podatkov. Z zmanjšanjem števila spremenljivk PCA poenostavi analizo podatkov, izboljša zmogljivost in olajša vizualizacijo podatkov.
  2. Izbira funkcije : Analiza glavnih komponent se lahko uporablja za izbor funkcij , ki je postopek izbire najpomembnejših spremenljivk v naboru podatkov. To je uporabno pri strojnem učenju, kjer je lahko število spremenljivk zelo veliko in je težko identificirati najpomembnejše spremenljivke.
  3. Vizualizacija podatkov : Analiza glavnih komponent se lahko uporablja za Multikolinearnost : Za obravnavo je mogoče uporabiti analizo glavnih komponent multikolinearnost , kar je pogosta težava v regresijski analizi, kjer sta dve ali več neodvisnih spremenljivk močno korelirani. PCA lahko pomaga identificirati osnovno strukturo v podatkih in ustvari nove, nekorelirane spremenljivke, ki jih je mogoče uporabiti v regresijskem modelu.
  4. Zmanjšanje hrupa : Analiza glavnih komponent se lahko uporablja za zmanjšanje šuma v podatkih. Z odstranitvijo glavnih komponent z nizko varianco, za katere se domneva, da predstavljajo šum, lahko analiza glavnih komponent izboljša razmerje med signalom in šumom ter olajša prepoznavanje osnovne strukture v podatkih.
  5. Stiskanje podatkov : Analiza glavnih komponent se lahko uporablja za stiskanje podatkov. S predstavitvijo podatkov z uporabo manjšega števila glavnih komponent, ki zajemajo večino variacij v podatkih, lahko PCA zmanjša zahteve za shranjevanje in pospeši obdelavo.
  6. Odkrivanje odstopanj : Analiza glavnih komponent se lahko uporablja za odkrivanje izstopajočih vrednosti. Izstopajoči so podatkovne točke, ki se bistveno razlikujejo od drugih podatkovnih točk v naboru podatkov. Analiza glavnih komponent lahko prepozna te odstopanja z iskanjem podatkovnih točk, ki so daleč od drugih točk v prostoru glavnih komponent.

Slabosti analize glavnih komponent

  1. Razlaga glavnih komponent : glavne komponente, ustvarjene z analizo glavnih komponent, so linearne kombinacije izvirnih spremenljivk in jih je pogosto težko razlagati v smislu izvirnih spremenljivk. To lahko oteži razlago rezultatov PCA drugim.
  2. Skaliranje podatkov : Analiza glavnih komponent je občutljiva na obseg podatkov. Če podatki niso pravilno prilagojeni, PCA morda ne bo delovala dobro. Zato je pomembno, da podatke prilagodite, preden uporabite analizo glavnih komponent.
  3. Izguba informacij : Analiza glavne komponente lahko povzroči izgubo informacij. Čeprav analiza glavnih komponent zmanjša število spremenljivk, lahko povzroči tudi izgubo informacij. Stopnja izgube informacij je odvisna od števila izbranih glavnih komponent. Zato je pomembno skrbno izbrati število glavnih komponent, ki jih želite obdržati.
  4. Nelinearna razmerja : Analiza glavnih komponent predpostavlja, da so razmerja med spremenljivkami linearna. Če pa med spremenljivkami obstajajo nelinearni odnosi, analiza glavnih komponent morda ne bo delovala dobro.
  5. Kompleksnost računanja : Računalniška analiza glavnih komponent je lahko računsko draga za velike nabore podatkov. To še posebej velja, če je število spremenljivk v naboru podatkov veliko.
  6. Prekomerno opremljanje : Analiza glavnih komponent lahko včasih povzroči prekomerno opremljanje , ko se model preveč dobro ujema s podatki o usposabljanju in se slabo obnese na novih podatkih. To se lahko zgodi, če je uporabljenih preveč glavnih komponent ali če je model učen na majhnem naboru podatkov.

Pogosto zastavljena vprašanja (FAQ)

1. Kaj je analiza glavnih komponent (PCA)?

PCA je tehnika zmanjševanja razsežnosti, ki se uporablja v statistiki in strojnem učenju za pretvorbo visokodimenzionalnih podatkov v nižjedimenzionalno predstavitev, pri čemer se ohranijo najpomembnejše informacije.

2. Kako deluje PCA?

Glavne komponente so linearne kombinacije izvirnih funkcij, ki jih PCA najde in uporabi za zajem največje razlike v podatkih. Te ortogonalne komponente so razvrščene glede na količino variance, ki jo pojasnjujejo.

3. Kdaj je treba uporabiti PCA?

Uporaba PCA je ugodna pri delu z multikolinearnimi ali visokodimenzionalnimi nabori podatkov. Ekstrakcija funkcij, zmanjševanje hrupa in predhodna obdelava podatkov so njegove pomembne uporabe.

4. Kako se razlagajo glavne komponente?

Nove osi so v prostoru značilnosti predstavljene z vsako glavno komponento. Indikator pomembnosti komponente pri zajemanju variabilnosti podatkov je njena zmožnost pojasnjevanja večje variance.

5. Kakšen je pomen glavnih komponent?

Glavne komponente predstavljajo smeri, v katerih se podatki najbolj spreminjajo. Prvih nekaj komponent običajno zajema večino variance podatkov, kar omogoča bolj jedrnato predstavitev.