Lineare Regression und Methoden zu ihrer Wiederherstellung

Bild
Quelle: xkcd

Die lineare Regression ist einer der grundlegenden Algorithmen fĂŒr viele Bereiche der Datenanalyse. Der Grund dafĂŒr liegt auf der Hand. Dies ist ein sehr einfacher und verstĂ€ndlicher Algorithmus, der seit vielen zehn, wenn nicht Hunderten von Jahren zu seiner weit verbreiteten Verwendung beigetragen hat. Die Idee ist, dass wir eine lineare AbhĂ€ngigkeit einer Variablen von einer Reihe anderer Variablen annehmen und dann versuchen, diese AbhĂ€ngigkeit wiederherzustellen.

In diesem Artikel geht es jedoch nicht um die Anwendung der linearen Regression zur Lösung praktischer Probleme. Hier werden wir interessante Funktionen der Implementierung verteilter Algorithmen fĂŒr deren Wiederherstellung diskutieren, die beim Schreiben eines maschinellen Lernmoduls in Apache Ignite aufgetreten sind. Ein wenig grundlegende Mathematik, die Grundlagen des maschinellen Lernens und des verteilten Rechnens helfen Ihnen dabei, herauszufinden, wie Sie die lineare Regression wiederherstellen können, selbst wenn die Daten auf Tausende von Knoten verteilt sind.

WorĂŒber sprichst du?


Wir stehen vor der Aufgabe, die lineare AbhÀngigkeit wiederherzustellen. Als Eingabe werden viele Vektoren vermeintlich unabhÀngiger Variablen angegeben, von denen jeder einem bestimmten Wert der abhÀngigen Variablen zugeordnet ist. Diese Daten können in Form von zwei Matrizen dargestellt werden:

\ begin {pmatrix} a_ {11} & a_ {12} & a_ {13} & ... & a_ {1n} \\ a_ {21} & a_ {22} & a_ {23} & ... & a_ {2n} \\ ... \\ a_ {m1} & a_ {m2} & a_ {m3} & ... & a_ {mn} \\ \ end {pmatrix} \ begin {pmatrix} b_ {1} \\ b_ {2} \\ ... \\ b_ {m} \\ \ end {pmatrix}


Da nun die AbhĂ€ngigkeit angenommen wird und außerdem linear ist, schreiben wir unsere Annahme in Form eines Matrizenprodukts auf (um die Notation hier und unten zu vereinfachen, wird angenommen, dass der freie Term der Gleichung dahinter verborgen ist xnund die letzte Spalte der Matrix AenthĂ€lt Einheiten):

\ begin {pmatrix} a_ {11} & a_ {12} & a_ {13} & ... & a_ {1n} \\ a_ {21} & a_ {22} & a_ {23} & ... & a_ {2n} \\ ... \\ a_ {m1} & a_ {m2} & a_ {m3} & ... & a_ {mn} \\ \ end {pmatrix} \ times \ begin {pmatrix} x_ { 1} \\ x_ {2} \\ ... \\ x_ {n} \\ \ end {pmatrix} = \ begin {pmatrix} b_ {1} \\ b_ {2} \\ ... \\ b_ {m} \\ \ end {pmatrix}


Sehr Ă€hnlich einem linearen Gleichungssystem, oder? Es scheint, aber höchstwahrscheinlich wird es keine Lösungen fĂŒr ein solches Gleichungssystem geben. Der Grund dafĂŒr ist das Rauschen, das in fast allen realen Daten vorhanden ist. Der Grund kann auch das Fehlen einer linearen Beziehung als solche sein, die Sie bekĂ€mpfen können, indem Sie zusĂ€tzliche Variablen einfĂŒhren, die nichtlinear von der Quelle abhĂ€ngen. Betrachten Sie das folgende Beispiel:
Bild
Quelle: Wikipedia

Dies ist ein einfaches lineares Regressionsbeispiel, das die AbhĂ€ngigkeit einer Variablen (entlang der Achse) zeigt y) von einer anderen Variablen (entlang der Achse x) Damit das diesem Beispiel entsprechende lineare Gleichungssystem eine Lösung hat, mĂŒssen alle Punkte genau auf einer geraden Linie liegen. Aber das ist nicht so. Sie liegen jedoch nicht gerade aufgrund von Rauschen auf einer geraden Linie (oder weil die Annahme des Vorhandenseins einer linearen AbhĂ€ngigkeit falsch war). Um eine lineare AbhĂ€ngigkeit von realen Daten wiederherzustellen, ist es normalerweise notwendig, eine weitere Annahme einzufĂŒhren: Die Eingabedaten enthalten Rauschen und dieses Rauschen hat eine Normalverteilung . Man kann Annahmen ĂŒber andere Arten der GerĂ€uschverteilung treffen, aber in den allermeisten FĂ€llen wird spĂ€ter auf die Normalverteilung eingegangen.

Maximum-Likelihood-Methode


Wir haben also angenommen, dass zufĂ€lliges normalverteiltes Rauschen vorhanden ist. Wie kann man in einer solchen Situation sein? FĂŒr diesen Fall gibt es in der Mathematik die Maximum-Likelihood-Methode, die weit verbreitet ist. Kurz gesagt, sein Wesen liegt in der Wahl der Wahrscheinlichkeitsfunktion und ihrer anschließenden Maximierung.

Wir kehren zur Wiederherstellung der linearen AbhĂ€ngigkeit von Daten mit normalem Rauschen zurĂŒck. Beachten Sie, dass die angenommene lineare Beziehung eine mathematische Erwartung ist  muverfĂŒgbare Normalverteilung. Gleichzeitig ist die Wahrscheinlichkeit, dass  munimmt den einen oder anderen Wert an, sofern Observable vorhanden sind xsieht wie folgt aus:

P( mu midX, sigma2)= prodx inX frac1 sigma sqrt2 pie− frac(x− mu)22 sigma2


Wir ersetzen jetzt stattdessen  muund XVariablen, die wir brauchen:

P(x midA,B, sigma2)= prodi in[1,m] frac1 sigma sqrt2 pie− frac(bi−aix)22 sigma2,ai inA,bi inB


Es bleibt nur der Vektor zu finden xbei der diese Wahrscheinlichkeit maximal ist. Um eine solche Funktion zu maximieren, ist es zweckmĂ€ĂŸig, zuerst den Prologarithmus zu verwenden (der Logarithmus der Funktion erreicht sein Maximum an derselben Stelle wie die Funktion selbst):

f(x)=ln( prodi in[1,m] frac1 sigma sqrt2 pie− frac(bi−aix)22 sigma2)= sumi in[1,m]ln frac1 sigma sqrt2 pi− sumi in[1,m] frac(bi−aix)22 sigma2


Was wiederum darauf hinauslÀuft, die folgende Funktion zu minimieren:

f(x)= sumi in[1,m](bi−aix)2


Dies wird ĂŒbrigens als Methode der kleinsten Quadrate bezeichnet. Oft werden alle oben genannten Überlegungen weggelassen und diese Methode wird einfach verwendet.

QR-Zersetzung


Das Minimum der obigen Funktion kann gefunden werden, wenn Sie den Punkt finden, an dem der Gradient dieser Funktion gleich Null ist. Und der Farbverlauf wird wie folgt geschrieben:

 nablaf(x)= sumi in[1,m]2ai(aix−bi)=0


Die QR-Zerlegung ist eine Matrixmethode zur Lösung des Minimierungsproblems, das bei der Methode der kleinsten Quadrate verwendet wird. In dieser Hinsicht schreiben wir die Gleichung in Matrixform um:

ATAx=ATb


Also legen wir die Matrix an Aauf Matrizen Qund Rund fĂŒhren Sie eine Reihe von Transformationen durch (der QR-Zerlegungsalgorithmus selbst wird hier nicht berĂŒcksichtigt, sondern nur seine Verwendung in Bezug auf die Aufgabe):

\ begin {align} & (QR) ^ T (QR) x = (QR) ^ Tb; \\ & R ^ T Q ^ T Q R x = R ^ T Q ^ T b; \\ \ end {align}


Matrix Qist orthogonal. Dies ermöglicht es uns, die Arbeit loszuwerden. QQT::

\ begin {align} & R ^ T R x = R ^ T Q ^ T b; \\ & (R ^ T) ^ {- 1} R ^ T R x = (R ^ T) ^ {- 1} R ^ T Q ^ T b; \\ & R x = Q ^ T b. \ end {align}


Und wenn Sie ersetzen QTbauf zes wird sich herausstellen Rx=z. Angesichts dessen Rist die obere Dreiecksmatrix, es sieht so aus:

\ begin {pmatrix} r_ {11} & r_ {12} & r_ {13} & r_ {14} & ... & r_ {1n} \\ 0 & r_ {22} & r_ {23} & r_ { 24} & ... & r_ {2n} \\ 0 & 0 & r_ {33} & r_ {34} & ... & r_ {3n} \\ 0 & 0 & 0 & r_ {44} & .. . & r_ {4n} \\ ... \\ 0 & 0 & 0 & 0 & ... & r_ {nn} \\ \ end {pmatrix} \ times \ begin {pmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ ... \\ x_n \ end {pmatrix} = \ begin {pmatrix} z_1 \\ z_2 \\ z_3 \\ z_4 \\ ... \\ z_n \ end {pmatrix}


Dies kann durch die Substitutionsmethode gelöst werden. Artikel xnist wie zn/rnnvorheriger Artikel xn−1ist wie (zn−1−rn−1,nxn)/rn−1,n−1usw.

Es ist hier anzumerken, dass die KomplexitĂ€t des resultierenden Algorithmus durch die Verwendung der QR-Zerlegung ist O(2mn2). DarĂŒber hinaus ist es trotz der Tatsache, dass die Matrixmultiplikationsoperation gut parallelisiert ist, nicht möglich, eine effektive verteilte Version dieses Algorithmus zu schreiben.

GefÀlle Abstieg


Wenn man ĂŒber die Minimierung einer bestimmten Funktion spricht, lohnt es sich immer, an die Methode des (stochastischen) Gradientenabfalls zu erinnern. Dies ist eine einfache und effektive Minimierungsmethode, bei der der Gradient einer Funktion an einem Punkt iterativ berechnet und dann auf die dem Gradienten gegenĂŒberliegende Seite verschoben wird. Jeder dieser Schritte bringt die Lösung auf ein Minimum. Der Farbverlauf sieht gleich aus:

 nablaf(x)= sumi in[1,m]2ai(aix−bi)



Diese Methode ist aufgrund der linearen Eigenschaften des Gradientenoperators auch gut parallelisiert und verteilt. Beachten Sie, dass in der obigen Formel unabhĂ€ngige Begriffe unter dem Vorzeichen der Summe stehen. Mit anderen Worten, wir können den Gradienten unabhĂ€ngig fĂŒr alle Indizes berechnen ivon zuerst bis kBerechnen Sie parallel dazu den Gradienten fĂŒr Indizes mit k+1vorher m. FĂŒgen Sie dann die resultierenden VerlĂ€ufe hinzu. Das Ergebnis der Addition ist das gleiche, als hĂ€tten wir sofort den Gradienten fĂŒr die Indizes vom ersten bis zum berechnet m. Wenn also die Daten auf mehrere Teile der Daten verteilt sind, kann der Gradient fĂŒr jeden Teil unabhĂ€ngig berechnet werden, und dann können die Ergebnisse dieser Berechnungen summiert werden, um das Endergebnis zu erhalten:

 nablaf(x)= sumi inP12ai(aix−bi)+ sumi inP22ai(aix−bi)+...+ sumi inPk2ai(aix−bi)



In Bezug auf die Implementierung passt dies in das MapReduce- Paradigma. Bei jedem Schritt des Gradientenabfalls wird eine Aufgabe zum Berechnen des Gradienten an jeden Datenknoten gesendet, dann werden die berechneten Gradienten zusammen gesammelt und das Ergebnis ihrer Summierung wird verwendet, um das Ergebnis zu verbessern.

Trotz der Einfachheit der Implementierung und der FĂ€higkeit, das MapReduce-Paradigma auszufĂŒhren, hat der Gradientenabstieg auch seine Nachteile. Insbesondere ist die Anzahl der Schritte, die erforderlich sind, um eine Konvergenz zu erreichen, im Vergleich zu anderen spezialisierteren Methoden erheblich grĂ¶ĂŸer.

LSQR


LSQR ist eine weitere Methode zur Lösung des Problems, die sowohl zur Rekonstruktion der linearen Regression als auch zur Lösung linearer Gleichungssysteme geeignet ist. Das Hauptmerkmal ist, dass es die Vorteile von Matrixmethoden und einen iterativen Ansatz kombiniert. Implementierungen dieser Methode finden Sie sowohl in der SciPy- Bibliothek als auch in MATLAB . Eine Beschreibung dieser Methode wird hier nicht gegeben (sie ist im LSQR- Artikel zu finden : Ein Algorithmus fĂŒr spĂ€rliche lineare Gleichungen und spĂ€rliche kleinste Quadrate ). Stattdessen wird ein Ansatz demonstriert, um den LSQR an die AusfĂŒhrung in einer verteilten Umgebung anzupassen.

Die LSQR-Methode basiert auf dem Bidiagonalisierungsverfahren. Dies ist eine iterative Prozedur, deren Iteration aus den folgenden Schritten besteht:
Bild

Aber basierend auf der Tatsache, dass die Matrix Ahorizontal partitioniert, kann jede Iteration als MapReduce in zwei Schritten dargestellt werden. Somit ist es möglich, die DatenĂŒbertragungen wĂ€hrend jeder Iteration zu minimieren (nur Vektoren mit einer LĂ€nge, die der Anzahl der Unbekannten entspricht):

Bild

Dieser Ansatz wird bei der Implementierung der linearen Regression in Apache Ignite ML verwendet .

Fazit


Es gibt viele lineare Regressionswiederherstellungsalgorithmen, aber nicht alle können unter allen Bedingungen angewendet werden. Die QR-Zerlegung eignet sich daher hervorragend fĂŒr eine genaue Lösung kleiner Arrays. Der Gradientenabstieg wird einfach implementiert und ermöglicht es Ihnen, schnell eine ungefĂ€hre Lösung zu finden. Und LSQR kombiniert die besten Eigenschaften der beiden vorherigen Algorithmen, da es verteilt werden kann, im Vergleich zum Gradientenabstieg schneller konvergiert und im Gegensatz zur QR-Zerlegung auch ein vorzeitiges Stoppen des Algorithmus ermöglicht, um eine ungefĂ€hre Lösung zu finden.

Source: https://habr.com/ru/post/de465743/


All Articles