AI 101
Vad är Dimensionalitetsreducering?

Vad är Dimensionalitetsreducering?
Dimensionalitetsreducering är en process som används för att reducera dimensionaliteten i en datamängd, genom att ta många funktioner och representera dem som färre funktioner. Till exempel kan dimensionalitetsreducering användas för att reducera en datamängd med tjugo funktioner till bara några funktioner. Dimensionalitetsreducering används vanligtvis i oövervakad inlärning för att automatiskt skapa klasser från många funktioner. För att bättre förstå varför och hur dimensionalitetsreducering används, ska vi undersöka problemen som är förknippade med högdimensionell data och de vanligaste metoderna för att reducera dimensionalitet.
Fler Dimensioner Leder till Överanpassning
Dimensionalitet hänvisar till antalet funktioner/kolumner i en datamängd.
Det antas ofta att i maskinlärning, ju fler funktioner desto bättre, eftersom det skapar en mer exakt modell. Men fler funktioner betyder inte nödvändigtvis en bättre modell.
Funktionerna i en datamängd kan variera mycket i termer av hur användbara de är för modellen, med många funktioner som är av liten betydelse. Dessutom behövs fler prover för att säkerställa att de olika kombinationerna av funktioner är väl representerade i datamängden. Därför ökar antalet prover i proportion med antalet funktioner. Fler prover och fler funktioner betyder att modellen måste vara mer komplex, och ju mer komplexa modeller är, desto mer känsliga är de för överanpassning. Modellen lär sig mönstren i träningsdatat för bra och den kan inte generalisera till data utanför exemplet.
Att reducera dimensionaliteten i en datamängd har flera fördelar. Som nämnts tidigare är enklare modeller mindre benägna att överanpassa, eftersom modellen måste göra färre antaganden om hur funktionerna är relaterade till varandra. Dessutom krävs mindre beräkningskraft för att träna algoritmerna. Likaså behövs mindre lagringsutrymme för en datamängd som har mindre dimensionalitet. Att reducera dimensionaliteten i en datamängd kan också låta dig använda algoritmer som är olämpliga för datamängder med många funktioner.
Vanliga Metoder för Dimensionalitetsreducering
Dimensionalitetsreducering kan ske genom funktionssval eller funktionsteknik. Funktionssval är där ingenjören identifierar de mest relevanta funktionerna i datamängden, medan funktionsteknik är processen att skapa nya funktioner genom att kombinera eller omvandla andra funktioner.
Funktionssval och teknik kan göras programmatiskt eller manuellt. När man väljer och konstruerar funktioner manuellt är det vanligt att visualisera datat för att upptäcka korrelationer mellan funktioner och klasser. Att utföra dimensionalitetsreducering på detta sätt kan vara ganska tidskrävande och därför är några av de vanligaste sätten att reducera dimensionalitet genom att använda algoritmer som finns i bibliotek som Scikit-learn för Python. Dessa vanliga algoritmer för dimensionalitetsreducering inkluderar: Principal Component Analysis (PCA), Singular Value Decomposition (SVD) och Linear Discriminant Analysis (LDA).
Algoritmerna som används för dimensionalitetsreducering för oövervakade inlärningsuppgifter är vanligtvis PCA och SVD, medan de som används för övervakade inlärningsuppgifter är vanligtvis LDA och PCA. I fallet med övervakade inlärningsmodeller matas de nygenererade funktionerna bara in i maskinlärningsklassificeringen. Observera att användningarna som beskrivs här är bara allmänna användningsfall och inte de enda villkoren som dessa tekniker kan användas under. Algoritmerna för dimensionalitetsreducering som beskrivs ovan är enbart statistiska metoder och de används utanför maskinlärningsmodeller.
Principal Component Analysis

Foto: Matris med huvudkomponenter identifierade
Principal Component Analysis (PCA) är en statistisk metod som analyserar egenskaperna/funktionerna i en datamängd och sammanfattar de funktioner som är mest inflytelserika. Funktionerna i datamängden kombineras till representationer som behåller de flesta egenskaperna i datat, men sprids över färre dimensioner. Du kan tänka på detta som att “klämma” datat från en högre dimensionsrepresentation till en med bara några dimensioner.
Som ett exempel på en situation där PCA kan vara användbart, tänk på de olika sätten att beskriva vin. Medan det är möjligt att beskriva vin med många mycket specifika funktioner som CO2-nivåer, syrening, etc., kan sådana specifika funktioner vara ganska värdelösa när man försöker identifiera en specifik typ av vin. Istället vore det mer lämpligt att identifiera typen baserat på mer allmänna funktioner som smak, färg och ålder. PCA kan användas för att kombinera mer specifika funktioner och skapa funktioner som är mer allmänna, användbara och mindre benägna att orsaka överanpassning.
PCA utförs genom att bestämma hur ingångsfunktionerna varierar från medelvärdet i förhållande till varandra, bestämma om några relationer finns mellan funktionerna. För att göra detta skapas en kovariansmatris, som etablerar en matris som består av kovarianserna i förhållande till de möjliga paren av datamängdens funktioner. Detta används för att bestämma korrelationer mellan variablerna, med en negativ kovarians som indikerar en omvänd korrelation och en positiv korrelation som indikerar en positiv korrelation.
De viktigaste (mest inflytelserika) komponenterna i datamängden skapas genom att skapa linjära kombinationer av de ursprungliga variablerna, vilket görs med hjälp av linjära algebra koncept som kallas eigenvärdet och eigenvektorer. Kombinationerna skapas så att de viktigaste komponenterna är orelaterade till varandra. De flesta av de ursprungliga variablernas information komprimeras till de första få viktigaste komponenterna, vilket innebär att nya funktioner (de viktigaste komponenterna) har skapats som innehåller informationen från den ursprungliga datamängden i ett mindre dimensionsutrymme.
Singular Värdereduktion

Foto: Av Cmglee – Eget arbete, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297
Singular Värdereduktion (SVD) är används för att förenkla värdena i en matris, genom att reducera matrisen till dess beståndsdelar och göra beräkningar med den matrisen lättare. SVD kan användas för både reella och komplexa matriser, men för ändamålet med denna förklaring, ska vi undersöka hur man kan dekomponera en matris med reella värden.
Anta att vi har en matris som består av reella data och vårt mål är att reducera antalet kolumner/funktioner i matrisen, liknande målet med PCA. Som PCA kommer SVD att komprimera dimensionaliteten i matrisen samtidigt som den behåller så mycket av matrisens variabilitet som möjligt. Om vi vill operera på matris A, kan vi representera matris A som tre andra matriser som kallas U, D och V. Matris A består av de ursprungliga x * y-elementen, medan matris U består av element x * x (det är en ortogonal matris). Matris V är en annan ortogonal matris som innehåller y * y-element. Matris D innehåller element x * y och det är en diagonal matris.
För att dekomponera värdena för matris A, behöver vi omvandla de ursprungliga singulara matrisvärdena till de diagonala värdena som finns i en ny matris. När vi arbetar med ortogonala matriser, förändras deras egenskaper inte om de multipliceras med andra tal. Därför kan vi approximera matris A genom att utnyttja denna egenskap. När vi multiplicerar de ortogonala matriserna tillsammans med en transponering av matris V, är resultatet en ekvivalent matris till vår ursprungliga A.
När matris A dekomponeras till matriserna U, D och V, innehåller de data som finns i matris A. Men de vänstra kolumnerna i matriserna innehåller den största delen av datat. Vi kan ta bara dessa första få kolumner och ha en representation av matris A som har mycket färre dimensioner och de flesta av datat inom A.
Linjär Diskriminantanalys

Vänster: Matris före LDA, Höger: Axeln efter LDA, nu separerbar
Linjär Diskriminantanalys (LDA) är en process som tar data från en multidimensionell graf och projicerar den på en linjär graf. Du kan föreställa dig detta genom att tänka på en tvådimensionell graf fylld med datapunkter som tillhör två olika klasser. Anta att punkterna är utspridda så att ingen linje kan ritas som kan separera de två olika klasserna på ett snyggt sätt. För att hantera denna situation kan punkterna i den tvådimensionella grafen reduceras till en endimensionell graf (en linje). Denna linje kommer att ha alla datapunkter distribuerade över den och den kan hoppas kunna delas in i två sektioner som representerar den bästa möjliga separationen av datat.
När LDA utförs finns det två primära mål. Det första målet är att minimera variansen för klasserna, medan det andra målet är att maximera avståndet mellan medelvärdena för de två klasserna. Dessa mål uppnås genom att skapa en ny axel som kommer att finnas i den tvådimensionella grafen. Den nyskapade axeln fungerar för att separera de två klasserna baserat på de mål som beskrivits tidigare. Efter att axeln har skapats placeras punkterna i den tvådimensionella grafen längs axeln.
Det finns tre steg som krävs för att flytta de ursprungliga punkterna till en ny position längs den nya axeln. I det första steget används avståndet mellan de enskilda klassernas medelvärden (variansen mellan klasserna) för att beräkna separerbarheten av klasserna. I det andra steget beräknas variansen inom de olika klasserna, genom att bestämma avståndet mellan provet och medelvärdet för klassen i fråga. I det sista steget skapas det lägre dimensionsutrymmet som maximalt variansen mellan klasserna.
LDA-tekniken uppnår de bästa resultaten när medelvärdena för målklasserna är långt ifrån varandra. LDA kan inte effektivt separera klasserna med en linjär axel om medelvärdena för distributionerna överlappar.












