logo

Analiza componentelor principale (PCA)

Pe măsură ce numărul de caracteristici sau dimensiuni dintr-un set de date crește, cantitatea de date necesară pentru a obține un rezultat semnificativ din punct de vedere statistic crește exponențial. Acest lucru poate duce la probleme precum supraadaptarea, creșterea timpului de calcul și precizia redusă a modelelor de învățare automată, aceasta este cunoscută sub numele de blestemul problemelor de dimensionalitate care apar în timpul lucrului cu date cu dimensiuni mari.

Pe măsură ce numărul de dimensiuni crește, numărul de combinații posibile de caracteristici crește exponențial, ceea ce face dificilă din punct de vedere computațional obținerea unui eșantion reprezentativ al datelor și devine costisitoare să efectueze sarcini precum gruparea sau clasificarea deoarece devine. În plus, unii învățare automată algoritmii pot fi sensibili la numărul de dimensiuni, necesitând mai multe date pentru a obține același nivel de acuratețe ca și datele de dimensiuni inferioare.

Pentru a aborda blestemul dimensionalității , Ingineria caracteristicilor sunt utilizate tehnici care includ selectarea caracteristicilor și extragerea caracteristicilor. Reducerea dimensionalității este un tip de tehnică de extragere a caracteristicilor care are ca scop reducerea numărului de caracteristici de intrare, păstrând în același timp cât mai mult posibil din informațiile originale.



În acest articol, vom discuta una dintre cele mai populare tehnici de reducere a dimensionalității, adică analiza componentelor principale (PCA).

Ce este analiza componentelor principale (PCA)?

Analiza componentelor principale (PCA) a fost introdusă de matematician Karl Pearson în 1901 . Funcționează cu condiția ca, în timp ce datele dintr-un spațiu dimensional superior sunt mapate cu datele dintr-un spațiu de dimensiune inferioară, varianța datelor din spațiul dimensional inferior să fie maximă.

  • Analiza componentelor principale (PCA) este o procedură statistică care utilizează o transformare ortogonală care convertește un set de variabile corelate într-un set de variabile necorelate. În plus,
  • Analiza componentelor principale (PCA) este o învăţare nesupravegheată tehnica algoritmului folosită pentru a examina interrelațiile dintre un set de variabile. Este, de asemenea, cunoscută ca o analiză factorială generală în care regresia determină o linie de cea mai bună potrivire.
  • Scopul principal al analizei componentelor principale (PCA) este de a reduce dimensionalitatea unui set de date, păstrând în același timp cele mai importante modele sau relații dintre variabile fără nicio cunoaștere prealabilă a variabilelor țintă.

Analiza componentelor principale (PCA) este utilizată pentru a reduce dimensionalitatea unui set de date prin găsirea unui nou set de variabile, mai mic decât setul original de variabile, reținând majoritatea informațiilor eșantionului și util pentru regresie și clasificare de date.

Analiza componentelor principale

  1. Analiza componentelor principale (PCA) este o tehnică de reducere a dimensionalității care identifică un set de axe ortogonale, numite componente principale, care captează variația maximă a datelor. Componentele principale sunt combinații liniare ale variabilelor originale din setul de date și sunt ordonate în ordine descrescătoare a importanței. Varianța totală capturată de toate componentele principale este egală cu variația totală din setul de date original.
  2. Prima componentă principală captează cea mai mare variație a datelor, dar a doua componentă principală captează maximul varianţă acesta este ortogonală la prima componentă principală și așa mai departe.
  3. Analiza componentelor principale poate fi utilizată pentru o varietate de scopuri, inclusiv vizualizarea datelor, selectarea caracteristicilor și compresia datelor. În vizualizarea datelor, PCA poate fi folosit pentru a trasa datele cu dimensiuni mari în două sau trei dimensiuni, făcându-le mai ușor de interpretat. În selectarea caracteristicilor, PCA poate fi utilizat pentru a identifica cele mai importante variabile dintr-un set de date. În compresia datelor, PCA poate fi folosit pentru a reduce dimensiunea unui set de date fără a pierde informații importante.
  4. În analiza componentelor principale, se presupune că informația este transportată în varianța caracteristicilor, adică cu cât variația unei caracteristici este mai mare, cu atât mai multe informații sunt transportate de caracteristicile respective.

În general, PCA este un instrument puternic pentru analiza datelor și poate ajuta la simplificarea seturilor de date complexe, făcându-le mai ușor de înțeles și de lucrat.

Explicația pas cu pas a PCA (Analiza componentelor principale)

Pasul 1: Standardizare

În primul rând, trebuie standardiza setul nostru de date pentru a ne asigura că fiecare variabilă are o medie de 0 și o abatere standard de 1.

bfs vs dfs

Z = frac{X-mu}{sigma}

Aici,

  • mueste media caracteristicilor independente mu = left { mu_1, mu_2, cdots, mu_m 
ight }
  • sigmaeste deviație standard de caracteristici independente sigma = left { sigma_1, sigma_2, cdots, sigma_m 
ight }

Pasul 2: Calculul matricei de covarianță

Covarianta măsoară puterea variabilității comune între două sau mai multe variabile, indicând cât de mult se schimbă acestea una în raport cu cealaltă. Pentru a găsi covarianța putem folosi formula:

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

Valoarea covarianței poate fi pozitivă, negativă sau zero.

  • Pozitiv: pe măsură ce x1 crește, crește și x2.
  • Negativ: pe măsură ce x1 crește și x2 scade.
  • Zerouri: Nicio relație directă

Pasul 3: Calculați valorile proprii și vectorii proprii ai matricei de covarianță pentru a identifica componentele principale

Fie A o matrice pătrată nXn și X un vector diferit de zero pentru care

AX = lambda X

pentru unele valori scalare lambda. apoi lambdaeste cunoscut sub numele de valoare proprie a matricei A și X este cunoscută ca vector propriu a matricei A pentru valoarea proprie corespunzătoare.

Se mai poate scrie ca:

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

unde eu sunt matricea identității de aceeași formă cu matricea A. Și condițiile de mai sus vor fi adevărate numai dacă (A - lambda I)va fi neinversibilă (adică matricea singulară). Asta inseamna,

|A - lambda I| = 0

Din ecuația de mai sus, putem găsi valorile proprii lambda și, prin urmare, vectorul propriu corespunzător poate fi găsit folosind ecuația AX = lambda X.

Cum funcționează analiza componentelor principale (PCA)?

Prin urmare, PCA utilizează o transformare liniară care se bazează pe păstrarea celei mai mari variații a datelor folosind cel mai mic număr de dimensiuni. Aceasta implică următorii pași:

computerul a inventat anul

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

Ieșire :

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

Acum vom aplica primul pas, care este standardizarea datelor și pentru asta, va trebui mai întâi să calculăm media și abaterea standard a fiecărei caracteristici din spațiul caracteristicilor.

Python3

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

The covarianta matricea ne ajută să vizualizăm cât de puternică este dependența a două caracteristici una față de cealaltă în spațiul caracteristicilor.

Python3

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

Ieșire :

Acum vom calcula vectori proprii și valori proprii pentru spațiul nostru de caracteristici, care servesc un scop important în identificarea componentelor principale pentru spațiul nostru de caracteristici.

Python3

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

Ieșire :

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

Sortați valorile proprii în ordine descrescătoare și sortați în consecință vectorii proprii corespunzători.

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

Varianța explicată este termenul care ne oferă o idee despre valoarea varianței totale care a fost reținută prin selectarea componentelor principale în loc de spațiul caracteristic original.

Python3

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

Ieșire :

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

Determinați numărul de componente principale

Aici putem lua în considerare fie numărul de componente principale ale oricărei valori alese de noi, fie limitând varianța explicată. Aici iau în considerare variația explicată mai mult decât egală cu 50%. Să verificăm câte componente principale intră în asta.

Python3

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

Ieșire :

2>

Proiectați datele pe componentele principale selectate

  • Găsiți matricea de proiecție, Este o matrice de vectori proprii corespunzătoare celor mai mari valori proprii ale matricei de covarianță a datelor. proiectează setul de date de dimensiuni mari pe un subspațiu de dimensiuni inferioare
  • Vectorii proprii ai matricei de covarianță a datelor sunt denumiți axe principale ale datelor, iar proiecția instanțelor de date pe aceste axe principale se numește componente principale.

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

Ieșire :

  • Apoi, proiectăm setul de date folosind formula:

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

  • Reducerea dimensionalității este apoi obținută prin reținerea doar a acelor axe (dimensiuni) care reprezintă cea mai mare parte a varianței și eliminând toate celelalte.

Găsirea proiecției în 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)>
>
>

Ieșire :

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

Vectorii proprii ai matricei de covarianță a datelor sunt denumiți axe principale ale datelor, iar proiecția instanțelor de date pe aceste axe principale se numește componente principale. Reducerea dimensionalității este apoi obținută prin reținerea doar a acelor axe (dimensiuni) care reprezintă cea mai mare parte a varianței și eliminând toate celelalte.

nat vs pat

PCA folosind Utilizarea Sklearn

Există diferite biblioteci în care întregul proces de analiză a componentelor principale a fost automatizat prin implementarea lui într-un pachet ca funcție și trebuie doar să trecem numărul de componente principale pe care ne-am dori să le avem. Sklearn este o astfel de bibliotecă care poate fi utilizată pentru PCA, după cum se arată mai jos.

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

Ieșire:

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

Putem potrivi din rezultatul Z_pca de mai sus din care este exact aceleași valori.

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

Ieșire:

Python3

# components> pca.components_>
>
>

Ieșire :

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

Avantajele analizei componentelor principale

  1. Reducerea dimensionalității : Analiza componentelor principale este o tehnică populară folosită pentru reducerea dimensionalității , care este procesul de reducere a numărului de variabile dintr-un set de date. Prin reducerea numărului de variabile, PCA simplifică analiza datelor, îmbunătățește performanța și facilitează vizualizarea datelor.
  2. Selectarea caracteristicilor : Analiza componentelor principale poate fi utilizată pentru selectarea caracteristicilor , care este procesul de selectare a celor mai importante variabile dintr-un set de date. Acest lucru este util în învățarea automată, unde numărul de variabile poate fi foarte mare și este dificil să se identifice cele mai importante variabile.
  3. Vizualizarea datelor : Analiza componentelor principale poate fi utilizată pentru Multicoliniaritate : Analiza componentelor principale poate fi utilizată pentru a trata multicoliniaritate , care este o problemă comună într-o analiză de regresie în care două sau mai multe variabile independente sunt foarte corelate. PCA poate ajuta la identificarea structurii de bază a datelor și la crearea unor variabile noi, necorelate, care pot fi utilizate în modelul de regresie.
  4. Reducerea zgomotului : Analiza componentelor principale poate fi utilizată pentru a reduce zgomotul din date. Prin eliminarea componentelor principale cu varianță scăzută, despre care se presupune că reprezintă zgomot, analiza componentelor principale poate îmbunătăți raportul semnal-zgomot și poate facilita identificarea structurii de bază a datelor.
  5. Comprimarea datelor : Analiza componentelor principale poate fi utilizată pentru compresia datelor. Reprezentând datele folosind un număr mai mic de componente principale, care captează cea mai mare parte a variației datelor, PCA poate reduce cerințele de stocare și poate accelera procesarea.
  6. Detectare valori aberante : Analiza componentelor principale poate fi utilizată pentru detectarea valorii aberante. Outliers sunt puncte de date care sunt semnificativ diferite de celelalte puncte de date din setul de date. Analiza componentelor principale poate identifica aceste valori aberante căutând puncte de date care sunt departe de celelalte puncte din spațiul componentelor principale.

Dezavantajele analizei componentelor principale

  1. Interpretarea componentelor principale : Componentele principale create de Analiza componentelor principale sunt combinații liniare ale variabilelor originale și este adesea dificil de interpretat în termeni de variabilele originale. Acest lucru poate face dificilă explicarea rezultatelor PCA altora.
  2. Scalare de date : Analiza componentelor principale este sensibilă la amploarea datelor. Dacă datele nu sunt scalate corespunzător, este posibil ca PCA să nu funcționeze bine. Prin urmare, este important să scalați datele înainte de a aplica analiza componentelor principale.
  3. Pierderea de informații : Analiza componentelor principale poate duce la pierderea de informații. În timp ce analiza componentelor principale reduce numărul de variabile, poate duce și la pierderea de informații. Gradul de pierdere a informațiilor depinde de numărul de componente principale selectate. Prin urmare, este important să selectați cu atenție numărul de componente principale de reținut.
  4. Relații neliniare : Analiza componentelor principale presupune că relațiile dintre variabile sunt liniare. Cu toate acestea, dacă există relații neliniare între variabile, este posibil ca analiza componentelor principale să nu funcționeze bine.
  5. Complexitatea computațională : Analiza componentelor principale de calcul poate fi costisitoare din punct de vedere computațional pentru seturi de date mari. Acest lucru este valabil mai ales dacă numărul de variabile din setul de date este mare.
  6. Supramontare : Analiza componentelor principale poate duce uneori la supraadaptare , care este atunci când modelul se potrivește prea bine cu datele de antrenament și are performanțe slabe pe datele noi. Acest lucru se poate întâmpla dacă sunt utilizate prea multe componente principale sau dacă modelul este antrenat pe un set de date mic.

Întrebări frecvente (FAQs)

1. Ce este analiza componentelor principale (PCA)?

PCA este o tehnică de reducere a dimensionalității utilizată în statistică și învățare automată pentru a transforma datele cu dimensiuni mari într-o reprezentare de dimensiuni inferioare, păstrând cele mai importante informații.

2. Cum funcționează un PCA?

Componentele principale sunt combinații liniare ale caracteristicilor originale pe care PCA le găsește și le utilizează pentru a capta cea mai mare variație a datelor. În ordinea cantității de varianță pe care o explică, aceste componente ortogonale sunt aranjate.

3. Când trebuie aplicat PCA?

Utilizarea PCA este avantajoasă atunci când lucrați cu seturi de date multicoliniare sau cu dimensiuni mari. Extragerea caracteristicilor, reducerea zgomotului și preprocesarea datelor sunt utilizări importante pentru aceasta.

4. Cum sunt interpretate componentele principale?

Noile axe sunt reprezentate în spațiul caracteristicilor de fiecare componentă principală. Un indicator al semnificației unei componente în capturarea variabilității datelor este capacitatea sa de a explica o variație mai mare.

5. Care este semnificația componentelor principale?

Componentele principale reprezintă direcțiile în care datele variază cel mai mult. Primele componente captează de obicei majoritatea variației datelor, permițând o reprezentare mai concisă.