logo

Galvenās sastāvdaļas analīze (PCA)

Palielinoties elementu vai dimensiju skaitam datu kopā, statistiski nozīmīga rezultāta iegūšanai nepieciešamo datu apjoms palielinās eksponenciāli. Tas var izraisīt tādas problēmas kā pārmērīga pielāgošana, palielināts skaitļošanas laiks un samazināta mašīnmācīšanās modeļu precizitāte, ko sauc par dimensiju problēmu lāstu, kas rodas, strādājot ar augstas dimensijas datiem.

Palielinoties dimensiju skaitam, iespējamo pazīmju kombināciju skaits palielinās eksponenciāli, kas padara skaitļošanas grūtības iegūt reprezentatīvu datu paraugu un kļūst dārgi veikt tādus uzdevumus kā klasterēšana vai klasifikācija, jo tas kļūst. Turklāt daži mašīnmācība algoritmi var būt jutīgi pret dimensiju skaitu, tāpēc ir nepieciešams vairāk datu, lai sasniegtu tādu pašu precizitātes līmeni kā zemākas dimensijas datiem.

Lai risinātu dimensijas lāsts , Funkciju inženierija tiek izmantotas metodes, kas ietver pazīmju atlasi un iezīmju ieguvi. Izmēru samazināšana ir pazīmju iegūšanas paņēmiens, kura mērķis ir samazināt ievades līdzekļu skaitu, vienlaikus saglabājot pēc iespējas vairāk sākotnējās informācijas.



Šajā rakstā mēs apspriedīsim vienu no populārākajām dimensiju samazināšanas metodēm, t.i., galveno komponentu analīzi (PCA).

Kas ir galveno komponentu analīze (PCA)?

Galvenās sastāvdaļas analīze (PCA) tehniku ​​ieviesa matemātiķis Kārlis Pīrsons 1901. gadā . Tas darbojas ar nosacījumu, ka, lai gan dati augstākas dimensijas telpā tiek kartēti ar datiem zemākas dimensijas telpā, datu novirzei zemākās dimensijas telpā jābūt maksimālai.

  • Galvenās sastāvdaļas analīze (PCA) ir statistikas procedūra, kurā tiek izmantota ortogonāla transformācija, kas pārvērš korelētu mainīgo kopu par nekorelētu mainīgo kopu. PCA ir visplašāk izmantotais rīks datu izpētes analīzē un mašīnmācībā paredzamajiem modeļiem. Turklāt,
  • Galvenās sastāvdaļas analīze (PCA) ir mācīšanās bez uzraudzības algoritma paņēmiens, ko izmanto, lai pārbaudītu mainīgo lielumu kopas savstarpējās attiecības. To sauc arī par vispārīgu faktoru analīzi, kurā regresija nosaka vispiemērotāko līniju.
  • Galvenais komponentu analīzes (PCA) galvenais mērķis ir samazināt datu kopas dimensiju, vienlaikus saglabājot svarīgākos modeļus vai attiecības starp mainīgajiem bez jebkādām priekšzināšanām par mērķa mainīgajiem.

Principal Component Analysis (PCA) tiek izmantots, lai samazinātu datu kopas dimensiju, atrodot jaunu mainīgo kopu, kas ir mazāka par sākotnējo mainīgo kopu, saglabā lielāko daļu parauga informācijas un ir noderīga regresija un klasifikācija no datiem.

Galvenās sastāvdaļas analīze

  1. Galveno komponentu analīze (PCA) ir dimensiju samazināšanas paņēmiens, kas identificē ortogonālo asu kopu, ko sauc par galvenajām sastāvdaļām, kas uztver maksimālo datu dispersiju. Galvenās sastāvdaļas ir datu kopas sākotnējo mainīgo lineāras kombinācijas, un tās ir sakārtotas dilstošā svarīguma secībā. Kopējā dispersija, ko uztver visas galvenās sastāvdaļas, ir vienāda ar sākotnējo datu kopas kopējo dispersiju.
  2. Pirmais galvenais komponents tver vislielākās datu variācijas, bet otrais galvenais komponents tver maksimumu dispersiju tas ir ortogonāls uz pirmo galveno komponentu un tā tālāk.
  3. Galveno komponentu analīzi var izmantot dažādiem mērķiem, tostarp datu vizualizācijai, līdzekļu atlasei un datu saspiešanai. Datu vizualizācijā PCA var izmantot, lai attēlotu augstas dimensijas datus divās vai trīs dimensijās, padarot tos vieglāk interpretējamus. Iezīmju atlasē PCA var izmantot, lai identificētu svarīgākos mainīgos datu kopā. Datu saspiešanā PCA var izmantot, lai samazinātu datu kopas lielumu, nezaudējot svarīgu informāciju.
  4. Galveno komponentu analīzē tiek pieņemts, ka informācija tiek pārvadāta pazīmju dispersijā, tas ir, jo lielāka ir objekta variācija, jo vairāk informācijas ir ietverts.

Kopumā PCA ir spēcīgs datu analīzes rīks, un tas var palīdzēt vienkāršot sarežģītas datu kopas, padarot tās vieglāk saprotamas un ar kurām strādāt.

Soli pa solim PCA (galveno komponentu analīzes) skaidrojums

1. darbība: standartizācija

Pirmkārt, mums ir nepieciešams standartizēt mūsu datu kopu, lai nodrošinātu, ka katra mainīgā vidējais rādītājs ir 0 un standarta novirze 1.

Z = frac{X-mu}{sigma}

Šeit,

  • muir neatkarīgo pazīmju vidējais rādītājs mu = left { mu_1, mu_2, cdots, mu_m 
ight }
  • sigmair standarta novirze neatkarīgām iezīmēm sigma = left { sigma_1, sigma_2, cdots, sigma_m 
ight }

2. darbība: Kovariācijas matricas aprēķins

Kovariance mēra locītavu mainīguma stiprumu starp diviem vai vairākiem mainīgajiem, norādot, cik daudz tie mainās attiecībā pret otru. Lai atrastu kovariāciju, mēs varam izmantot formulu:

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

Kovariācijas vērtība var būt pozitīva, negatīva vai nulles.

  • Pozitīvi: palielinoties x1, palielinās arī x2.
  • Negatīvs: palielinoties x1, samazinās arī x2.
  • Nulles: nav tiešas attiecības

3. darbība. Aprēķiniet kovariācijas matricas īpašvērtības un īpašvektorus, lai identificētu galvenās sastāvdaļas

Lai A ir kvadrātveida nXn matrica un X ir vektors, kas nav nulle, kuram

AX = lambda X

dažām skalārajām vērtībām lambda. tad lambdair pazīstams kā īpašvērtība matrica A un X ir pazīstama kā īpašvektors matricas A atbilstošajai īpašvērtībai.

To var uzrakstīt arī šādi:

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

kur es esmu identitātes matrica ar tādu pašu formu kā matrica A. Un iepriekš minētie nosacījumi būs patiesi tikai tad, ja (A - lambda I)būs neinvertējama (t.i., vienskaitļa matrica). Tas nozīmē,

|A - lambda I| = 0

No iepriekš minētā vienādojuma mēs varam atrast īpašvērtības lambda, un tāpēc atbilstošo īpašvektoru var atrast, izmantojot vienādojumu AX = lambda X.

Kā darbojas galveno komponentu analīze (PCA)?

Tādējādi PCA izmanto lineāru transformāciju, kuras pamatā ir lielākās dispersijas saglabāšana datos, izmantojot vismazāko dimensiju skaitu. Tas ietver šādas darbības:

python os listdir

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

Izvade :

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

Tagad mēs pielietosim pirmo lielāko soli, kas ir datu standartizēšana, un šim nolūkam mums vispirms būs jāaprēķina katra objekta vidējā un standarta novirze.

Python3

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

The kovariācija matrica palīdz mums iztēloties, cik spēcīga ir divu pazīmju savstarpēja atkarība līdzekļu telpā.

Python3

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

Izvade :

Tagad mēs aprēķināsim īpašvektori un īpašvērtības mūsu funkciju telpai, kas kalpo lieliskam mērķim, nosakot mūsu funkciju telpas galvenos komponentus.

Python3

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

Izvade :

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

Sakārtojiet īpašvērtības dilstošā secībā un attiecīgi sakārtojiet atbilstošos īpašvektorus.

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

Izskaidrotā dispersija ir termins, kas sniedz priekšstatu par kopējās dispersijas apjomu, kas ir saglabāts, atlasot galvenos komponentus, nevis sākotnējo pazīmju telpu.

Python3

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

Izvade :

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

Nosakiet galveno komponentu skaitu

Šeit mēs varam ņemt vērā jebkuras mūsu izvēlētās vērtības galveno komponentu skaitu vai arī ierobežot izskaidroto dispersiju. Šeit es apsveru izskaidroto dispersiju vairāk nekā vienādu ar 50%. Pārbaudīsim, cik daudz galveno komponentu ir iekļauti tajā.

Python3

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

Izvade :

2>

Projicējiet datus uz atlasītajām galvenajām sastāvdaļām

  • Atrodiet projekcijas matricu. Tā ir īpašvektoru matrica, kas atbilst datu kovariācijas matricas lielākajām īpašvērtībām. tas projicē augstas dimensijas datu kopu zemākas dimensijas apakštelpā
  • Datu kovariācijas matricas īpašvektori tiek saukti par datu galvenajām asīm, un datu gadījumu projekcija uz šīm galvenajām asīm tiek saukta par galvenajām sastāvdaļām.

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

Izvade :

  • Pēc tam mēs projektējam savu datu kopu, izmantojot formulu:

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

  • Dimensijas samazinājums tiek iegūts, saglabājot tikai tās asis (dimensijas), kas veido lielāko dispersiju, un atmetot visas pārējās.

Projekcijas atrašana 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)>
>
>

Izvade :

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

Datu kovariācijas matricas īpašvektori tiek saukti par datu galvenajām asīm, un datu gadījumu projekcija uz šīm galvenajām asīm tiek saukta par galvenajām sastāvdaļām. Dimensiju samazinājums tiek iegūts, saglabājot tikai tās asis (dimensijas), kas veido lielāko dispersiju, un atmetot visas pārējās.

PCA, izmantojot Sklearn

Ir dažādas bibliotēkas, kurās viss galveno komponentu analīzes process ir automatizēts, ieviešot to pakotnē kā funkciju, un mums vienkārši jānodod tik daudz galveno komponentu, kādu mēs vēlētos. Sklearn ir viena no šādām bibliotēkām, ko var izmantot PCA, kā parādīts zemāk.

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

Izvade:

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

Mēs varam saskaņot no iepriekš minētā Z_pca rezultāta, jo tas ir tieši tādas pašas vērtības.

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

Izvade:

instantiating java

Python3

# components> pca.components_>
>
>

Izvade :

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

Galvenās sastāvdaļas analīzes priekšrocības

  1. Izmēru samazināšana : galveno komponentu analīze ir populāra metode, ko izmanto izmēru samazināšana , kas ir mainīgo skaita samazināšanas process datu kopā. Samazinot mainīgo skaitu, PCA vienkāršo datu analīzi, uzlabo veiktspēju un atvieglo datu vizualizāciju.
  2. Funkciju izvēle : var izmantot galveno komponentu analīzi funkciju izvēle , kas ir svarīgāko mainīgo atlases process datu kopā. Tas ir noderīgi mašīnmācībā, kur mainīgo lielumu skaits var būt ļoti liels, un ir grūti noteikt svarīgākos mainīgos.
  3. Datu vizualizācija : var izmantot galveno komponentu analīzi Daudzkolinearitāte : Lai risinātu, var izmantot galveno komponentu analīzi daudzkolinearitāte , kas ir izplatīta problēma regresijas analīzē, kur divi vai vairāki neatkarīgi mainīgie ir ļoti korelēti. PCA var palīdzēt noteikt datu pamatā esošo struktūru un izveidot jaunus, nekorelētus mainīgos, ko var izmantot regresijas modelī.
  4. Trokšņa samazināšana : galveno komponentu analīzi var izmantot, lai samazinātu datu troksni. Noņemot galvenos komponentus ar zemu dispersiju, kas tiek uzskatīts par troksni, galveno komponentu analīze var uzlabot signāla un trokšņa attiecību un atvieglot datu pamatā esošās struktūras noteikšanu.
  5. Datu saspiešana : datu saspiešanai var izmantot galveno komponentu analīzi. Attēlojot datus, izmantojot mazāku skaitu galveno komponentu, kas aptver lielāko daļu datu variāciju, PCA var samazināt uzglabāšanas prasības un paātrināt apstrādi.
  6. Ārpuses noteikšana : galveno komponentu analīzi var izmantot, lai noteiktu novirzes. Ārpuses ir datu punkti, kas būtiski atšķiras no citiem datu kopas datu punktiem. Galvenās sastāvdaļas analīze var identificēt šīs novirzes, meklējot datu punktus, kas atrodas tālu no citiem galvenajiem komponentu telpas punktiem.

Galvenās sastāvdaļas analīzes trūkumi

  1. Galveno komponentu interpretācija : galvenie komponenti, kas izveidoti, izmantojot galveno komponentu analīzi, ir sākotnējo mainīgo lineāras kombinācijas, un bieži vien ir grūti tos interpretēt kā sākotnējo mainīgo lielumu. Tas var apgrūtināt PCA rezultātu izskaidrošanu citiem.
  2. Datu mērogošana : galveno komponentu analīze ir jutīga pret datu mērogu. Ja dati nav pareizi mērogoti, PCA var nedarboties labi. Tāpēc pirms galveno komponentu analīzes izmantošanas ir svarīgi mērogot datus.
  3. Informācijas zudums : galveno komponentu analīze var izraisīt informācijas zudumu. Lai gan galveno komponentu analīze samazina mainīgo skaitu, tā var izraisīt arī informācijas zudumu. Informācijas zuduma pakāpe ir atkarīga no izvēlēto galveno komponentu skaita. Tāpēc ir svarīgi rūpīgi izvēlēties saglabājamo galveno komponentu skaitu.
  4. Nelineāras attiecības : Galvenās sastāvdaļas analīze pieņem, ka attiecības starp mainīgajiem ir lineāras. Tomēr, ja starp mainīgajiem ir nelineāras attiecības, galveno komponentu analīze var nedarboties labi.
  5. Skaitļošanas sarežģītība : skaitļošanas galveno komponentu analīze var būt dārga skaitļošanas ziņā lielām datu kopām. Tas jo īpaši attiecas uz gadījumiem, kad datu kopā ir liels mainīgo lielumu skaits.
  6. Pārmērīga pielāgošana : Galveno komponentu analīze dažkārt var izraisīt pārmērīga pielāgošana , kas ir tad, kad modelis pārāk labi atbilst apmācības datiem un slikti darbojas ar jauniem datiem. Tas var notikt, ja tiek izmantots pārāk daudz galveno komponentu vai ja modelis ir apmācīts nelielai datu kopai.

Bieži uzdotie jautājumi (FAQ)

1. Kas ir galveno komponentu analīze (PCA)?

PCA ir dimensiju samazināšanas paņēmiens, ko izmanto statistikā un mašīnmācībā, lai pārveidotu augstas dimensijas datus zemākas dimensijas attēlojumā, saglabājot vissvarīgāko informāciju.

2. Kā darbojas PCA?

Galvenās sastāvdaļas ir sākotnējo funkciju lineāras kombinācijas, kuras PCA atrod un izmanto, lai fiksētu vislielākās datu atšķirības. Šie ortogonālie komponenti ir sakārtoti to izskaidrotās dispersijas lieluma secībā.

3. Kad jāpiemēro PCA?

PCA izmantošana ir izdevīga, strādājot ar daudzkolineārām vai augstas dimensijas datu kopām. Funkciju ieguve, trokšņu samazināšana un datu pirmapstrāde ir nozīmīgi to lietojumi.

4. Kā tiek interpretētas galvenās sastāvdaļas?

Jaunas asis iezīmes telpā attēlo katra galvenā sastāvdaļa. Indikators, kas norāda uz komponenta nozīmīgumu datu mainīguma tveršanā, ir tā spēja izskaidrot lielāku dispersiju.

5. Kāda ir galveno komponentu nozīme?

Galvenās sastāvdaļas norāda virzienus, kuros dati visvairāk atšķiras. Pirmie komponenti parasti aptver lielāko daļu datu dispersijas, ļaujot sniegt kodolīgāku attēlojumu.