stub Vad är dimensionsreduktion? - Unite.AI
Anslut dig till vårt nätverk!

AI 101

Vad är dimensionsreduktion?

mm
Uppdaterad on

Vad är dimensionsreduktion?

Dimensionalitetsminskning är en process som används för att minska dimensionaliteten hos en datauppsättning, ta många funktioner och representera dem som färre funktioner. Till exempel skulle dimensionsreduktion kunna användas för att reducera en datauppsättning med tjugo funktioner ner till bara ett fåtal funktioner. Dimensionalitetsreduktion används ofta i oövervakat lärande uppgifter för att automatiskt skapa klasser av många funktioner. För att bättre förstå varför och hur dimensionsreduktion används, ska vi ta en titt på problemen förknippade med högdimensionella data och de mest populära metoderna för att minska dimensionalitet.

Fler dimensioner leder till övermontering

Dimensionalitet hänvisar till antalet funktioner/kolumner i en datauppsättning.

Det antas ofta att i maskininlärning är fler funktioner bättre, eftersom det skapar en mer exakt modell. Men fler funktioner översätts inte nödvändigtvis till en bättre modell.

Funktionerna i en datauppsättning kan variera kraftigt när det gäller hur användbara de är för modellen, med många funktioner som är av liten betydelse. Dessutom, ju fler funktioner datasetet innehåller, desto fler prover behövs för att säkerställa att de olika kombinationerna av funktioner är väl representerade i datan. Därför ökar antalet prover i proportion med antalet funktioner. Fler prover och fler funktioner gör att modellen behöver bli mer komplex, och när modellerna blir mer komplexa blir de känsligare för övermontering. Modellen lär sig mönstren i träningsdata för väl och den misslyckas med att generalisera till data utanför urvalsdata.

Att minska dimensionaliteten hos en datauppsättning har flera fördelar. Som nämnts är enklare modeller mindre benägna att överanpassa, eftersom modellen måste göra färre antaganden om hur funktioner är relaterade till varandra. Dessutom betyder färre dimensioner mindre datorkraft krävs för att träna algoritmerna. På samma sätt behövs mindre lagringsutrymme för en datauppsättning som har mindre dimensionalitet. Genom att minska dimensionaliteten hos en datauppsättning kan du också använda algoritmer som är olämpliga för datauppsättningar med många funktioner.

Vanliga metoder för reducering av dimensionalitet

Dimensionalitetsreduktion kan ske genom funktionsval eller funktionsteknik. Funktionsval ä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 transformera andra funktioner.

Funktionsval och konstruktion kan göras programmatiskt eller manuellt. När man manuellt väljer och konstruerar funktioner är det typiskt att visualisera data för att upptäcka samband mellan funktioner och klasser. Att genomföra dimensionsreduktion på detta sätt kan vara ganska tidskrävande och därför involverar några av de vanligaste sätten att reducera dimensionalitet användning av algoritmer tillgängliga i bibliotek som Scikit-learn for Python. Dessa vanliga dimensionsreduktionsalgoritmer inkluderar: Principal Component Analysis (PCA), Singular Value Decomposition (SVD) och Linjär Diskrimineringsanalys (LDA).

Algoritmerna som används för dimensionalitetsreduktion för oövervakade inlärningsuppgifter är vanligtvis PCA och SVD, medan de som utnyttjas för övervakad inlärningsdimensionalitetsreduktion vanligtvis är LDA och PCA. När det gäller övervakade inlärningsmodeller matas de nygenererade funktionerna in i maskininlärningsklassificeraren. Observera att användningarna som beskrivs här bara är allmänna användningsfall och inte de enda förhållanden som dessa tekniker kan användas under. Algoritmerna för dimensionsreduktion som beskrivs ovan är helt enkelt statistiska metoder och de används utanför maskininlärningsmodeller.

Huvudkomponentanalys

Foto: Matris med huvudkomponenter identifierade

Huvudkomponentanalys (PCA) är en statistisk metod som analyserar egenskaperna/funktionerna hos en datauppsättning och sammanfattar de funktioner som är mest inflytelserika. Datauppsättningens funktioner kombineras till representationer som bibehåller de flesta egenskaperna hos datan men är spridda över färre dimensioner. Du kan tänka på detta som att "pressa" ner data från en högre dimensionsrepresentation till en med bara ett fåtal dimensioner.

Som ett exempel på en situation där PCA kan vara användbar, tänk på de olika sätten man kan beskriva vin. Även om det är möjligt att beskriva vin med många mycket specifika egenskaper som CO2-nivåer, luftningsnivåer etc., kan sådana specifika egenskaper vara relativt värdelösa när man försöker identifiera en specifik typ av vin. Istället skulle det vara mer klokt att identifiera typen baserat på mer allmänna egenskaper 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ångsegenskaperna varierar från medelvärdet med avseende på varandra, och bestämma om det finns några samband mellan funktionerna. För att göra detta skapas en kovariansmatris som upprättar en matris som består av kovarianserna med avseende på de möjliga paren av datauppsättningsfunktionerna. 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 indikerar en positiv korrelation.

De huvudsakliga (mest inflytelserika) komponenterna i datamängden skapas genom att skapa linjära kombinationer av de initiala variablerna, vilket görs med hjälp av linjära algebrakoncept som kallas egenvärden och egenvektorer. Kombinationerna skapas så att huvudkomponenterna är okorrelerade med varandra. Det mesta av informationen i de initiala variablerna komprimeras till de första huvudkomponenterna, vilket innebär att nya funktioner (huvudkomponenterna) har skapats som innehåller informationen från den ursprungliga datamängden i ett mindre dimensionellt utrymme.

Singulärvärdesfaktorisering

Foto: Av Cmglee – Eget arbete, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297

Singular Value Decomposition (SVD) is används för att förenkla värdena i en matris, reducera matrisen till dess beståndsdelar och göra beräkningar med den matrisen lättare. SVD kan användas för både realvärde och komplexa matriser, men kommer för denna förklaring att undersöka hur man bryter ner en matris av verkliga värden.

Antag att vi har en matris som består av verkliga data och vårt mål är att minska antalet kolumner/funktioner i matrisen, liknande målet för PCA. Liksom PCA kommer SVD att komprimera dimensionaliteten hos matrisen samtidigt som den bevarar så mycket av matrisens variabilitet som möjligt. Om vi ​​vill arbeta 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 elementen X * X (det är en ortogonal matris). Matris V är en annan ortogonal matris som innehåller y * y element. Matris D innehåller elementen x * y och det är en diagonal matris.

För att dekomponera värdena för matris A måste vi konvertera de ursprungliga singularmatrisvärdena till diagonalvärdena som finns i en ny matris. När man arbetar med ortogonala matriser förändras inte deras egenskaper om de multipliceras med andra tal. Därför kan vi approximera matris A genom att dra fördel av denna egenskap. När vi multiplicerar de ortogonala matriserna tillsammans med en transponering av matris V, blir resultatet en ekvivalent matris med vårt ursprungliga A.

När matris a sönderdelas i matriserna U, D och V, innehåller de data som finns i matris A. Däremot kommer kolumnerna längst till vänster i matriserna att innehålla majoriteten av data. Vi kan ta bara dessa första kolumner och ha en representation av matris A som har mycket färre dimensioner och de flesta data inom A.

Linjär diskriminantanalys

 

Vänster: Matris före LDA, Höger: Axel efter LDA, nu separerbar

Linjär diskriminantanalys (LDA) är en process som tar data från en flerdimensionell graf och projicerar om det 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. Antag att punkterna är utspridda så att ingen linje kan dras som snyggt skiljer de två olika klasserna åt. För att hantera denna situation kan punkterna som finns i 2D-grafen reduceras till en 1D-graf (en linje). Denna linje kommer att ha alla datapunkter fördelade över sig och den kan förhoppningsvis delas upp i två sektioner som representerar bästa möjliga separation av data.

När man genomför LDA 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 2D-grafen. Den nyskapade axeln agerar för att separera de två klasserna baserat på de mål som tidigare beskrivits. Efter att axeln har skapats placeras punkterna som finns i 2D-grafen längs axeln.

Det krävs tre steg 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 medel (mellanklassvariansen) för att beräkna klassernas separerbarhet. I det andra steget beräknas variansen inom de olika klasserna, vilket görs genom att bestämma avståndet mellan provet och medelvärdet för den aktuella klassen. I det sista steget skapas det lägre dimensionella utrymmet som maximerar variansen mellan klasser.

LDA-tekniken uppnår de bästa resultaten när medlen för målklasserna ligger långt ifrån varandra. LDA kan inte effektivt separera klasserna med en linjär axel om medel för fördelningarna överlappar varandra.

 

Bloggare och programmerare med specialiteter inom Maskininlärning och Deep Learning ämnen. Daniel hoppas kunna hjälpa andra att använda kraften i AI för socialt bästa.