logo

Principal Component Analysis (PCA)

När antalet funktioner eller dimensioner i en datauppsättning ökar, ökar mängden data som krävs för att få ett statistiskt signifikant resultat exponentiellt. Detta kan leda till problem som överanpassning, ökad beräkningstid och minskad noggrannhet av maskininlärningsmodeller. Detta är känt som dimensionsproblemens förbannelse som uppstår när man arbetar med högdimensionell data.

När antalet dimensioner ökar, ökar antalet möjliga kombinationer av funktioner exponentiellt, vilket gör det beräkningsmässigt svårt att få ett representativt urval av data och det blir dyrt att utföra uppgifter som klustring eller klassificering eftersom det blir. Dessutom några maskininlärning Algoritmer kan vara känsliga för antalet dimensioner, vilket kräver mer data för att uppnå samma nivå av noggrannhet som lägre dimensionsdata.

För att ta itu med dimensionalitetens förbannelse , Funktionsteknik tekniker används som inkluderar funktionsval och funktionsextraktion. Dimensionalitetsreduktion är en typ av funktionsextraktionsteknik som syftar till att minska antalet indatafunktioner samtidigt som så mycket av den ursprungliga informationen behålls som möjligt.



I den här artikeln kommer vi att diskutera en av de mest populära dimensionsreduktionsteknikerna, dvs Principal Component Analysis (PCA).

Vad är Principal Component Analysis (PCA)?

Huvudkomponentanalys (PCA) tekniken introducerades av matematikern Karl Pearson år 1901 . Det fungerar på villkoret att medan data i ett högre dimensionellt utrymme mappas till data i ett lägre dimensionsutrymme, bör variansen för data i det lägre dimensionella utrymmet vara maximal.

  • Principal Component Analysis (PCA) är en statistisk procedur som använder en ortogonal transformation som omvandlar en uppsättning korrelerade variabler till en uppsättning okorrelerade variabler. PCA är det mest använda verktyget i utforskande dataanalys och i maskininlärning för prediktiva modeller. Dessutom,
  • Principal Component Analysis (PCA) är en oövervakat lärande Algoritmteknik som används för att undersöka sambanden mellan en uppsättning variabler. Det är också känt som en generell faktoranalys där regression bestämmer en linje med bästa passform.
  • Huvudmålet med Principal Component Analysis (PCA) är att minska dimensionaliteten hos en datauppsättning samtidigt som de viktigaste mönstren eller sambanden mellan variablerna bevaras utan förkunskaper om målvariablerna.

Principal Component Analysis (PCA) används för att minska dimensionaliteten hos en datamängd genom att hitta en ny uppsättning variabler, mindre än den ursprungliga uppsättningen av variabler, bevara det mesta av provets information och användbar för regression och klassificering av data.

Huvudkomponentanalys

  1. Principal Component Analysis (PCA) är en teknik för dimensionsreduktion som identifierar en uppsättning ortogonala axlar, kallade huvudkomponenter, som fångar den maximala variansen i data. De huvudsakliga komponenterna är linjära kombinationer av de ursprungliga variablerna i datamängden och är ordnade i fallande betydelse. Den totala variansen som fångas upp av alla huvudkomponenter är lika med den totala variansen i den ursprungliga datamängden.
  2. Den första huvudkomponenten fångar den största variationen i data, men den andra huvudkomponenten fångar den maximala variation det är ortogonal till den första huvudkomponenten och så vidare.
  3. Principal Component Analysis kan användas för en mängd olika ändamål, inklusive datavisualisering, funktionsval och datakomprimering. I datavisualisering kan PCA användas för att plotta högdimensionell data i två eller tre dimensioner, vilket gör det lättare att tolka. I funktionsval kan PCA användas för att identifiera de viktigaste variablerna i en datauppsättning. Vid datakomprimering kan PCA användas för att minska storleken på en datauppsättning utan att förlora viktig information.
  4. I Principal Component Analysis antas det att informationen bärs i variansen av funktionerna, det vill säga ju högre variationen i en funktion är, desto mer information bär som funktionerna.

Sammantaget är PCA ett kraftfullt verktyg för dataanalys och kan hjälpa till att förenkla komplexa datauppsättningar, vilket gör dem lättare att förstå och arbeta med.

Steg-för-steg-förklaring av PCA (Principal Component Analysis)

Steg 1: Standardisering

Först måste vi standardisera vår datauppsättning för att säkerställa att varje variabel har ett medelvärde på 0 och en standardavvikelse på 1.

Z = frac{X-mu}{sigma}

Här,

  • muär medelvärdet av oberoende egenskaper mu = left { mu_1, mu_2, cdots, mu_m 
ight }
  • sigmaär standardavvikelse oberoende funktioner sigma = left { sigma_1, sigma_2, cdots, sigma_m 
ight }

Steg 2: Kovariansmatrisberäkning

Kovarians mäter styrkan av ledvariabilitet mellan två eller flera variabler, och anger hur mycket de förändras i förhållande till varandra. För att hitta kovariansen kan vi använda formeln:

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

Värdet på kovarians kan vara positivt, negativt eller nollor.

10 av 50
  • Positivt: När x1 ökar ökar också x2.
  • Negativt: När x1 ökar minskar x2 också.
  • Nollor: Ingen direkt relation

Steg 3: Beräkna egenvärden och egenvektorer för kovariansmatrisen för att identifiera huvudkomponenter

Låt A vara en kvadratisk nXn-matris och X vara en vektor som inte är noll för vilken

AX = lambda X

för vissa skalära värden lambda. sedan lambdaär känt som egenvärde av matrisen A och X är känd som egenvektor av matris A för motsvarande egenvärde.

Det kan också skrivas som:

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

där jag är identitetsmatrisen med samma form som matris A. Och ovanstående villkor kommer att vara sanna endast om (A - lambda I)kommer att vara icke-inverterbar (d.v.s. singularismatris). Det betyder,

|A - lambda I| = 0

Från ovanstående ekvation kan vi hitta egenvärdena lambda, och därför kan motsvarande egenvektor hittas med hjälp av ekvationen AX = lambda X.

Hur fungerar Principal Component Analysis (PCA)?

Därför använder PCA en linjär transformation som är baserad på att bevara den största variansen i data med det minsta antalet dimensioner. Det innebär följande steg:

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 kommer vi att tillämpa det första steget som är att standardisera data och för det måste vi först beräkna medelvärdet och standardavvikelsen för varje funktion i funktionsutrymmet.

Python3

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

De kovarians matris hjälper oss att visualisera hur starkt beroendet av två funktioner är med varandra i funktionsutrymmet.

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 ska vi beräkna egenvektorer och egenvärden för vårt funktionsutrymme som tjänar ett stort syfte för att identifiera huvudkomponenterna för vårt funktionsutrymme.

Python3

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

Produktion :

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

Sortera egenvärdena i fallande ordning och sortera motsvarande egenvektorer därefter.

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

Förklarad varians är den term som ger oss en uppfattning om mängden av den totala variansen som har behållits genom att välja huvudkomponenterna istället för det ursprungliga funktionsutrymmet.

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

Bestäm antalet huvudkomponenter

Här kan vi antingen överväga antalet huvudkomponenter av valfritt värde eller genom att begränsa den förklarade variansen. Här överväger jag förklarad varians mer än lika med 50%. Låt oss kontrollera hur många huvudkomponenter som ingår i detta.

Python3

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

Produktion :

2>

Projicera data på de valda huvudkomponenterna

  • Hitta projektionsmatrisen. Det är en matris av egenvektorer som motsvarar de största egenvärdena för kovariansmatrisen för datan. den projicerar den högdimensionella datamängden på ett lägre dimensionellt delrum
  • Egenvektorerna för kovariansmatrisen för data benämns datas huvudaxlar, och projektionen av datainstanserna på dessa huvudaxlar kallas huvudkomponenterna.

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 :

  • Sedan projicerar vi vår datauppsättning med formeln:

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

  • Dimensionalitetsreduktion erhålls sedan genom att endast behålla de axlar (dimensioner) som står för det mesta av variansen och förkasta alla andra.

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

Egenvektorerna för kovariansmatrisen för data benämns datas huvudaxlar, och projektionen av datainstanserna på dessa huvudaxlar kallas huvudkomponenterna. Dimensionalitetsreduktion erhålls sedan genom att endast behålla de axlar (dimensioner) som står för det mesta av variansen och förkasta alla andra.

PCA med användning av Sklearn

Det finns olika bibliotek där hela processen för huvudkomponentanalysen har automatiserats genom att implementera den i ett paket som en funktion och vi måste bara passera antalet huvudkomponenter som vi skulle vilja ha. Sklearn är ett sådant bibliotek som kan användas för PCA som visas nedan.

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 matcha från ovanstående Z_pca resultat från det är exakt samma värden.

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:

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

Fördelar med Principal Component Analysis

  1. Dimensionalitetsminskning : Principal Component Analysis är en populär teknik som används för dimensionsreduktion , vilket är processen för att minska antalet variabler i en datauppsättning. Genom att minska antalet variabler förenklar PCA dataanalys, förbättrar prestanda och gör det lättare att visualisera data.
  2. Funktionsval : Principal Component Analysis kan användas för funktionsval , vilket är processen för att välja de viktigaste variablerna i en datauppsättning. Detta är användbart vid maskininlärning, där antalet variabler kan vara mycket stort, och det är svårt att identifiera de viktigaste variablerna.
  3. Datavisualisering : Principal Component Analysis kan användas för Multikollinearitet : Principal Component Analysis kan användas för att hantera multikollinearitet , vilket är ett vanligt problem i en regressionsanalys där två eller flera oberoende variabler är starkt korrelerade. PCA kan hjälpa till att identifiera den underliggande strukturen i data och skapa nya okorrelerade variabler som kan användas i regressionsmodellen.
  4. Brusreducering : Principal Component Analysis kan användas för att minska bruset i data. Genom att ta bort huvudkomponenterna med låg varians, som antas representera brus, kan Principal Component Analysis förbättra signal-brusförhållandet och göra det lättare att identifiera den underliggande strukturen i datan.
  5. Datakomprimering : Principal Component Analysis kan användas för datakomprimering. Genom att representera data med ett mindre antal huvudkomponenter, som fångar upp det mesta av variationen i data, kan PCA minska lagringskraven och påskynda bearbetningen.
  6. Outlier Detektion : Principal Component Analysis kan användas för detektering av extremvärden. Outliers är datapunkter som skiljer sig väsentligt från de andra datapunkterna i datamängden. Principal Component Analysis kan identifiera dessa extremvärden genom att leta efter datapunkter som är långt från de andra punkterna i huvudkomponentutrymmet.

Nackdelar med Principal Component Analysis

  1. Tolkning av huvudkomponenter : De huvudsakliga komponenterna som skapas av Principal Component Analysis är linjära kombinationer av de ursprungliga variablerna, och det är ofta svårt att tolka dem i termer av de ursprungliga variablerna. Detta kan göra det svårt att förklara resultaten av PCA för andra.
  2. Dataskalning : Principal Component Analysis är känslig för datas omfattning. Om data inte är korrekt skalad, kanske PCA inte fungerar bra. Därför är det viktigt att skala data innan du tillämpar Principal Component Analysis.
  3. Informationsförlust : Principal Component Analysis kan resultera i informationsförlust. Medan Principal Component Analysis minskar antalet variabler, kan det också leda till förlust av information. Graden av informationsförlust beror på antalet valda huvudkomponenter. Därför är det viktigt att noggrant välja antalet huvudkomponenter som ska behållas.
  4. Icke-linjära relationer : Principal Component Analysis antar att relationerna mellan variabler är linjära. Men om det finns icke-linjära samband mellan variabler kanske huvudkomponentanalys inte fungerar bra.
  5. Beräkningskomplexitet : Computing Principal Component Analysis kan vara beräkningsmässigt dyrt för stora datamängder. Detta gäller särskilt om antalet variabler i datamängden är stort.
  6. Överanpassning : Principal Component Analysis kan ibland resultera i överanpassning , vilket är när modellen passar träningsdatan för bra och presterar dåligt på ny data. Detta kan hända om för många huvudkomponenter används eller om modellen tränas på en liten datamängd.

Vanliga frågor (FAQs)

1. Vad är Principal Component Analysis (PCA)?

PCA är en dimensionsreducerande teknik som används i statistik och maskininlärning för att omvandla högdimensionell data till en lägre dimensionell representation, och bevara den viktigaste informationen.

2. Hur fungerar en PCA?

Huvudkomponenter är linjära kombinationer av de ursprungliga egenskaperna som PCA hittar och använder för att fånga den största variansen i data. Dessa ortogonala komponenter är ordnade efter hur stor varians de förklarar.

3. När ska PCA tillämpas?

Att använda PCA är fördelaktigt när man arbetar med multikollinjära eller högdimensionella datauppsättningar. Funktionsextraktion, brusreducering och dataförbehandling är framträdande användningsområden för det.

4. Hur tolkas huvudkomponenter?

Nya axlar representeras i funktionsutrymmet av varje huvudkomponent. En indikator på en komponents betydelse för att fånga datavariabilitet är dess förmåga att förklara en större varians.

5. Vilken betydelse har huvudkomponenter?

Huvudkomponenter representerar de riktningar i vilka uppgifterna varierar mest. De första komponenterna fångar vanligtvis majoriteten av datavariansen, vilket möjliggör en mer kortfattad representation.