logo

Principal Component Analysis (PCA)

Efterhånden som antallet af funktioner eller dimensioner i et datasæt stiger, øges mængden af ​​data, der kræves for at opnå et statistisk signifikant resultat, eksponentielt. Dette kan føre til problemer såsom overtilpasning, øget beregningstid og reduceret nøjagtighed af maskinlæringsmodeller, dette er kendt som dimensionalitetsproblemernes forbandelse, der opstår, mens man arbejder med højdimensionelle data.

Efterhånden som antallet af dimensioner stiger, øges antallet af mulige kombinationer af funktioner eksponentielt, hvilket gør det beregningsmæssigt vanskeligt at opnå et repræsentativt udsnit af dataene, og det bliver dyrt at udføre opgaver såsom klyngedannelse eller klassificering, fordi det bliver det. Derudover nogle maskinelæring Algoritmer kan være følsomme over for antallet af dimensioner, hvilket kræver flere data for at opnå samme niveau af nøjagtighed som lavere dimensionelle data.

modem vs router

For at adressere dimensionalitetens forbandelse , Funktionsteknik der anvendes teknikker, som omfatter funktionsvalg og funktionsekstraktion. Dimensionalitetsreduktion er en type funktionsudtrækningsteknik, der har til formål at reducere antallet af input-funktioner, samtidig med at så meget af den originale information bevares som muligt.



I denne artikel vil vi diskutere en af ​​de mest populære dimensionsreduktionsteknikker, dvs. Principal Component Analysis (PCA).

Hvad er Principal Component Analysis (PCA)?

Hovedkomponentanalyse (PCA) teknik blev introduceret af matematikeren Karl Pearson i 1901 . Det fungerer på den betingelse, at mens data i et højere dimensionelt rum er afbildet til data i et lavere dimensionsrum, bør variansen af ​​data i det lavere dimensionale rum være maksimal.

  • Principal Component Analysis (PCA) er en statistisk procedure, der bruger en ortogonal transformation, der konverterer et sæt af korrelerede variable til et sæt af ukorrelerede variable. PCA er det mest udbredte værktøj i eksplorativ dataanalyse og i maskinlæring til forudsigende modeller. I øvrigt,
  • Principal Component Analysis (PCA) er en uovervåget læring Algoritmeteknik, der bruges til at undersøge sammenhængen mellem et sæt variable. Det er også kendt som en generel faktoranalyse, hvor regression bestemmer, hvilken linje der passer bedst.
  • Hovedmålet med Principal Component Analysis (PCA) er at reducere dimensionaliteten af ​​et datasæt og samtidig bevare de vigtigste mønstre eller relationer mellem variablerne uden forudgående kendskab til målvariablerne.

Principal Component Analysis (PCA) bruges til at reducere dimensionaliteten af ​​et datasæt ved at finde et nyt sæt af variabler, der er mindre end det oprindelige sæt af variabler, som bevarer det meste af prøvens information og er nyttigt for regression og klassifikation af data.

Hovedkomponentanalyse

  1. Principal Component Analysis (PCA) er en teknik til dimensionalitetsreduktion, der identificerer et sæt ortogonale akser, kaldet principale komponenter, der fanger den maksimale varians i dataene. De vigtigste komponenter er lineære kombinationer af de oprindelige variabler i datasættet og er ordnet i faldende betydningsrækkefølge. Den samlede varians, der fanges af alle hovedkomponenterne, er lig med den samlede varians i det originale datasæt.
  2. Den første hovedkomponent fanger den største variation i dataene, men den anden hovedkomponent fanger den maksimale varians det er ortogonal til den første hovedkomponent og så videre.
  3. Principal Component Analysis kan bruges til en række forskellige formål, herunder datavisualisering, funktionsvalg og datakomprimering. I datavisualisering kan PCA bruges til at plotte højdimensionelle data i to eller tre dimensioner, hvilket gør det lettere at fortolke. Ved funktionsvalg kan PCA bruges til at identificere de vigtigste variabler i et datasæt. Ved datakomprimering kan PCA bruges til at reducere størrelsen af ​​et datasæt uden at miste vigtig information.
  4. I Principal Component Analysis antages det, at informationen er båret i variansen af ​​funktionerne, det vil sige, jo højere variationen i en funktion er, jo mere information har funktionerne.

Samlet set er PCA et kraftfuldt værktøj til dataanalyse og kan være med til at forenkle komplekse datasæt, hvilket gør dem nemmere at forstå og arbejde med.

Trin-for-trin forklaring af PCA (Principal Component Analysis)

Trin 1: Standardisering

Først skal vi standardisere vores datasæt for at sikre, at hver variabel har et gennemsnit på 0 og en standardafvigelse på 1.

Z = frac{X-mu}{sigma}

Her,

  • muer middelværdien af ​​uafhængige træk mu = venstre { mu_1, mu_2, cdots, mu_m 
ight }
  • sigmaer standardafvigelse af uafhængige funktioner sigma = venstre { sigma_1, sigma_2, cdots, sigma_m 
ight }

Trin 2: Beregning af kovariansmatrix

Kovarians måler styrken af ​​ledvariabiliteten mellem to eller flere variable, hvilket angiver, hvor meget de ændrer sig i forhold til hinanden. For at finde kovariansen kan vi bruge formlen:

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

Værdien af ​​kovarians kan være positiv, negativ eller nul.

  • Positivt: Når x1 stiger, øges x2 også.
  • Negativt: Når x1 stiger, falder x2 også.
  • Nuller: Ingen direkte sammenhæng

Trin 3: Beregn egenværdier og egenvektorer af kovariansmatrix for at identificere hovedkomponenter

Lad A være en kvadratisk nXn-matrix og X være en ikke-nul-vektor for hvilken

AX = lambda X

for nogle skalarværdier lambda. derefter lambdaer kendt som egenværdi af matrix A og X er kendt som egenvektor af matrix A for den tilsvarende egenværdi.

Det kan også skrives som:

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

hvor jeg er identitetsmatrixen med samme form som matrix A. Og ovenstående betingelser vil kun være sande hvis (A - lambda I)vil være ikke-inverterbar (dvs. singular matrix). Det betyder,

|A - lambda I| = 0

Ud fra ovenstående ligning kan vi finde egenværdierne lambda, og derfor kan tilsvarende egenvektor findes ved hjælp af ligningen AX = lambda X.

binært søgetræ]

Hvordan fungerer Principal Component Analysis (PCA)?

Derfor anvender PCA en lineær transformation, der er baseret på at bevare den største varians i dataene ved at bruge det mindste antal dimensioner. Det involverer følgende trin:

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

Produktion :

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

Nu vil vi anvende det første trin, som er at standardisere dataene, og til det skal vi først beregne middelværdien og standardafvigelsen for hver funktion i funktionsrummet.

Python3

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

Det kovarians matrix hjælper os med at visualisere, hvor stærk afhængigheden af ​​to funktioner er med hinanden i feature-rummet.

Python3

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

Produktion :

Nu vil vi beregne egenvektorer og egenværdier for vores feature space, som tjener et stort formål med at identificere de vigtigste komponenter til vores feature space.

Python3

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

Produktion :

forbindelse java mysql
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 egenværdierne i faldende rækkefølge og sorter de tilsvarende egenvektorer i overensstemmelse hermed.

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

Forklaret varians er det udtryk, der giver os en idé om mængden af ​​den samlede varians, som er blevet bibeholdt ved at vælge hovedkomponenterne i stedet for det originale feature space.

Python3

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

Produktion :

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 antallet af hovedkomponenter

Her kan vi enten overveje antallet af hovedkomponenter af enhver værdi efter vores valg eller ved at begrænse den forklarede varians. Her overvejer jeg forklaret varians mere end lig med 50%. Lad os tjekke, hvor mange hovedkomponenter der indgår i dette.

Python3

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

Produktion :

2>

Projekter dataene på de udvalgte hovedkomponenter

  • Find projektionsmatricen, Det er en matrix af egenvektorer svarende til de største egenværdier af dataens kovariansmatrix. det projicerer det højdimensionelle datasæt på et lavere dimensionelt underrum
  • Egenvektorerne for dataenes kovariansmatrix omtales som dataenes hovedakser, og projektionen af ​​dataforekomsterne på disse hovedakser kaldes hovedkomponenterne.

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

Produktion :

  • Derefter projicerer vi vores datasæt ved hjælp af formlen:

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

  • Dimensionalitetsreduktion opnås så ved kun at bibeholde de akser (dimensioner), der står for det meste af variansen, og kassere alle andre.

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

Produktion :

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

Egenvektorerne for dataenes kovariansmatrix omtales som dataenes hovedakser, og projektionen af ​​dataforekomsterne på disse hovedakser kaldes hovedkomponenterne. Dimensionalitetsreduktion opnås så ved kun at bibeholde de akser (dimensioner), der står for det meste af variansen, og kassere alle andre.

PCA ved brug af Sklearn

Der er forskellige biblioteker, hvor hele processen med hovedkomponentanalysen er blevet automatiseret ved at implementere den i en pakke som en funktion, og vi skal blot videregive antallet af hovedkomponenter, som vi gerne vil have. Sklearn er et sådant bibliotek, der kan bruges 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)>
>
>

Produktion:

 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 ovenstående Z_pca resultat fra det er nøjagtigt de samme værdier.

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

Produktion:

gør mens loop i java

Python3

# components> pca.components_>
>
>

Produktion :

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

Fordele ved Principal Component Analysis

  1. Dimensionalitetsreduktion : Principal Component Analysis er en populær teknik, der bruges til dimensionsreduktion , som er processen med at reducere antallet af variable i et datasæt. Ved at reducere antallet af variabler forenkler PCA dataanalysen, forbedrer ydeevnen og gør det nemmere at visualisere data.
  2. Funktionsvalg : Principal Component Analysis kan bruges til funktionsvalg , som er processen med at vælge de vigtigste variabler i et datasæt. Dette er nyttigt i maskinlæring, hvor antallet af variable kan være meget stort, og det er svært at identificere de vigtigste variable.
  3. Datavisualisering : Principal Component Analysis kan bruges til Multikolinearitet : Principal Component Analysis kan bruges til at håndtere multikolinearitet , hvilket er et almindeligt problem i en regressionsanalyse, hvor to eller flere uafhængige variable er stærkt korrelerede. PCA kan hjælpe med at identificere den underliggende struktur i dataene og skabe nye, ukorrelerede variabler, som kan bruges i regressionsmodellen.
  4. Støjreduktion : Principal Component Analysis kan bruges til at reducere støjen i data. Ved at fjerne hovedkomponenterne med lav varians, som antages at repræsentere støj, kan Principal Component Analysis forbedre signal-til-støj-forholdet og gøre det lettere at identificere den underliggende struktur i dataene.
  5. Datakomprimering : Principal Component Analysis kan bruges til datakomprimering. Ved at repræsentere dataene ved hjælp af et mindre antal hovedkomponenter, som fanger det meste af variationen i dataene, kan PCA reducere lagringskravene og fremskynde behandlingen.
  6. Outlier detektion : Principal Component Analysis kan bruges til outlier-detektion. Outliers er datapunkter, der er væsentligt forskellige fra de andre datapunkter i datasættet. Principal Component Analysis kan identificere disse outliers ved at lede efter datapunkter, der er langt fra de andre punkter i hovedkomponentrummet.

Ulemper ved hovedkomponentanalyse

  1. Fortolkning af hovedkomponenter : Hovedkomponenterne skabt af Principal Component Analysis er lineære kombinationer af de oprindelige variable, og det er ofte vanskeligt at fortolke dem i forhold til de oprindelige variable. Dette kan gøre det vanskeligt at forklare resultaterne af PCA til andre.
  2. Dataskalering : Principal Component Analysis er følsom over for omfanget af dataene. Hvis dataene ikke er korrekt skaleret, fungerer PCA muligvis ikke godt. Derfor er det vigtigt at skalere dataene, før du anvender Principal Component Analysis.
  3. Informationstab : Hovedkomponentanalyse kan resultere i tab af information. Mens Principal Component Analysis reducerer antallet af variabler, kan det også føre til tab af information. Graden af ​​informationstab afhænger af antallet af valgte hovedkomponenter. Derfor er det vigtigt omhyggeligt at vælge antallet af hovedkomponenter, der skal beholdes.
  4. Ikke-lineære relationer : Principal Component Analysis forudsætter, at relationerne mellem variabler er lineære. Men hvis der er ikke-lineære sammenhænge mellem variabler, fungerer Principal Component Analysis muligvis ikke godt.
  5. Beregningsmæssig kompleksitet : Computing Principal Component Analysis kan være beregningsmæssigt dyrt for store datasæt. Dette gælder især, hvis antallet af variable i datasættet er stort.
  6. Overfitting : Hovedkomponentanalyse kan nogle gange resultere i overfitting , hvilket er når modellen passer for godt til træningsdataene og klarer sig dårligt på nye data. Dette kan ske, hvis der bruges for mange hovedkomponenter, eller hvis modellen trænes på et lille datasæt.

Ofte stillede spørgsmål (FAQ)

1. Hvad er Principal Component Analysis (PCA)?

PCA er en dimensionsreduktionsteknik, der bruges i statistik og maskinlæring til at transformere højdimensionelle data til en lavere dimensionel repræsentation, der bevarer den vigtigste information.

2. Hvordan fungerer en PCA?

Hovedkomponenter er lineære kombinationer af de originale funktioner, som PCA finder og bruger til at fange den største varians i dataene. I rækkefølge efter mængden af ​​varians, de forklarer, er disse ortogonale komponenter arrangeret.

3. Hvornår skal PCA anvendes?

Brug af PCA er fordelagtigt, når du arbejder med multikollineære eller højdimensionelle datasæt. Funktionsudtrækning, støjreduktion og dataforbehandling er fremtrædende anvendelser for det.

4. Hvordan fortolkes hovedkomponenter?

Nye akser er repræsenteret i funktionsrummet af hver hovedkomponent. En indikator for en komponents betydning for at fange datavariabilitet er dens evne til at forklare en større varians.

5. Hvad er betydningen af ​​hovedkomponenter?

Hovedkomponenter repræsenterer de retninger, hvori dataene varierer mest. De første par komponenter fanger typisk størstedelen af ​​dataens varians, hvilket giver mulighed for en mere kortfattet repræsentation.