Pääkomponenttianalyysi on pohjimmiltaan tilastollinen menettely, jolla muunnetaan joukko mahdollisesti korreloitujen muuttujien havaintoja lineaarisesti korreloimattomien muuttujien arvoiksi.
Jokainen pääkomponenteista valitaan siten, että se kuvaisi suurimman osan niistä vielä saatavilla olevaa varianssia ja kaikki nämä pääkomponentit ovat ortogonaalisia toisiinsa nähden. Kaikissa pääkomponenteissa ensimmäisellä pääkomponentilla on suurin varianssi.
PCA:n käyttötarkoitukset:
- Sitä käytetään tiedon muuttujien välisten vuorovaikutusten etsimiseen.
- Sitä käytetään tietojen tulkitsemiseen ja visualisointiin.
- Muuttujien määrä vähenee, mikä tekee jatkoanalyysistä yksinkertaisempaa.
- Sitä käytetään usein visualisoimaan geneettistä etäisyyttä ja sukulaisuutta populaatioiden välillä.
Nämä suoritetaan periaatteessa neliömäisellä symmetrisellä matriisilla. Se voi olla puhdas neliösumma ja ristitulomatriisi Kovarianssimatriisi tai korrelaatiomatriisi. Korrelaatiomatriisia käytetään, jos yksilöllinen varianssi eroaa paljon.
PCA:n tavoitteet:
- Se on pohjimmiltaan ei-riippuva menettely, jossa se vähentää ominaisuustilaa suuresta määrästä muuttujia pienempään määrään tekijöitä.
- PCA on pohjimmiltaan ulottuvuuden pienennysprosessi, mutta ei ole takeita siitä, että ulottuvuus on tulkittavissa.
- Tämän PCA:n päätehtävänä on valita suuresta joukosta muuttujien osajoukko, jonka perusteella alkuperäisillä muuttujilla on suurin korrelaatio pääoman kanssa.
- Kuvioiden tunnistaminen: PCA voi auttaa tunnistamaan muuttujien välisiä kuvioita tai suhteita, jotka eivät välttämättä näy alkuperäisessä tiedossa. Vähentämällä tietojen dimensiota PCA voi paljastaa taustalla olevia rakenteita, joista voi olla hyötyä tiedon ymmärtämisessä ja tulkinnassa.
- Ominaisuuden poimiminen: PCA:ta voidaan käyttää ominaisuuksien poimimiseen muuttujajoukosta, jotka ovat informatiivisempia tai merkityksellisempiä kuin alkuperäiset muuttujat. Näitä ominaisuuksia voidaan sitten käyttää mallinnus- tai muissa analyysitehtävissä.
- Tietojen pakkaus: PCA:ta voidaan käyttää suurten tietojoukkojen pakkaamiseen vähentämällä datan esittämiseen tarvittavien muuttujien määrää säilyttäen samalla mahdollisimman paljon tietoa.
- Kohinanvaimennus: PCA:ta voidaan käyttää vähentämään kohinaa tietojoukossa tunnistamalla ja poistamalla tärkeimmät komponentit, jotka vastaavat datan meluisia osia.
- Visualisointi: PCA:ta voidaan käyttää korkeaulotteisen datan visualisointiin alemmassa tilassa, mikä helpottaa tulkintaa ja ymmärtämistä. Projisoimalla data pääkomponentteihin voidaan helpommin visualisoida muuttujien välisiä kuvioita ja suhteita.
Pääakselin menetelmä: PCA etsii periaatteessa lineaarista muuttujien yhdistelmää, jotta voimme poimia muuttujista suurimman varianssin. Kun tämä prosessi on valmis, se poistaa sen ja etsii toista lineaarista yhdistelmää, joka antaa selityksen jäljellä olevan varianssin enimmäisosuudesta, joka periaatteessa johtaa ortogonaalisiin tekijöihin. Tässä menetelmässä analysoimme kokonaisvarianssia.
fcfs
Omavektori: Se on nollasta poikkeava vektori, joka pysyy yhdensuuntaisena matriisin kertolaskujen jälkeen. Oletetaan, että x on matriisin M ulottuvuuden r ominaisvektori, jonka mitta on r*r, jos Mx ja x ovat rinnakkaisia. Sitten meidän on ratkaistava Mx=Ax, jossa sekä x että A ovat tuntemattomia, jotta saadaan ominaisvektori ja ominaisarvot.
Eigen-vektorien kohdalla voimme sanoa, että pääkomponentit osoittavat muuttujan sekä yhteisen että ainutlaatuisen varianssin. Pohjimmiltaan se on varianssikeskeinen lähestymistapa, joka pyrkii toistamaan kokonaisvarianssin ja korrelaation kaikkien komponenttien kanssa. Pääkomponentit ovat periaatteessa alkuperäisten muuttujien lineaarisia yhdistelmiä painotettuina niiden panoksella selittämään tietyn ortogonaalisen ulottuvuuden varianssia.
Omat arvot: Se tunnetaan pohjimmiltaan tunnusomaisina juuriina. Se mittaa pohjimmiltaan kaikkien muuttujien varianssia, jonka tämä tekijä selittää. Ominaisuusarvojen suhde on tekijöiden selittävän tärkeyden suhde muuttujiin. Jos kerroin on pieni, se vaikuttaa vähemmän muuttujien selittämiseen. Yksinkertaisesti sanottuna se mittaa tekijän huomioiman varianssin määrää annetussa kokonaistietokannassa. Voimme laskea tekijän ominaisarvon sen neliöllisen tekijäkuormituksen summana kaikille muuttujille.
Ymmärrämme nyt pääkomponenttianalyysin Pythonilla.
Saat toteutuksessa käytettävän tietojoukon napsauttamalla tässä .
Vaihe 1: Kirjastojen tuonti
Python # importing required libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd>
Vaihe 2: Tietojoukon tuonti
Tuo tietojoukko ja jakaa tietojoukko X- ja y-komponentteihin tietojen analysointia varten.
Python # importing or loading the dataset dataset = pd.read_csv('wine.csv') # distributing the dataset into two components X and Y X = dataset.iloc[:, 0:13].values y = dataset.iloc[:, 13].values>
Vaihe 3: Tietojoukon jakaminen harjoitusjoukoksi ja testijoukoksi
# Splitting the X and Y into the # Training set and Testing set from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)>
Vaihe 4: Ominaisuuden skaalaus
Harjoittelu- ja testaussarjan esikäsittelyn tekeminen, kuten Standard-vaa'an sovittaminen.
Python # performing preprocessing part from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)>
Vaihe 5: PCA-toiminnon käyttäminen
PCA-toiminnon soveltaminen koulutus- ja testaussarjaan analysointia varten.
käänteinen merkkijono javassaPython
# Applying PCA function on training # and testing set of X component from sklearn.decomposition import PCA pca = PCA(n_components = 2) X_train = pca.fit_transform(X_train) X_test = pca.transform(X_test) explained_variance = pca.explained_variance_ratio_>
Vaihe 6: Logistisen regression sovittaminen harjoitussarjaan
Python # Fitting Logistic Regression To the training set from sklearn.linear_model import LogisticRegression classifier = LogisticRegression(random_state = 0) classifier.fit(X_train, y_train)>
Lähtö:

Vaihe 7: Testisarjan tuloksen ennustaminen
Python # Predicting the test set result using # predict function under LogisticRegression y_pred = classifier.predict(X_test)>
Vaihe 8: Hämmennysmatriisin tekeminen
# making confusion matrix between # test set of Y and predicted value. from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)>
Vaihe 9: Harjoitussarjan tuloksen ennustaminen
# Predicting the training set # result through scatter plot from matplotlib.colors import ListedColormap X_set, y_set = X_train, y_train X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('yellow', 'white', 'aquamarine'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], color = ListedColormap(('red', 'green', 'blue'))(i), label = j) plt.title('Logistic Regression (Training set)') plt.xlabel('PC1') # for Xlabel plt.ylabel('PC2') # for Ylabel plt.legend() # to show legend # show scatter plot plt.show()> Lähtö:

Vaihe 10: Testisarjan tulosten visualisointi
Python # Visualising the Test set results through scatter plot from matplotlib.colors import ListedColormap X_set, y_set = X_test, y_test X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('yellow', 'white', 'aquamarine'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], color = ListedColormap(('red', 'green', 'blue'))(i), label = j) # title for scatter plot plt.title('Logistic Regression (Test set)') plt.xlabel('PC1') # for Xlabel plt.ylabel('PC2') # for Ylabel plt.legend() # show scatter plot plt.show()> 
Voimme visualisoida tiedot uudessa pääkomponenttitilassa:
Python # plot the first two principal components with labels y = df.iloc[:, -1].values colors = ['r', 'g'] labels = ['Class 1', 'Class 2'] for i, color, label in zip(np.unique(y), colors, labels): plt.scatter(X_pca[y == i, 0], X_pca[y == i, 1], color=color, label=label) plt.xlabel('Principal Component 1') plt.ylabel('Principal Component 2') plt.legend() plt.show() 7> Tämä on yksinkertainen esimerkki PCA:n suorittamisesta Pythonilla. Tämän koodin tulos on kahden ensimmäisen pääkomponentin ja niiden selitetyn varianssisuhteen sirontakaavio. Valitsemalla sopivan määrän pääkomponentteja voimme vähentää tietojoukon ulottuvuutta ja parantaa tietomme ymmärtämistä.