logo

Pääkomponenttianalyysi (PCA)

Kun tietojoukon ominaisuuksien tai ulottuvuuksien määrä kasvaa, tilastollisesti merkitsevän tuloksen saamiseksi tarvittavan tiedon määrä kasvaa eksponentiaalisesti. Tämä voi johtaa ongelmiin, kuten ylisovitukseen, pidentyneeseen laskenta-aikaan ja koneoppimismallien tarkkuuden heikkenemiseen. Tätä kutsutaan ulottuvuusongelmien kiroukseksi, joita syntyy työskennellessään korkeaulotteisen datan kanssa.

Kun dimensioiden lukumäärä kasvaa, mahdollisten ominaisuuksien yhdistelmien määrä kasvaa eksponentiaalisesti, mikä tekee laskennallisesti vaikeaksi saada edustavan otoksen tiedoista ja tulee kalliiksi suorittaa tehtäviä, kuten klusterointi tai luokittelu, koska se tulee. Lisäksi jotkut koneoppiminen Algoritmit voivat olla herkkiä ulottuvuuksien lukumäärälle, mikä vaatii enemmän dataa saavuttaakseen saman tarkkuustason kuin pienempiulotteiset tiedot.

Käsitelläksesi ulottuvuuden kirous , Ominaisuussuunnittelu käytetään tekniikoita, jotka sisältävät ominaisuuden valinnan ja piirteen poimimisen. Mittasuhteiden vähentäminen on eräänlainen piirteiden poimintatekniikka, jonka tarkoituksena on vähentää syöteominaisuuksien määrää säilyttäen samalla mahdollisimman paljon alkuperäistä tietoa.



Tässä artikkelissa keskustelemme yhdestä suosituimmista ulottuvuuden vähentämistekniikoista eli pääkomponenttianalyysistä (PCA).

Mikä on pääkomponenttianalyysi (PCA)?

Pääkomponenttianalyysi (PCA) tekniikan esitteli matemaatikko Karl Pearson vuonna 1901 . Se toimii sillä ehdolla, että vaikka korkeamman ulottuvuuden avaruuden data kartoitetaan alemman ulottuvuuden avaruuden tietoihin, alemman ulottuvuuden avaruuden datan varianssin tulisi olla suurin.

  • Pääkomponenttianalyysi (PCA) on tilastollinen menettely, joka käyttää ortogonaalista muunnosa, joka muuntaa joukon korreloituja muuttujia joukoksi korreloimattomia muuttujia. PCA on laajimmin käytetty työkalu tutkivassa data-analyysissä ja ennustavien mallien koneoppimisessa. Lisäksi,
  • Pääkomponenttianalyysi (PCA) on ohjaamatonta oppimista algoritmitekniikka, jota käytetään tutkimaan muuttujien välisiä suhteita. Se tunnetaan myös yleisenä tekijäanalyysinä, jossa regressio määrittää parhaiten sopivan linjan.
  • PCA:n (Principal Component Analysis) päätavoite on vähentää tietojoukon dimensiota säilyttäen samalla tärkeimmät kuviot tai muuttujien väliset suhteet ilman, että kohdemuuttujia tiedetään etukäteen.

Pääkomponenttianalyysiä (PCA) käytetään vähentämään tietojoukon ulottuvuutta etsimällä uusia muuttujia, jotka ovat pienempiä kuin alkuperäinen muuttujajoukko, säilyttävät suurimman osan otoksen tiedoista ja ovat hyödyllisiä regressio ja luokittelu tiedoista.

Pääkomponenttianalyysi

  1. Pääkomponenttianalyysi (PCA) on mittasuhteiden vähentämistekniikka, joka tunnistaa joukon ortogonaalisia akseleita, joita kutsutaan pääkomponenteiksi ja jotka sieppaavat datan suurimman varianssin. Pääkomponentit ovat aineiston alkuperäisten muuttujien lineaarisia yhdistelmiä ja ne on järjestetty alenevaan tärkeysjärjestykseen. Kaikkien pääkomponenttien sieppaama kokonaisvarianssi on yhtä suuri kuin alkuperäisen tietojoukon kokonaisvarianssi.
  2. Ensimmäinen pääkomponentti sieppaa suurimman vaihtelun tiedosta, mutta toinen pääkomponentti sieppaa suurimman varianssi tuo on ortogonaalinen ensimmäiseen pääkomponenttiin ja niin edelleen.
  3. Pääkomponenttianalyysiä voidaan käyttää useisiin tarkoituksiin, mukaan lukien tietojen visualisointiin, ominaisuuksien valintaan ja tietojen pakkaamiseen. Tietojen visualisoinnissa PCA:ta voidaan käyttää korkeaulotteisen datan piirtämiseen kahdessa tai kolmessa ulottuvuudessa, mikä helpottaa tulkintaa. Ominaisuuden valinnassa PCA:n avulla voidaan tunnistaa tietojoukon tärkeimmät muuttujat. Tietojen pakkaamisessa PCA:ta voidaan käyttää pienentämään tietojoukon kokoa menettämättä tärkeitä tietoja.
  4. Pääkomponenttianalyysissä oletetaan, että tiedot kuljetetaan ominaisuuksien varianssissa, eli mitä suurempi vaihtelu ominaisuudessa on, sitä enemmän tietoa ominaisuudet sisältävät.

Kaiken kaikkiaan PCA on tehokas työkalu tietojen analysointiin, ja se voi auttaa yksinkertaistamaan monimutkaisia ​​tietojoukkoja ja helpottamaan niiden ymmärtämistä ja käsittelyä.

PCA:n (Principal Component Analysis) vaiheittainen selitys

Vaihe 1: Standardointi

Ensinnäkin meidän täytyy standardoida tietojoukkomme varmistaaksemme, että jokaisen muuttujan keskiarvo on 0 ja keskihajonta 1.

Z = frac{X-mu}{sigma}

Tässä,

  • muon itsenäisten ominaisuuksien keskiarvo mu = vasen { mu_1, mu_2, cdots, mu_m oikea }
  • sigmaon keskihajonta itsenäisistä ominaisuuksista sigma = vasen { sigma_1, sigma_2, cdots, sigma_m oikea }

Vaihe 2: Kovarianssimatriisilaskenta

Kovarianssi mittaa kahden tai useamman muuttujan välisen yhteisen vaihtelun voimakkuutta, mikä osoittaa, kuinka paljon ne muuttuvat suhteessa toisiinsa. Kovarianssin löytämiseksi voimme käyttää kaavaa:

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

Kovarianssin arvo voi olla positiivinen, negatiivinen tai nollia.

c joukko merkkijonoja
  • Positiivinen: Kun x1 kasvaa, myös x2 kasvaa.
  • Negatiivinen: Kun x1 kasvaa, myös x2 pienenee.
  • Nollat: Ei suoraa yhteyttä

Vaihe 3: Laske kovarianssimatriisin ominaisarvot ja ominaisvektorit pääkomponenttien tunnistamiseksi

Olkoon A neliömatriisi nXn ja X nollasta poikkeava vektori, jolle

AX = lambda X

joillekin skalaariarvoille lambda. sitten lambdatunnetaan nimellä ominaisarvo matriisin A ja X tunnetaan nimellä ominaisvektori matriisin A vastaavalle ominaisarvolle.

Se voidaan kirjoittaa myös seuraavasti:

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

missä minä olen samanmuotoinen identiteettimatriisi kuin matriisi A. Ja yllä olevat ehdot ovat tosia vain jos (A - lambda I)on ei-käännettävä (eli singulaarimatriisi). Se tarkoittaa,

|A - lambda I| = 0

Yllä olevasta yhtälöstä löydämme ominaisarvot lambda, ja siksi vastaava ominaisvektori löytyy yhtälön avulla AX = lambda X.

Kuinka pääkomponenttianalyysi (PCA) toimii?

Näin ollen PCA käyttää lineaarista muunnosta, joka perustuu tietojen suurimman varianssin säilyttämiseen käyttäen pienintä määrää dimensioita. Se sisältää seuraavat vaiheet:

Python 3

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

Lähtö :

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

Nyt sovellamme ensimmäisellä askeleella, joka on tietojen standardoiminen, ja sitä varten meidän on ensin laskettava kunkin ominaisuuden keskiarvo ja keskihajonta ominaisuusavaruudessa.

Python 3

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

The kovarianssi matriisi auttaa visualisoimaan, kuinka vahva kahden ominaisuuden riippuvuus ominaisuusavaruudessa on toisistaan.

Python 3

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

Lähtö :

Nyt lasketaan ominaisvektorit ja ominaisarvot ominaisuustilaamme varten, jotka palvelevat loistavaa tarkoitusta ominaisuustilan pääkomponenttien tunnistamisessa.

Python 3

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

Lähtö :

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

Lajittele ominaisarvot laskevaan järjestykseen ja lajittele vastaavat ominaisvektorit sen mukaan.

Python 3

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

Selitetty varianssi on termi, joka antaa meille käsityksen kokonaisvarianssin määrästä, joka on säilytetty valitsemalla pääkomponentit alkuperäisen piirreavaruuden sijaan.

Python 3

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

Lähtö :

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

Määritä pääkomponenttien lukumäärä

Tässä voimme joko ottaa huomioon minkä tahansa valitsemamme arvon pääkomponenttien lukumäärän tai rajoittamalla selitettyä varianssia. Tässä harkitsen selitettyä varianssia enemmän kuin 50%. Katsotaan kuinka monta pääkomponenttia tähän sisältyy.

Python 3

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

Lähtö :

2>

Projisoi tiedot valittuihin pääkomponentteihin

  • Etsi projektiomatriisi. Se on datan kovarianssimatriisin suurimpia ominaisarvoja vastaavien ominaisvektorien matriisi. se heijastaa korkean ulottuvuuden tietojoukon alemman ulottuvuuden aliavaruuteen
  • Datan kovarianssimatriisin ominaisvektoreita kutsutaan datan pääakseleiksi ja datailmentymien projektiota näille pääakseleille kutsutaan pääkomponenteiksi.

Python 3

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

Lähtö :

  • Sitten projisoimme tietojoukkomme kaavalla:

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

  • Ulottuvuusvähennys saadaan sitten säilyttämällä vain ne akselit (mitat), jotka muodostavat suurimman osan varianssista, ja hylkäämällä kaikki muut.

Projektion etsiminen PCA:sta

Python 3

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

Lähtö :

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

Datan kovarianssimatriisin ominaisvektoreita kutsutaan datan pääakseleiksi ja datailmentymien projektiota näille pääakseleille kutsutaan pääkomponenteiksi. Ulottuvuusvähennys saadaan sitten säilyttämällä vain ne akselit (mitat), jotka muodostavat suurimman osan varianssista, ja hylkäämällä kaikki muut.

PCA käyttämällä Sklearnia

On olemassa erilaisia ​​kirjastoja, joissa koko pääkomponenttianalyysin prosessi on automatisoitu toteuttamalla se paketissa funktiona ja meidän on vain ohitettava se määrä pääkomponentteja, jotka haluamme. Sklearn on yksi tällainen kirjasto, jota voidaan käyttää PCA:lle alla esitetyllä tavalla.

Python 3

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

Lähtö:

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

Voimme sopia yllä olevasta Z_pca-tuloksesta, koska se on täsmälleen samat arvot.

Python 3

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

Lähtö:

merkkijono json-objektiin

Python 3

# components> pca.components_>
>
>

Lähtö :

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

Pääkomponenttianalyysin edut

  1. Mittasuhteiden vähentäminen : Pääkomponenttianalyysi on suosittu tekniikka, jota käytetään ulottuvuuden vähentäminen , joka on prosessi, jolla vähennetään tietojoukon muuttujien määrää. Vähentämällä muuttujien määrää PCA yksinkertaistaa tietojen analysointia, parantaa suorituskykyä ja helpottaa tietojen visualisointia.
  2. Ominaisuuden valinta : Pääkomponenttianalyysiä voidaan käyttää ominaisuuden valinta , joka on prosessi, jossa valitaan tietojoukon tärkeimmät muuttujat. Tästä on hyötyä koneoppimisessa, jossa muuttujien määrä voi olla hyvin suuri ja tärkeimpien muuttujien tunnistaminen on vaikeaa.
  3. Datan visualisointi : Pääkomponenttianalyysiä voidaan käyttää Monikollineaarisuus : Pääkomponenttianalyysiä voidaan käyttää käsittelemään monikollineaarisuus , joka on yleinen ongelma regressioanalyysissä, jossa kaksi tai useampi riippumaton muuttuja korreloi voimakkaasti. PCA voi auttaa tunnistamaan datan taustalla olevan rakenteen ja luomaan uusia, korreloimattomia muuttujia, joita voidaan käyttää regressiomallissa.
  4. Melun vähentäminen : Pääkomponenttianalyysiä voidaan käyttää datan kohinan vähentämiseen. Poistamalla alhaisen varianssin pääkomponentit, joiden oletetaan edustavan kohinaa, pääkomponenttianalyysi voi parantaa signaali-kohinasuhdetta ja helpottaa taustalla olevan rakenteen tunnistamista tiedoista.
  5. Tietojen pakkaus : Pääkomponenttianalyysiä voidaan käyttää tietojen pakkaamiseen. PCA voi vähentää tallennusvaatimuksia ja nopeuttaa käsittelyä esittämällä dataa pienemmällä määrällä pääkomponentteja, jotka sieppaavat suurimman osan tiedon vaihteluista.
  6. Outlier Detection : Pääkomponenttianalyysiä voidaan käyttää poikkeamien havaitsemiseen. Outliers ovat datapisteitä, jotka eroavat merkittävästi tietojoukon muista datapisteistä. Pääkomponenttianalyysi voi tunnistaa nämä poikkeamat etsimällä tietopisteitä, jotka ovat kaukana pääkomponenttitilan muista pisteistä.

Pääkomponenttianalyysin haitat

  1. Pääkomponenttien tulkinta : Pääkomponenttianalyysin luomat pääkomponentit ovat alkuperäisten muuttujien lineaarisia yhdistelmiä, ja niitä on usein vaikea tulkita alkuperäisten muuttujien kannalta. Tämä voi vaikeuttaa PCA:n tulosten selittämistä muille.
  2. Tietojen skaalaus : Pääkomponenttianalyysi on herkkä tietojen mittakaavalle. Jos tietoja ei ole skaalattu oikein, PCA ei välttämättä toimi hyvin. Siksi on tärkeää skaalata tiedot ennen pääkomponenttianalyysin käyttämistä.
  3. Tietojen menetys : Pääkomponenttianalyysi voi johtaa tietojen menetykseen. Vaikka pääkomponenttianalyysi vähentää muuttujien määrää, se voi myös johtaa tietojen menettämiseen. Tietojen menetyksen aste riippuu valittujen pääkomponenttien lukumäärästä. Siksi on tärkeää valita huolellisesti säilytettävien pääkomponenttien määrä.
  4. Epälineaariset suhteet : Pääkomponenttianalyysi olettaa, että muuttujien väliset suhteet ovat lineaarisia. Kuitenkin, jos muuttujien välillä on epälineaarisia suhteita, pääkomponenttianalyysi ei välttämättä toimi hyvin.
  5. Laskennallinen monimutkaisuus : Pääkomponenttianalyysin laskeminen voi olla laskennallisesti kallista suurille tietojoukoille. Tämä pätee erityisesti, jos tietojoukon muuttujien määrä on suuri.
  6. Ylisovitus : Pääkomponenttianalyysi voi joskus johtaa ylisovitus , jolloin malli sopii harjoitustietoihin liian hyvin ja toimii huonosti uusilla tiedoilla. Tämä voi tapahtua, jos käytetään liian monta pääkomponenttia tai jos mallia opetetaan pienelle tietojoukolle.

Usein kysytyt kysymykset (FAQ)

1. Mikä on pääkomponenttianalyysi (PCA)?

PCA on mittasuhteiden vähentämistekniikka, jota käytetään tilastoissa ja koneoppimisessa korkeadimensionaalisen datan muuntamiseksi matalaulotteiseksi esitykseksi, joka säilyttää tärkeimmän tiedon.

2. Miten PCA toimii?

Pääkomponentit ovat lineaarisia yhdistelmiä alkuperäisistä ominaisuuksista, jotka PCA löytää ja käyttää siepatakseen suurimman varianssin tiedoissa. Nämä ortogonaaliset komponentit on järjestetty niiden selittämän varianssin määrän mukaan.

3. Milloin PCA:ta tulisi soveltaa?

PCA:n käyttö on edullista työskennellessäsi monikollineaaristen tai korkeadimensionaalisten tietojoukkojen kanssa. Ominaisuuden poistaminen, kohinanvaimennus ja tietojen esikäsittely ovat sen merkittäviä käyttökohteita.

4. Miten pääkomponentit tulkitaan?

Uusia akseleita edustaa piirreavaruudessa jokainen pääkomponentti. Indikaattori komponentin merkityksestä tietojen vaihtelun sieppaamisessa on sen kyky selittää suurempi varianssi.

5. Mikä on pääkomponenttien merkitys?

Pääkomponentit edustavat suuntia, joissa data vaihtelee eniten. Muutamat ensimmäiset komponentit tyypillisesti sieppaavat suurimman osan tietojen varianssista, mikä mahdollistaa tiiviimmän esityksen.