Linjär regression och metoder för dess återhämtning

Linjär regression och metoder för dess återhämtning
Källa: xkcd

Linjär regression är en av de grundläggande algoritmerna för många områden relaterade till dataanalys. Anledningen till detta är uppenbar. Detta är en mycket enkel och begriplig algoritm, som har bidragit till dess utbredda användning i många tiotals, om inte hundratals, år. Tanken är att vi antar ett linjärt beroende av en variabel på en uppsättning andra variabler och sedan försöker återställa detta beroende.

Men den här artikeln handlar inte om att använda linjär regression för att lösa praktiska problem. Här kommer vi att överväga intressanta funktioner i implementeringen av distribuerade algoritmer för återställning, som vi stötte på när vi skrev en maskininlärningsmodul i Apache Ignite. Lite grundläggande matematik, maskininlärning och distribuerad beräkning kan hjälpa dig att ta reda på hur du utför linjär regression även när dina data är fördelade över tusentals noder.

Vad pratar vi om?

Vi står inför uppgiften att återställa linjärt beroende. Som indata ges en uppsättning vektorer av förment oberoende variabler, som var och en är associerad med ett visst värde på den beroende variabeln. Dessa data kan representeras i form av två matriser:

Linjär regression och metoder för dess återhämtning

Nu, eftersom beroendet antas, och dessutom linjärt, kommer vi att skriva vårt antagande i form av en produkt av matriser (för att förenkla registreringen, här och nedan antas det att ekvationens fria term döljs bakom Linjär regression och metoder för dess återhämtning, och den sista kolumnen i matrisen Linjär regression och metoder för dess återhämtning innehåller enheter):

Linjär regression och metoder för dess återhämtning

Låter mycket som ett system av linjära ekvationer, eller hur? Det verkar, men troligtvis kommer det inte att finnas några lösningar på ett sådant ekvationssystem. Anledningen till detta är brus, som finns i nästan alla verkliga data. En annan orsak kan vara avsaknaden av linjärt beroende som sådant, vilket kan bekämpas genom att införa ytterligare variabler som olinjärt beror på de ursprungliga. Tänk på följande exempel:
Linjär regression och metoder för dess återhämtning
Källa: wikipedia

Detta är ett enkelt exempel på linjär regression som visar förhållandet mellan en variabel (längs axeln Linjär regression och metoder för dess återhämtning) från en annan variabel (längs axeln Linjär regression och metoder för dess återhämtning). För att det linjära ekvationssystemet som motsvarar detta exempel ska ha en lösning måste alla punkter ligga exakt på samma räta linje. Men det är inte sant. Men de ligger inte på samma räta linje just på grund av brus (eller för att antagandet om ett linjärt samband var felaktigt). För att återställa ett linjärt förhållande från verkliga data är det därför vanligtvis nödvändigt att införa ytterligare ett antagande: indata innehåller brus och detta brus har normal distribution. Man kan göra antaganden om andra typer av brusfördelning, men i de allra flesta fall är det normalfördelningen som beaktas, som kommer att diskuteras vidare.

Maximal likelihood-metod

Så vi antog närvaron av slumpmässigt normalfördelat brus. Vad ska man göra i en sådan situation? För detta fall i matematik finns och används ofta metoden för maximal sannolikhet. Kort sagt, dess väsen ligger i valet sannolikhetsfunktioner och dess efterföljande maximering.

Vi återgår till att återställa ett linjärt förhållande från data med normalt brus. Observera att det antagna linjära sambandet är den matematiska förväntan Linjär regression och metoder för dess återhämtning befintlig normalfördelning. Samtidigt är sannolikheten att Linjär regression och metoder för dess återhämtning antar ett eller annat värde, med förbehåll för närvaron av observerbara Linjär regression och metoder för dess återhämtning, som följer:

Linjär regression och metoder för dess återhämtning

Låt oss nu ersätta istället Linjär regression och metoder för dess återhämtning и Linjär regression och metoder för dess återhämtning Variablerna vi behöver är:

Linjär regression och metoder för dess återhämtning

Allt som återstår är att hitta vektorn Linjär regression och metoder för dess återhämtning, där denna sannolikhet är maximal. För att maximera en sådan funktion är det bekvämt att först ta en logaritm av den (funktionens logaritm når ett maximum vid samma punkt som själva funktionen):

Linjär regression och metoder för dess återhämtning

Vilket i sin tur handlar om att minimera följande funktion:

Linjär regression och metoder för dess återhämtning

Detta kallas förresten en metod minst kvadrater. Ofta utelämnas alla ovanstående överväganden och denna metod används helt enkelt.

QR-sönderdelning

Minimum av ovanstående funktion kan hittas genom att hitta den punkt där gradienten för denna funktion är noll. Och gradienten kommer att skrivas som följer:

Linjär regression och metoder för dess återhämtning

QR-sönderdelning är en matrismetod för att lösa det minimeringsproblem som används i minsta kvadratmetoden. I detta avseende skriver vi om ekvationen i matrisform:

Linjär regression och metoder för dess återhämtning

Så vi bryter ner matrisen Linjär regression och metoder för dess återhämtning till matriser Linjär regression och metoder för dess återhämtning и Linjär regression och metoder för dess återhämtning och utför en serie transformationer (Själva QR-sönderdelningsalgoritmen kommer inte att beaktas här, bara dess användning i förhållande till uppgiften):

Linjär regression och metoder för dess återhämtning

matris Linjär regression och metoder för dess återhämtning är ortogonal. Detta gör att vi kan bli av med arbetet Linjär regression och metoder för dess återhämtning:

Linjär regression och metoder för dess återhämtning

Och om du byter ut Linjär regression och metoder för dess återhämtningLinjär regression och metoder för dess återhämtning, så löser det sig Linjär regression och metoder för dess återhämtning. Med tanke på att Linjär regression och metoder för dess återhämtning är en övre triangulär matris ser den ut så här:

Linjär regression och metoder för dess återhämtning

Detta kan lösas med hjälp av substitutionsmetoden. Element Linjär regression och metoder för dess återhämtning ligger som Linjär regression och metoder för dess återhämtning, föregående element Linjär regression och metoder för dess återhämtning ligger som Linjär regression och metoder för dess återhämtning och så vidare.

Det är värt att notera här att komplexiteten hos den resulterande algoritmen på grund av användningen av QR-nedbrytning är lika med Linjär regression och metoder för dess återhämtning. Dessutom, trots det faktum att matrismultiplikationsoperationen är väl parallelliserad, är det inte möjligt att skriva en effektiv distribuerad version av denna algoritm.

Gradient Descent

När man talar om att minimera en funktion är det alltid värt att komma ihåg metoden för (stokastisk) gradientnedstigning. Detta är en enkel och effektiv minimeringsmetod baserad på att iterativt beräkna gradienten för en funktion vid en punkt och sedan flytta den i motsatt riktning mot gradienten. Varje sådant steg för lösningen närmare ett minimum. Gradienten ser fortfarande likadan ut:

Linjär regression och metoder för dess återhämtning

Denna metod är också väl parallelliserad och fördelad på grund av gradientoperatorns linjära egenskaper. Observera att i formeln ovan, under summatecknet finns det oberoende termer. Med andra ord kan vi beräkna gradienten oberoende för alla index Linjär regression och metoder för dess återhämtning från första till Linjär regression och metoder för dess återhämtning, parallellt med detta, beräkna gradienten för index med Linjär regression och metoder för dess återhämtning до Linjär regression och metoder för dess återhämtning. Lägg sedan till de resulterande gradienterna. Resultatet av tillägget blir detsamma som om vi omedelbart beräknade gradienten för index från första till Linjär regression och metoder för dess återhämtning. Således, om data fördelas på flera delar av data, kan gradienten beräknas oberoende på varje bit, och sedan kan resultaten av dessa beräkningar summeras för att erhålla det slutliga resultatet:

Linjär regression och metoder för dess återhämtning

Ur implementeringssynpunkt passar detta paradigmet MapReduce. Vid varje steg av gradientnedstigning skickas en uppgift till varje datanod för att beräkna gradienten, sedan samlas de beräknade gradienterna ihop och resultatet av deras summa används för att förbättra resultatet.

Trots den enkla implementeringen och möjligheten att köra i MapReduce-paradigmet har gradientnedstigning också sina nackdelar. I synnerhet är antalet steg som krävs för att uppnå konvergens betydligt högre jämfört med andra mer specialiserade metoder.

LSQR

LSQR är en annan metod för att lösa problemet, som är lämplig både för att återställa linjär regression och för att lösa linjära ekvationssystem. Dess huvudsakliga egenskap är att den kombinerar fördelarna med matrismetoder och ett iterativt tillvägagångssätt. Implementeringar av denna metod finns i båda biblioteken SciPy, och i MATLAB. En beskrivning av denna metod kommer inte att ges här (den finns i artikeln LSQR: En algoritm för glesa linjära ekvationer och glesa minsta kvadrater). Istället kommer ett tillvägagångssätt att demonstreras för att anpassa LSQR till exekvering i en distribuerad miljö.

LSQR-metoden bygger på bidiagonaliseringsförfarande. Detta är en iterativ procedur, varje iteration består av följande steg:
Linjär regression och metoder för dess återhämtning

Men om vi antar att matrisen Linjär regression och metoder för dess återhämtning är horisontellt uppdelad, då kan varje iteration representeras som två MapReduce-steg. På detta sätt är det möjligt att minimera dataöverföringar under varje iteration (endast vektorer med en längd lika med antalet okända):

Linjär regression och metoder för dess återhämtning

Det är detta tillvägagångssätt som används när man implementerar linjär regression i Apache Ignite ML.

Slutsats

Det finns många linjära regressionsåterställningsalgoritmer, men alla kan inte tillämpas under alla förhållanden. Så QR-sönderdelning är utmärkt för exakta lösningar på små datamängder. Gradientnedstigning är enkel att implementera och låter dig snabbt hitta en ungefärlig lösning. Och LSQR kombinerar de bästa egenskaperna hos de två föregående algoritmerna, eftersom den kan distribueras, konvergerar snabbare jämfört med gradientnedstigning och tillåter också tidigt stopp av algoritmen, till skillnad från QR-sönderdelning, för att hitta en ungefärlig lösning.

Källa: will.com

Lägg en kommentar