PCA i Sklearn

PCA i Sklearn
PCA (hovedkomponentanalyse) er en matematisk algoritme som transformerer observasjonene av korrelerte variabler til et sett med verdier av lineært ukorrelerte variabler, kjent som hovedkomponenter. PCA er en av de mest populære algoritmene for reduksjon av dimensjonalitet. Karl Pearson (Li, 1901) oppfant PCA i 1901, og definerte den som "identifiserende linjer og plan av nærmest passform til systemer i rommet" ".

Vi vil diskutere detaljene i PCA og implementeringen av den ved hjelp av Sklearn.

Hva er PCA?

Hovedkomponentanalyse (PCA) er en datareduksjonsmetode. Når du har mange tiltak for hvert tilfelle, men noen av dem er korrelert med hverandre, brukes denne metoden. Hovedkomponenter bruker korrelasjonen for å redusere antall variabler som kreves for å karakterisere hver situasjon tilstrekkelig avhengig av resultatene. Men en hovedkomponentanalyse vil sannsynligvis avdekke at til tross for de ti tiltakene, ble det bare målt tre variabler. Det er mer sannsynlig at de har sprint, hopping og kastingsevne-tre i stedet for ti egenskaper. Hovedkomponenter vil gi koeffisienter for hver av de ti score, noe som indikerer hvor mye hver poengsum går inn i det nye løp, hopper og kastescore. De tre sammensatte score vil også fortelle deg hvor mye av den totale variasjonen som er regnskapsført for. Å jobbe med tre variabler er enklere enn å jobbe med 10, og hvis de står for flertallet av svingningene, har du fanget all informasjonen fra de ti score i tre.

Teknikken blir mye mer nyttig når du har hundrevis av målinger. Imidlertid kan vi møte ett problem: Noen av våre inngangsegenskaper er tilkoblet. Avhengig av styrken til foreningen, kan dette indikere at vi inkluderer ekstra dimensjoner i inndataene våre når vi kunne skaffe samme mengde informasjon med mindre. PCA gir en systematisk teknikk for å bestemme hvilke funksjonskombinasjoner som ser ut til å være mer ansvarlige for datavarians enn andre og gir noen anbefalinger om å redusere antall dimensjoner i våre innspill. Dette er ikke å si at PCA forteller oss hvilke egenskaper som ikke er nødvendige; Snarere viser det oss hvordan vi kan integrere funksjoner i et mindre underområde uten å miste (mye) informasjon. Tradisjonelt har det vært nyttig å redusere antall dimensjoner før matedata til ML -algoritmer er nyttig fordi det reduserer kompleksiteten og behandlingstiden. Jeg må imidlertid påpeke at PCA ikke er et universalmiddel, men et fantastisk verktøy når det fungerer.

Eksempel 1

Vurder tilfellet med datasett D, som inneholder todimensjonale data langs y = x linje. Disse dataene er representert i to dimensjoner, med en x og y poeng for hvert datapunkt. Vektoren ville bli identifisert som retning av maksimal varians via PCA, og denne vektoren ville bli brukt som den nye x-aksen. Vi kan nå representere datasettet D i bare en dimensjon. Som et resultat er PCA en dimensjonalitetsreduksjonsteknikk med fokus på å lokalisere de største variansvektorene.

Eksempel 2

Anta at dataene dine er langs en linje i to dimensjoner. I så fall erkjenner PCA raskt at X og Y er assosiert og utvikler et nytt ortogonalt koordinatsystem for å maksimere variansen i den første koordinaten. Som et resultat har den andre (primære) komponenten ingen prediktiv evne, og du kan sannsynligvis fjerne den fra modellene dine uten å forårsake for mye skade. Du har klart å projisere to dimensjoner til en uten å miste mye informasjon i denne metoden. Selv om du kan gjøre dette visuelt i to dimensjoner, kan det være litt vanskeligere i n dimensjon.

Funksjoner ved PCA

Transformere dataene til en sammenlignbar skala. Noen funksjoner i et datasett kan være ekstremt høyt (1 til 100). Derimot er andre ekstremt lave (0 til 1), noe.

For å identifisere korrelasjonene mellom alle funksjonene, beregner du datakovariansen.

Finn deretter samvariasjonsmatrisens egenverdier og egenvektorer. Etter det, sorter egenvektorene ved å redusere egenverdiene og velg K -egenvektorene med de høyeste egenverdiene.

For å transformere prøvene til det nye underområdet, bruk denne egenvektormatrisen.

Det kan brukes til å finne ut om det er noen korrelasjoner mellom variablene dine. Hvis du har tredimensjonale variabler og deres best tilpassede 2-dimensjonale plan nøyaktig fanger dem, vil sannsynligvis verdiene i den tredje dimensjonen være en lineær funksjon av de to første, pluss eller minus litt Gaussisk støy.

I stedet for å overføre N-dimensjonale datapunkter, kan du bruke PCA for å kommunisere M-dimensjonale koordinater i et best tilpasset underområde hvis du trenger å formidle data (pluss underområdet ligning). Det kan brukes til å komprimere data også. Hvis passformen er perfekt, mister du ingen informasjon; Hvis det er nært, mister du litt.

Fordi mange maskinlæringsalgoritmer fungerer best når hver variabel legger til ny informasjon, brukes den ofte i maskinlæring for å finne og slette overflødige variabler i datasettet ditt.

Det finner ikke alltid faktisk, ikke-lineær duplisering. Hvis du tolker PCA statistisk sett, må du gjøre noen antagelser om de underliggende forholdene mellom variablene / deres støy. Likevel er det et svært verdifullt verktøy, selv om noen antagelser ikke er ideelle.

Implementering av PCA i Sklearn

Importer numpy som NP
Fra Sklearn.nedbrytning av import PCA
X = np.Array ([[1, 2], [2, 1], [3, 2], [2, 3], [4, 5], [5, 4]])
PCA = PCA (n_components = 2)
PCA.passform (x)
trykk (PCA.forklarte_variance_ratio_)
trykk (PCA.singular_values_)

Produksjon
[0.86153846 0.13846154]
[4.3204938 1.73205081]

Konklusjon

Denne artikkelen diskuterte hovedkomponentanalysen og dens implementering ved hjelp av Sklearn. Sklearn er et populært Python -bibliotek som brukes til å utvikle maskinlæringsmodeller. PCA reduserer forbannelsen av dimensjonalitet ved å lede høydimensjonale data til lavere dimensjoner uten å miste mye informasjon. PCA kan implementeres ved hjelp av Sklearn med 'Sklearn.nedbrytningsklasse.