logo

Hovedkomponentanalyse (PCA)

Etter hvert som antallet funksjoner eller dimensjoner i et datasett øker, øker mengden data som kreves for å oppnå et statistisk signifikant resultat eksponentielt. Dette kan føre til problemer som overtilpasning, økt beregningstid og redusert nøyaktighet av maskinlæringsmodeller. Dette er kjent som forbannelsen av dimensjonalitetsproblemer som oppstår mens du arbeider med høydimensjonale data.

Etter hvert som antall dimensjoner øker, øker antallet mulige kombinasjoner av funksjoner eksponentielt, noe som gjør det beregningsmessig vanskelig å få et representativt utvalg av dataene og det blir dyrt å utføre oppgaver som klynging eller klassifisering fordi det blir. I tillegg noen maskinlæring Algoritmer kan være sensitive for antall dimensjoner, og krever mer data for å oppnå samme nivå av nøyaktighet som lavere dimensjonale data.

css første barn

For å adressere dimensjonalitetens forbannelse , Funksjonsteknikk Det brukes teknikker som inkluderer funksjonsvalg og funksjonsekstraksjon. Dimensjonsreduksjon er en type funksjonsekstraksjonsteknikk som tar sikte på å redusere antall inndatafunksjoner samtidig som den beholder så mye av den opprinnelige informasjonen som mulig.



I denne artikkelen vil vi diskutere en av de mest populære dimensjonalitetsreduksjonsteknikkene, dvs. Principal Component Analysis (PCA).

Hva er Principal Component Analysis (PCA)?

Hovedkomponentanalyse (PCA) teknikk ble introdusert av matematikeren Karl Pearson i 1901 . Det fungerer under forutsetning av at mens dataene i et rom med høyere dimensjoner er kartlagt til data i et rom med lavere dimensjon, bør variansen til dataene i det lavere dimensjonale rommet være maksimalt.

  • Hovedkomponentanalyse (PCA) er en statistisk prosedyre som bruker en ortogonal transformasjon som konverterer et sett med korrelerte variabler til et sett med ukorrelerte variabler. PCA er det mest brukte verktøyet i utforskende dataanalyse og i maskinlæring for prediktive modeller. Dessuten,
  • Principal Component Analysis (PCA) er en uovervåket læring Algoritmeteknikk som brukes til å undersøke sammenhengene mellom et sett med variabler. Det er også kjent som en generell faktoranalyse der regresjon bestemmer en linje som passer best.
  • Hovedmålet med Principal Component Analysis (PCA) er å redusere dimensjonaliteten til et datasett og samtidig bevare de viktigste mønstrene eller relasjonene mellom variablene uten forkunnskap om målvariablene.

Principal Component Analysis (PCA) brukes til å redusere dimensjonaliteten til et datasett ved å finne et nytt sett med variabler, mindre enn det opprinnelige settet med variabler, beholde mesteparten av prøvens informasjon og nyttig for regresjon og klassifisering av data.

Hovedkomponentanalyse

  1. Principal Component Analysis (PCA) er en teknikk for dimensjonalitetsreduksjon som identifiserer et sett med ortogonale akser, kalt hovedkomponenter, som fanger opp den maksimale variansen i dataene. Hovedkomponentene er lineære kombinasjoner av de opprinnelige variablene i datasettet og er ordnet i avtagende betydningsrekkefølge. Den totale variansen fanget opp av alle hovedkomponentene er lik den totale variansen i det opprinnelige datasettet.
  2. Den første hovedkomponenten fanger opp mest variasjon i dataene, men den andre hovedkomponenten fanger opp maksimum forskjell det er ortogonal til den første hovedkomponenten, og så videre.
  3. Hovedkomponentanalyse kan brukes til en rekke formål, inkludert datavisualisering, funksjonsvalg og datakomprimering. I datavisualisering kan PCA brukes til å plotte høydimensjonale data i to eller tre dimensjoner, noe som gjør det lettere å tolke. Ved funksjonsvalg kan PCA brukes til å identifisere de viktigste variablene i et datasett. Ved datakomprimering kan PCA brukes til å redusere størrelsen på et datasett uten å miste viktig informasjon.
  4. I Principal Component Analysis antas det at informasjonen bæres i variansen til funksjonene, det vil si at jo høyere variasjonen i en funksjon er, desto mer informasjon har funksjonene.

Totalt sett er PCA et kraftig verktøy for dataanalyse og kan bidra til å forenkle komplekse datasett, noe som gjør dem enklere å forstå og arbeide med.

Trinn-for-trinn forklaring av PCA (Principal Component Analysis)

Trinn 1: Standardisering

Først må vi standardisere datasettet vårt for å sikre at hver variabel har et gjennomsnitt på 0 og et standardavvik på 1.

Z = frac{X-mu}{sigma}

Her,

  • muer gjennomsnittet av uavhengige trekk mu = venstre { mu_1, mu_2, cdots, mu_m 
ight }
  • sigmaer den standardavvik av uavhengige funksjoner sigma = venstre { sigma_1, sigma_2, cdots, sigma_m 
ight }

Trinn 2: Kovariansmatriseberegning

Kovarians måler styrken til leddvariabilitet mellom to eller flere variabler, og indikerer hvor mye de endrer seg i forhold til hverandre. For å finne kovariansen kan vi bruke formelen:

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

Verdien av kovarians kan være positiv, negativ eller null.

  • Positivt: Når x1 øker, øker x2 også.
  • Negativt: Når x1 øker, reduseres også x2.
  • Null: Ingen direkte sammenheng

Trinn 3: Beregn egenverdier og egenvektorer av kovariansmatrise for å identifisere hovedkomponenter

La A være en kvadratisk nXn-matrise og X være en vektor som ikke er null

AX = lambda X

for noen skalarverdier lambda. deretter lambdaer kjent som egenverdi av matrise A og X er kjent som egenvektor av matrise A for den tilsvarende egenverdien.

Det kan også skrives som:

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

hvor jeg er identitetsmatrisen med samme form som matrise A. Og betingelsene ovenfor vil være sanne bare hvis (A - lambda I)vil være ikke-inverterbar (dvs. entallsmatrise). Det betyr,

|A - lambda I| = 0

Fra ligningen ovenfor kan vi finne egenverdiene lambda, og derfor kan tilsvarende egenvektor finnes ved å bruke ligningen AX = lambda X.

binært søketre]

Hvordan fungerer Principal Component Analysis (PCA)?

Derfor bruker PCA en lineær transformasjon som er basert på å bevare mest varians i dataene ved å bruke det minste antallet dimensjoner. Det innebærer følgende trinn:

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

Produksjon :

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

Nå skal vi bruke det første trinnet som er å standardisere dataene, og for det må vi først beregne gjennomsnittet og standardavviket for hver funksjon i funksjonsrommet.

Python3

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

De kovarians matrise hjelper oss å visualisere hvor sterk avhengigheten av to funksjoner er med hverandre i funksjonsrommet.

Python3

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

Produksjon :

Nå skal vi beregne egenvektorer og egenverdier for funksjonsområdet vårt, som tjener et stort formål med å identifisere hovedkomponentene for funksjonsområdet vårt.

Python3

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

Produksjon :

for loop java
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)>

Sorter egenverdiene i synkende rekkefølge og sorter de tilsvarende egenvektorene deretter.

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

Forklart varians er begrepet som gir oss en ide om mengden av den totale variansen som har blitt beholdt ved å velge hovedkomponentene i stedet for den opprinnelige funksjonsplassen.

Python3

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

Produksjon :

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

Bestem antall hovedkomponenter

Her kan vi enten vurdere antall hovedkomponenter av en hvilken som helst verdi etter eget valg eller ved å begrense den forklarte variansen. Her vurderer jeg forklart varians mer enn lik 50%. La oss sjekke hvor mange hovedkomponenter som kommer inn i dette.

Python3

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

Produksjon :

2>

Projiser dataene på de valgte hovedkomponentene

  • Finn projeksjonsmatrisen, Det er en matrise av egenvektorer som tilsvarer de største egenverdiene til kovariansmatrisen til dataene. den projiserer det høydimensjonale datasettet på et lavere dimensjonalt underrom
  • Egenvektorene til kovariansmatrisen til dataene blir referert til som hovedaksene til dataene, og projeksjonen av dataforekomstene på disse hovedaksene kalles hovedkomponentene.

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

Produksjon :

  • Deretter projiserer vi datasettet vårt ved å bruke formelen:

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

  • Dimensjonsreduksjon oppnås da ved kun å beholde de aksene (dimensjonene) som står for det meste av variansen, og forkaste alle andre.

Finne projeksjon i 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)>
>
>

Produksjon :

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

Egenvektorene til kovariansmatrisen til dataene blir referert til som hovedaksene til dataene, og projeksjonen av dataforekomstene på disse hovedaksene kalles hovedkomponentene. Dimensjonsreduksjon oppnås da ved kun å beholde de aksene (dimensjonene) som står for det meste av variansen, og forkaste alle andre.

PCA ved å bruke Sklearn

Det er forskjellige biblioteker der hele prosessen med hovedkomponentanalysen har blitt automatisert ved å implementere den i en pakke som en funksjon, og vi må bare passere antallet hovedkomponenter som vi ønsker å ha. Sklearn er et slikt bibliotek som kan brukes til PCA som vist nedenfor.

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

Produksjon:

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

Vi kan matche fra ovennevnte Z_pca-resultat fra det er nøyaktig de samme verdiene.

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

Produksjon:

gjør mens loop i java

Python3

# components> pca.components_>
>
>

Produksjon :

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

Fordeler med hovedkomponentanalyse

  1. Dimensjonsreduksjon : Principal Component Analysis er en populær teknikk som brukes til dimensjonalitetsreduksjon , som er prosessen med å redusere antall variabler i et datasett. Ved å redusere antall variabler forenkler PCA dataanalyse, forbedrer ytelsen og gjør det enklere å visualisere data.
  2. Funksjonsvalg : Hovedkomponentanalyse kan brukes til funksjonsvalg , som er prosessen med å velge de viktigste variablene i et datasett. Dette er nyttig i maskinlæring, hvor antallet variabler kan være veldig stort, og det er vanskelig å identifisere de viktigste variablene.
  3. Datavisualisering : Hovedkomponentanalyse kan brukes til Multikollinearitet : Hovedkomponentanalyse kan brukes til å håndtere multikollinearitet , som er et vanlig problem i en regresjonsanalyse der to eller flere uavhengige variabler er sterkt korrelerte. PCA kan bidra til å identifisere den underliggende strukturen i dataene og lage nye, ukorrelerte variabler som kan brukes i regresjonsmodellen.
  4. Støyreduksjon : Hovedkomponentanalyse kan brukes til å redusere støyen i data. Ved å fjerne hovedkomponentene med lav varians, som antas å representere støy, kan Principal Component Analysis forbedre signal-til-støy-forholdet og gjøre det lettere å identifisere den underliggende strukturen i dataene.
  5. Datakomprimering : Hovedkomponentanalyse kan brukes til datakomprimering. Ved å representere dataene ved å bruke et mindre antall hovedkomponenter, som fanger opp det meste av variasjonen i dataene, kan PCA redusere lagringskravene og fremskynde behandlingen.
  6. Outlier-deteksjon : Hovedkomponentanalyse kan brukes for avvikdeteksjon. Outliers er datapunkter som er vesentlig forskjellige fra de andre datapunktene i datasettet. Hovedkomponentanalyse kan identifisere disse uteliggere ved å se etter datapunkter som er langt fra de andre punktene i hovedkomponentområdet.

Ulemper med hovedkomponentanalyse

  1. Tolkning av hovedkomponenter : Hovedkomponentene opprettet av Principal Component Analysis er lineære kombinasjoner av de opprinnelige variablene, og det er ofte vanskelig å tolke dem ut fra de opprinnelige variablene. Dette kan gjøre det vanskelig å forklare resultatene av PCA for andre.
  2. Dataskalering : Hovedkomponentanalyse er sensitiv for omfanget av dataene. Hvis dataene ikke er riktig skalert, kan det hende at PCA ikke fungerer bra. Derfor er det viktig å skalere dataene før du bruker hovedkomponentanalyse.
  3. Informasjonstap : Hovedkomponentanalyse kan føre til tap av informasjon. Mens hovedkomponentanalyse reduserer antallet variabler, kan det også føre til tap av informasjon. Graden av informasjonstap avhenger av antallet hovedkomponenter som er valgt. Derfor er det viktig å nøye velge antall hovedkomponenter som skal beholdes.
  4. Ikke-lineære forhold : Hovedkomponentanalyse forutsetter at relasjonene mellom variabler er lineære. Imidlertid, hvis det er ikke-lineære forhold mellom variabler, kan det hende at hovedkomponentanalyse ikke fungerer bra.
  5. Beregningsmessig kompleksitet : Computing Principal Component Analysis kan være beregningsmessig dyrt for store datasett. Dette gjelder spesielt hvis antallet variabler i datasettet er stort.
  6. Overmontering : Hovedkomponentanalyse kan noen ganger resultere i overmontering , som er når modellen passer treningsdataene for godt og presterer dårlig på nye data. Dette kan skje hvis det brukes for mange hovedkomponenter eller hvis modellen er trent på et lite datasett.

Ofte stilte spørsmål (FAQs)

1. Hva er Principal Component Analysis (PCA)?

PCA er en dimensjonsreduksjonsteknikk som brukes i statistikk og maskinlæring for å transformere høydimensjonale data til en lavere dimensjonal representasjon, og bevare den viktigste informasjonen.

2. Hvordan fungerer en PCA?

Hovedkomponenter er lineære kombinasjoner av de originale funksjonene som PCA finner og bruker for å fange opp størst varians i dataene. I rekkefølge etter mengden av varians de forklarer, er disse ortogonale komponentene ordnet.

3. Når bør PCA brukes?

Å bruke PCA er fordelaktig når du arbeider med multikollineære eller høydimensjonale datasett. Funksjonsutvinning, støyreduksjon og dataforbehandling er fremtredende bruksområder for det.

4. Hvordan tolkes hovedkomponenter?

Nye akser er representert i funksjonsrommet ved hver hovedkomponent. En indikator på en komponents betydning for å fange datavariabilitet er dens evne til å forklare en større varians.

5. Hva er betydningen av hovedkomponenter?

Hovedkomponenter representerer retningene dataene varierer mest i. De første komponentene fanger vanligvis opp størstedelen av dataens varians, noe som gir en mer konsis representasjon.