AI 101
Hvad er Dimensionsreduktion?

Hvad er Dimensionsreduktion?
Dimensionsreduktion er en proces, der bruges til at reducere dimensionality af et dataset, ved at tage mange funktioner og repræsentere dem som færre funktioner. For eksempel kan dimensionsreduktion bruges til at reducere et dataset med tyve funktioner ned til kun få funktioner. Dimensionsreduktion bruges ofte i usupervisede læring opgaver til automatisk at oprette klasser ud af mange funktioner. For bedre at forstå hvorfor og hvordan dimensionsreduktion bruges, vil vi kaste et blik på problemerne forbundet med højdimensional data og de mest populære metoder til at reducere dimensionality.
Flere Dimensioner Fører til Overfitting
Dimensionality henviser til antallet af funktioner/kolonner inden for et dataset.
Det antages ofte, at i maskinlæring mere funktioner er bedre, da det skaber en mere præcis model. Men mere funktioner oversætter ikke nødvendigvis til en bedre model.
Funktionerne i et dataset kan variere bredt i forhold til, hvor nyttige de er for modellen, med mange funktioner, der er af lidt betydning. Derudover er det, jo flere funktioner datasettet indeholder, jo flere prøver, der er nødvendige for at sikre, at de forskellige kombinationer af funktioner er godt repræsenteret inden for data. Derfor øges antallet af prøver i forhold til antallet af funktioner. Mere prøver og mere funktioner betyder, at modellen skal være mere kompleks, og som modeller bliver mere komplekse, bliver de mere følsomme over for overfitting. Modellen lærer mønstrene i træningsdataene for godt og den kan ikke generalisere til data uden for træning.
Reducering af dimensionality af et dataset har flere fordele. Som nævnt, er simple modeller mindre tilbøjelige til overfitting, da modellen ikke behøver at gøre så mange antagelser om, hvordan funktionerne er relateret til hinanden. Derudover betyder færre dimensioner, at der kræves mindre beregningskraft til at træne algoritmerne. Ligesom kræves der mindre lagringsplads til et dataset, der har mindre dimensionality. Reducering af dimensionality af et dataset kan også tillade dig at bruge algoritmer, der ikke er egnede til datasets med mange funktioner.
Almindelige Dimensionsreduktionsmetoder
Dimensionsreduktion kan være ved funktionssælgelse eller funktionsteknisk. Funktionssælgelse er, hvor ingeniøren identificerer de mest relevante funktioner af datasettet, mens funktionsteknisk er processen med at oprette nye funktioner ved at kombinere eller omdanne andre funktioner.
Funktionssælgelse og -teknik kan udføres programmeringsmæssigt eller manuelt. Når man manuelt vælger og teknisk funktion, er det typisk at visualisere data for at opdage korrelationer mellem funktioner og klasser. At udføre dimensionsreduktion på denne måde kan være ganske tidskrævende, og derfor er nogle af de mest almindelige måder at reducere dimensionality på at bruge algoritmer, der er tilgængelige i biblioteker som Scikit-learn til Python. Disse almindelige dimensionsreduktionsalgoritmer omfatter: Principal Component Analysis (PCA), Singular Value Decomposition (SVD) og Linear Discriminant Analysis (LDA).
Algoritmerne, der bruges til dimensionsreduktion i usupervisede læringopgaver, er typisk PCA og SVD, mens de, der bruges til supervisede læring dimensionsreduktion, typisk er LDA og PCA. I tilfælde af supervisede læringmodeller føres de nyt genererede funktioner blot ind i maskinlæringsklassifikatoren. Bemærk, at brugen, der er beskrevet her, kun er generelle brugsændringer og ikke de eneste betingelser, disse teknikker kan bruges i. Dimensionsreduktionsalgoritmerne, der er beskrevet ovenfor, er blot statistiske metoder, og de bruges uden for maskinlæringsmodeller.
Principal Component Analysis

Billede: Matrix med primære komponenter identificeret
Principal Component Analysis (PCA) er en statistisk metode, der analyserer funktionerne i et dataset og summerer de funktioner, der er mest indflydelsesrige. Funktionerne i datasettet kombineres sammen til repræsentationer, der opretholder de fleste af datans karakteristika, men er spredt over færre dimensioner. Du kan tænke på det som “at trykke” dataene ned fra en højere dimensionsrepræsentation til en med kun få dimensioner.
Som et eksempel på en situation, hvor PCA kan være nyttig, kan du tænke på de forskellige måder, man kan beskrive vin på. Mens det er muligt at beskrive vin ved hjælp af mange meget specifikke funktioner som CO2-niveauer, aerationniveauer osv., kan sådanne specifikke funktioner være relativt nytteløse, når man skal identificere en bestemt type vin. I stedet ville det være mere klogt at identificere typen på basis af mere generelle funktioner som smag, farve og alder. PCA kan bruges til at kombinere mere specifikke funktioner og oprette funktioner, der er mere generelle, nyttige og mindre tilbøjelige til at forårsage overfitting.
PCA udføres ved at bestemme, hvordan inputfunktionerne varierer fra gennemsnittet i forhold til hinanden, og bestemme, om der er nogen relationer mellem funktionerne. For at gøre dette oprettes en kovariansmatrix, der danner en matrix sammensat af kovarianser i forhold til de mulige par af datasetfunktionerne. Dette bruges til at bestemme korrelationer mellem variablerne, med en negativ kovarians, der indikerer en invers korrelation, og en positiv korrelation, der indikerer en positiv korrelation.
De primære (mest indflydelsesrige) komponenter af datasettet oprettes ved at oprette lineære kombinationer af de oprindelige variabler, hvilket udføres med hjælp af lineære algebra koncepter kaldet eigenvalues og eigenvectors. Kombinationerne oprettes således, at de primære komponenter er ukorrelaterede med hinanden. De fleste af oplysningerne i de oprindelige variabler er komprimeret i de første få primære komponenter, hvilket betyder, at nye funktioner (de primære komponenter) er oprettet, der indeholder oplysningerne fra det oprindelige dataset i et mindre dimensionsrum.
Singular Value Decomposition

Billede: Af Cmglee – Egen arbejde, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297
Singular Value Decomposition (SVD) er brugt til at simplificere værdierne i en matrix, ved at reducere matrixen ned til dets bestanddele og gøre beregninger med matrixen lettere. SVD kan bruges til både reelle og komplekse matricer, men til formålet med denne forklaring vil vi se, hvordan man kan dekomponere en matrix af reelle værdier.
Antag, at vi har en matrix sammensat af reelle data, og vores mål er at reducere antallet af kolonner/funktioner i matrixen, ligesom målet med PCA. Ligesom PCA vil SVD komprimere dimensionality af matrixen, mens den opretholder så meget af matrixens varians som muligt. Hvis vi vil operere på matrix A, kan vi repræsentere matrix A som tre andre matricer kaldet U, D & V. Matrix A består af de oprindelige x * y elementer, mens matrix U består af elementer X * X (det er en orthogonal matrix). Matrix V er en anden orthogonal matrix, der indeholder y * y elementer. Matrix D indeholder elementerne x * y og er en diagonal matrix.
For at dekomponere værdierne for matrix A, skal vi konvertere de oprindelige singular matrixværdier til de diagonale værdier, der findes i en ny matrix. Når vi arbejder med orthogonale matricer, ændrer deres egenskaber ikke, hvis de multiplikeres med andre tal. Derfor kan vi approksimere matrix A ved at tage fordel af denne egenskab. Når vi multiplierer de orthogonale matricer sammen med en transponering af Matrix V, er resultatet en matrix, der er ækvivalent til vores oprindelige A.
Når Matrix a dekomponeres ned i matricer U, D og V, indeholder de data, der findes i Matrix A. Men de venstre kolonner af matricerne vil indeholde det meste af data. Vi kan tage kun disse første få kolonner og have en repræsentation af Matrix A, der har langt færre dimensioner og det meste af data i A.
Lineær Diskriminantanalyse

Venstre: Matrix før LDA, Højre: Akse efter LDA, nu adskilt
Lineær Diskriminantanalyse (LDA) er en proces, der tager data fra en flerdimensional graf og projicerer det på en lineær graf. Du kan forestille dig det ved at tænke på en todimensional graf fyldt med datapunkter, der tilhører to forskellige klasser. Antag, at punkterne er spredt rundt, så ingen linje kan tegnes, der kan adskille de to forskellige klasser pænt. For at håndtere denne situation kan punkterne i 2D-grafen reduceres ned til en 1D-graf (en linje). Denne linje vil have alle datapunkterne fordelt over den og den kan håbefuldt deles ind i to sektioner, der repræsenterer den bedst mulige adskillelse af data.
Når LDA udføres, er der to primære mål. Det første mål er at minimere variansen for klasserne, mens det andet mål er at maksimere afstanden mellem middelværdierne af de to klasser. Disse mål opnås ved at oprette en ny akse, der vil eksistere i 2D-grafen. Den nyligt oprettede akse fungerer til at adskille de to klasser på basis af de mål, der tidligere er beskrevet. Efter at akksen er oprettet, placeres punkterne i 2D-grafen langs akksen.
Der er tre trin, der kræves for at flytte de oprindelige punkter til en ny position langs den nye akse. I det første trin bruges afstanden mellem de enkelte klassers middelværdier (mellan-klassens varians) til at beregne adskillelsen af klasserne. I det andet trin beregnes variansen inden for de forskellige klasser, hvilket udføres ved at bestemme afstanden mellem prøven og middelværdien for den pågældende klasse. I det sidste trin oprettes det lavere-dimensionelle rum, der maksimerer variansen mellem klasser.
LDA-teknikken opnår de bedste resultater, når middelværdierne for målklasserne er langt fra hinanden. LDA kan ikke effektivt adskille klasserne med en lineær akse, hvis middelværdierne for distributionerne overlapper.












