AI 101
Hvad er Dimensionalitetsreduktion?

Hvad er Dimensionalitetsreduktion?
Dimensionalitetsreduktion er en proces, der bruges til at reducere dimensionaliteten af en dataset, ved at tage mange funktioner og repræsentere dem som færre funktioner. For eksempel kan dimensionalitetsreduktion bruges til at reducere en dataset med tyve funktioner ned til kun få funktioner. Dimensionalitetsreduktion bruges ofte i usupervisede læringstasks til automatisk at oprette klasser ud af mange funktioner. For bedre at forstå hvorfor og hvordan dimensionalitetsreduktion bruges, vil vi se på problemerne i forbindelse med højdimensional data og de mest populære metoder til at reducere dimensionaliteten.
Flere Dimensioner Fører til Overfitting
Dimensionalitet refererer til antallet af funktioner/kolonner i en dataset.
Det antages ofte, at i maskinlæring er flere funktioner bedre, da det skaber en mere præcis model. However, flere funktioner oversætter sig ikke nødvendigvis til en bedre model.
Funktionerne i en dataset kan variere meget i forhold til, hvor nyttige de er for modellen, med mange funktioner, der er af lidt betydning. Derudover er det nødvendigt med flere samples til at sikre, at de forskellige kombinationer af funktioner er godt repræsenteret i data. Derfor øges antallet af samples i forhold til antallet af funktioner. Flere samples og flere 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 kan ikke generalisere til data uden for træningssættet.
At reducere dimensionaliteten af en dataset har flere fordele. Som nævnt er enklere 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 kræves mindre beregningskraft til at træne algoritmerne. Ligeså behøves der mindre lagerplads til en dataset, der har en mindre dimensionalitet. At reducere dimensionaliteten af en dataset kan også give mulighed for at bruge algoritmer, der ikke er egnede til datasets med mange funktioner.
Almindelige Dimensionalitetsreduktionsmetoder
Dimensionalitetsreduktion kan opnås ved funktionssælgelse eller funktionsteknisk. Funktionssælgelse er, hvor ingeniøren identificerer de mest relevante funktioner i datasettet, mens funktionsteknisk er processen med at oprette nye funktioner ved at kombinere eller transformere andre funktioner.
Funktionssælgelse og -teknik kan udføres programmeringsmæssigt eller manuelt. Når manuelt vælger og teknisk funktioner, er det typisk at visualisere data for at opdage korrelationer mellem funktioner og klasser. At udføre dimensionalitetsreduktion på denne måde kan være meget tidskrævende, og derfor er nogle af de mest almindelige måder at reducere dimensionalitet på at bruge algoritmer, der er tilgængelige i biblioteker som Scikit-learn til Python. Disse almindelige dimensionalitetsreduktionsalgoritmer omfatter: Principal Component Analysis (PCA), Singular Value Decomposition (SVD) og Linear Discriminant Analysis (LDA).
Algoritmerne, der bruges til dimensionalitetsreduktion i usupervisede læringstasks, er typisk PCA og SVD, mens de, der bruges til supervisede læringdimensionalitetsreduktion, er typisk LDA og PCA. I tilfælde af supervisede læringmodeller føres de nyoprettede funktioner blot ind i maskinlæringsklassifikatoren. Bemærk, at de anvendelser, der beskrives her, kun er generelle anvendelser og ikke de eneste tilfælde, hvor disse teknikker kan bruges. Dimensionalitetsreduktionsalgoritmerne, der er beskrevet ovenfor, er blot statistiske metoder og 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 en dataset og summerer de funktioner, der er mest indflydelsesrige. Funktionerne i datasettet kombineres sammen til repræsentationer, der bevarede de fleste af datatypens karakteristika, men er spredt over færre dimensioner. Du kan tænke på dette som “at trykke” data ned fra en højere dimensionsrepræsentation til en med kun få dimensioner.
Som et eksempel på en situation, hvor PCA kan være nyttigt, kan man 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, luftningsniveauer osv., kan sådanne specifikke funktioner være relativt ubrugelige, når man skal identificere en bestemt type vin. I stedet ville det være mere hensigtsmæssigt 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 består af kovarianser i forhold til de mulige par af datasetfunktionerne. Dette bruges til at bestemme korrelationer mellem variablerne, hvor en negativ kovarians indikerer en invers korrelation, og en positiv korrelation indikerer en positiv korrelation.
De primære (mest indflydelsesrige) komponenter i datasettet oprettes ved at oprette lineære kombinationer af de oprindelige variabler, hvilket udføres med hjælp af lineære algebrabegreber kaldet eigenverdier og eigenvectorer. Kombinationerne oprettes således, at de primære komponenter er ukorrelerede med hinanden. Det meste af den information, der er indeholdt i de oprindelige variabler, komprimeres i de første få primære komponenter, hvilket betyder, at nye funktioner (de primære komponenter) er oprettet, der indeholder informationen fra det oprindelige dataset i en 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 til dens bestanddele og gøre beregninger med matrixen lettere. SVD kan bruges til både reelle og komplekse matricer, men til formål med denne forklaring vil vi se på, hvordan man kan dekomponere en matrix med 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 dimensionaliteten af matrixen, mens den bevarede 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 og V. Matrix A består af de oprindelige x * y-elementer, mens matrix U består af x * x-elementer (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 multipliceres med andre tal. Derfor kan vi approksimere matrix A ved at udnytte denne egenskab. Når vi multiplicerer 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. Dog vil de venstre kolonner i matricerne 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 separerbar
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 dette ved at tænke på en todimensional graf fyldt med datapunkter, der tilhører to forskellige klasser. Antag, at punkterne er spredt sådan, at ingen linje kan tegnes, der kan adskille de to klasser pænt. For at håndtere denne situation kan punkterne i 2D-grafen reduceres til en 1D-graf (en linje). Denne linje vil have alle datapunkterne fordelt over den og kan håbefuldt deles ind i to sektioner, der repræsenterer den bedste 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 for de to klasser. Disse mål opnås ved at oprette en ny akse, der vil eksistere i 2D-grafen. Den nyoprettede akse fungerer som at adskille de to klasser på basis af de mål, der tidligere er beskrevet. Efter at akseen er oprettet, placeres punkterne i 2D-grafen langs akseen.
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 klassernes adskillelse. I det andet trin beregnes variansen inden for de forskellige klasser, ved at bestemme afstanden mellem prøven og middelværdien for klassen i question. 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 de målrette klasser er langt fra hinanden. LDA kan ikke effektivt adskille klasserne med en lineær akse, hvis middelværdierne for distributionerne overlapper.












