Wir bringen die lineare Regressionsgleichung in Matrixform



Der Zweck dieses Artikels ist es, unerfahrenen Datenschreibern Unterstützung zu bieten. Im vorherigen Artikel haben wir drei Methoden zur Lösung der linearen Regressionsgleichung an den Fingern untersucht: analytische Lösung, Gradientenabstieg, stochastischer Gradientenabstieg. Dann haben wir für die analytische Lösung die Formel angewendet XTX vecw=XT vecy . In diesem Artikel werden wir, wie aus dem Titel hervorgeht, die Verwendung dieser Formel begründen, oder mit anderen Worten, wir werden sie unabhängig ableiten.

Warum es sinnvoll ist, der Formel mehr Aufmerksamkeit zu schenken XTX vecw=XT vecy ?

Mit der Matrixgleichung beginnt in den meisten Fällen die Bekanntschaft mit der linearen Regression. Gleichzeitig sind detaillierte Berechnungen, wie die Formel abgeleitet wurde, selten.

In Yandex-Kursen für maschinelles Lernen empfehlen die Schüler beispielsweise, wenn sie in die Regularisierung eingeführt werden, die Funktionen aus der sklearn- Bibliothek zu verwenden, während kein Wort über die Matrixdarstellung des Algorithmus erwähnt wird. In diesem Moment möchten einige Hörer dieses Problem möglicherweise genauer verstehen - schreiben Sie Code, ohne fertige Funktionen zu verwenden. Dazu müssen wir zunächst die Gleichung mit dem Regularisierer in Matrixform darstellen. Dieser Artikel ermöglicht es denen, die solche Fähigkeiten beherrschen möchten. Fangen wir an.

Grundlinie


Ziele


Wir haben eine Reihe von Zielwerten. Das Ziel kann beispielsweise der Preis eines Vermögenswerts sein: Öl, Gold, Weizen, Dollar usw. Gleichzeitig meinen wir mit einer Anzahl von Werten des Zielindikators die Anzahl von Beobachtungen. Solche Beobachtungen können zum Beispiel die monatlichen Ölpreise für das Jahr sein, dh wir werden 12 Zielwerte haben. Wir beginnen die Notation einzuführen. Wir bezeichnen jeden Zielwert als yi . Insgesamt haben wir n Beobachtungen, das heißt, wir können uns unsere Beobachtungen als vorstellen y1,y2,y3...yn .

Regressoren


Wir gehen davon aus, dass es Faktoren gibt, die die Werte des Zielindikators zum Teil erklären. Zum Beispiel wird der Wechselkurs des Dollar / Rubel-Paares stark vom Ölpreis, dem Fed-Kurs usw. beeinflusst. Solche Faktoren werden als Regressoren bezeichnet. Gleichzeitig muss jeder Wert des Zielindikators dem Wert des Regressors entsprechen, dh wenn wir 2018 für jeden Monat 12 Ziele haben, müssen wir auch 12 Regressoren für denselben Zeitraum haben. Bezeichnen Sie die Werte jedes Regressors mit xi:x1,x2,x3...xn . Lassen Sie in unserem Fall gibt es k Regressoren (d. h. k Faktoren, die den Wert des Ziels beeinflussen). So können unsere Regressoren wie folgt dargestellt werden: für den 1. Regressor (zum Beispiel den Ölpreis): x11,x12,x13...x1n , für den 2. Regressor (zum Beispiel die Fed-Rate): x21,x22,x23...x2n für k der "Regressor: xk1,xk2,xk3...xkn

Abhängigkeit der Ziele von Regressoren


Zielabhängigkeit annehmen yi von Regressoren " i -th "Beobachtung kann durch die lineare Regressionsgleichung der Form ausgedrückt werden:

f(w,xi)=w0+w1x1i+...+wkxki



wo xi - " i "Regressorwert von 1 bis n ,

k - die Anzahl der Regressoren von 1 bis k

w - Winkelkoeffizienten, die den Betrag darstellen, um den sich der berechnete Zielindikator im Durchschnitt ändert, wenn sich der Regressor ändert.

Mit anderen Worten, wir sind für alle da (außer w0 ) des Regressors bestimmen wir "unseren" Koeffizienten w , dann multiplizieren Sie die Koeffizienten mit den Werten der Regressoren " i -th "Beobachtung, als Ergebnis bekommen wir eine gewisse Annäherung" i das "Ziel.

Daher müssen wir solche Koeffizienten auswählen w für die die Werte unserer Näherungsfunktion f(w,xi) wird so nahe wie möglich an den Werten der Ziele liegen.

Abschätzung der Qualität der Approximationsfunktion


Wir werden die Qualitätsschätzung der Approximationsfunktion nach der Methode der kleinsten Quadrate bestimmen. Die Qualitätsbewertungsfunktion hat in diesem Fall die folgende Form:

Err= sum limitsni=1(yif(xi))2 rightarrowmin



Wir müssen solche Werte der Koeffizienten $ w $ wählen, für die der Wert gilt Err wird der kleinste sein.

Wir übersetzen die Gleichung in Matrixform


Vektoransicht


Um Ihnen das Leben zu erleichtern, sollten Sie zunächst die lineare Regressionsgleichung und den ersten Koeffizienten beachten w0 nicht mit einem Regressor multipliziert. Wenn wir die Daten in Matrixform übersetzen, wird der obige Umstand die Berechnungen außerdem ernsthaft erschweren. In diesem Zusammenhang wird vorgeschlagen, einen weiteren Regressor für den ersten Koeffizienten einzuführen w0 und gleich eins. Oder vielmehr jeder " i Der "Wert" dieses Regressors ist gleichbedeutend mit der Einheit - denn wenn er mit der Einheit multipliziert wird, ändert sich nichts im Hinblick auf das Ergebnis der Berechnungen und im Hinblick auf die Regeln für das Produkt der Matrizen, wird unsere Qual erheblich verringert.

Nehmen wir nun für eine Weile an, wir hätten nur eine, um das Material zu vereinfachen. " i th "Beobachtung. Dann stellen Sie sich die Werte der Regressoren" i Beobachtung als Vektor  vecxi . Vektor  vecxi hat Dimension (k times1) , also k Zeilen und 1 Spalte:

 vecxi= beginpmatrixx0ix1i...xki endpmatrix qquad



Die gewünschten Koeffizienten können als Vektor dargestellt werden  vecw Dimension haben (k times1) :

 vecw= beginpmatrixw0w1...wk endpmatrix qquad



Die lineare Regressionsgleichung für i -th "Beobachtung wird die Form annehmen:

f(w,xi)= vecxiT vecw



Die Qualitätsbewertungsfunktion des linearen Modells hat folgende Form:

Err= sum limitsni=1(yi vecxiT vecw)2 rightarrowmin



Beachten Sie, dass wir gemäß den Regeln der Matrixmultiplikation den Vektor transponieren mussten  vecxi .

Matrixdarstellung


Als Ergebnis der Multiplikation von Vektoren erhalten wir die Zahl: (1 timesk) centerdot(k times1)=1 times1 wie erwartet. Diese Zahl ist die Annäherung " i -th "Ziel. Aber wir müssen nicht einen Wert des Ziels approximieren, sondern alle. Dazu schreiben wir alles" i Matrix-Regressoren X . Die resultierende Matrix hat die Dimension (n timesk) :

$$ display $$ X = \ begin {pmatrix} x_ {00} & x_ {01} & ... & x_ {0k} \\ x_ {10} & x_ {11} & ... & x_ {1k} \\ ... & ... & ... & ... \\ x_ {n0} & x_ {n1} & ... & x_ {nk} \ end {pmatrix} \ qquad $$ display $$



Nun hat die lineare Regressionsgleichung die Form:

f(w,X)=X vecw



Bezeichnen Sie die Werte der Zielindikatoren (alle yi ) pro Vektor  vecy Dimension (n times1) :

 vecy= beginpmatrixy0y1...yn endpmatrix qquad



Nun können wir im Matrixformat die Gleichung zur Beurteilung der Qualität eines linearen Modells schreiben:

Err=(X vecw vecy)2 rightarrowmin



Tatsächlich erhalten wir aus dieser Formel weiterhin die uns bekannte Formel XTXw=XTy

Wie geht das? Die Klammern werden geöffnet, die Differenzierung wird durchgeführt, die resultierenden Ausdrücke werden transformiert usw. Und genau das werden wir jetzt tun.

Matrixtransformationen


Klappen Sie die Klammern auf


(X vecw vecy)2=(X vecw vecy)T(X vecw vecy)

=(X vecw)TX vecw vecyTX vecw(X vecw)T vecy+ vecyT vecy

Bereiten Sie eine Gleichung zur Differenzierung vor


Dazu führen wir einige Transformationen durch. In nachfolgenden Berechnungen wird es für uns praktischer sein, wenn der Vektor  vecwT wird zu Beginn jeder Arbeit in der Gleichung vorgestellt.

Umwandlung 1


 vecyTX vecw=(X vecw)T vecy= vecwTXT vecy

Wie ist es dazu gekommen? Um diese Frage zu beantworten, schauen Sie sich einfach die Größen der multiplizierten Matrizen an und sehen Sie, dass wir am Ausgang eine Zahl oder etwas anderes erhalten const .

Wir schreiben die Dimensionen der Matrixausdrücke.

 vecyTX vecw:(1 timesn) centerdot(n timesk) centerdot(k times1)=(1 times1)=const

(X vecw)T vecy:((n timesk) centerdot(k times1))T centerdot(n times1)=(1 timesn) centerdot(n times1)=(1 times1)=const

 vecwTXT vecy:(1 malk) centerdot(k maln) centerdot(n mal1)=(1 mal1)=const

Umwandlung 2


(X vecw)TX vecw= vecwTXTX vecw

Wir schreiben ähnlich wie Transformation 1

(X vecw)TX vecw:((n malk) centerdot(k mal1))T centerdot(n malk) centerdot(k mal1)=(1 mal1)=const

 vecwTXTX vecw:(1 malk) centerdot(k maln) centerdot(n malk) centerdot(k mal1)=(1 mal1)=const

Am Ausgang erhalten wir eine Gleichung, die wir unterscheiden müssen:
Err= vecwTXTX vecw2 vecwTXT vecy+ vecyT vecy

Wir unterscheiden die Funktion der Bewertung der Qualität des Modells


Unterscheiden nach Vektor  vecw :

 fracd( vecwTXTX vecw2 vecwTXT vecy+ vecyT vecy)d vecw


( vecwTXTX vecw)(2 vecwTXT vecy)+( vecyT vecy)=0

2XTX vecw2XT vecy+0=0

XTX vecw=XT vecy

Fragen warum ( vecyT vecy)=0 Sollte dies nicht der Fall sein, aber die Operationen zur Bestimmung der Ableitungen in den beiden anderen Ausdrücken werden wir genauer analysieren.

Differenzierung 1


Wir zeigen die Unterscheidung:  fracd( vecwTXTX vecw)d vecw=2XTX vecw

Um die Ableitung einer Matrix oder eines Vektors zu bestimmen, müssen Sie sehen, was sie enthalten. Wir schauen:

$ inline $ \ vec {w} ^ T = \ begin {pmatrix} w_0 & w_1 & ... & w_k \ end {pmatrix} \ qquad $ inline $

 vecw= beginpmatrixw0w1...wk endpmatrix qquad

$ inline $ X ^ T = \ begin {pmatrix} x_ {00} & x_ {10} & ... & x_ {n0} \\ x_ {01} & x_ {11} & ... & x_ {n1} \\ ... & ... & ... & ... \\ x_ {0k} & x_ {1k} & ... & x_ {nk} \ end {pmatrix} \ qquad $ inline $ $ inline $ X = \ begin {pmatrix} x_ {00} & x_ {01} & ... & x_ {0k} \\ x_ {10} & x_ {11} & ... & x_ {1k} \\ ... & ... & ... & ... \\ x_ {n0} & x_ {n1} & ... & x_ {nk} \ end {pmatrix} \ qquad $ inline $

Bezeichnen Sie das Produkt von Matrizen XTX durch die Matrix A . Matrix A quadratisch und darüber hinaus ist es symmetrisch. Diese Eigenschaften werden uns weiterhin nützlich sein, merken Sie sich diese. Matrix A hat Dimension (k timesk) :

$ inline $ A = \ begin {pmatrix} a_ {00} & a_ {01} & ... & a_ {0k} \\ a_ {10} & a_ {11} & ... & a_ {1k} \\ ... & ... & ... & ... \\ a_ {k0} & a_ {k1} & ... & a_ {kk} \ end {pmatrix} \ qquad $ inline $

Jetzt ist es unsere Aufgabe, die Vektoren korrekt mit der Matrix zu multiplizieren und nicht "zweimal zwei fünf" zu erhalten, also werden wir uns konzentrieren und äußerst vorsichtig sein.

$ inline $ \ vec {w} ^ TA \ vec {w} = \ begin {pmatrix} w_0 & w_1 & ... & w_k \ end {pmatrix} \ qquad \ times \ begin {pmatrix} a_ {00} & a_ {01} & ... & a_ {0k} \\ a_ {10} & a_ {11} & ... & a_ {1k} \\ ... & ... & ... & ... \ \ a_ {k0} & a_ {k1} & ... & a_ {kk} \ end {pmatrix} \ qquad \ times \ begin {pmatrix} w_0 \\ w_1 \\ ... \\ w_k \ end {pmatrix} \ qquad = $ inline $

$ inline $ = \ begin {pmatrix} w_0a_ {00} + w_1a_ {10} + ... + w_ka_ {k0} & ... & w_0a_ {0k} + w_1a_ {1k} + ... + w_ka_ {kk} \ end {pmatrix} \ times \ begin {pmatrix} w_0 \\ w_1 \\ ... \\ w_k \ end {pmatrix} \ qquad = $ inline $

= beginpmatrix(w0a00+w1a10+...+wkak0)w0 mkern10mu+ mkern10mu... mkern10mu+ mkern10mu(w0a0k+w1a1k+...+wkakk)wk endpmatrix=

=w20a00+w1a10w0+wkak0w0 mkern10mu+ mkern10mu... mkern10mu+ mkern10muw0a0kwk+w1a1kwk+...+w2kakk

Wir haben jedoch einen komplizierten Ausdruck! Tatsächlich haben wir eine Zahl - einen Skalar. Und jetzt gehen wir schon wirklich zur Differenzierung über. Es ist notwendig, die Ableitung des erhaltenen Ausdrucks für jeden Koeffizienten zu finden w0w1...wk und den Dimensionsvektor am Ausgang erhalten (k times1) . Nur für den Fall werde ich die Vorgehensweisen für die Aktionen beschreiben:

1) differenzieren durch wo wir bekommen: 2w0a00+w1a10+w2a20+...+wkak0+a01w1+a02w2+...+a0kwk

2) differenzieren durch w1 wir bekommen: w0a01+2w1a11+w2a21+...+wkak1+a10w0+a12w2+...+a1kwk

3) differenzieren durch wk wir bekommen: w0a0k+w1a1k+w2a2k+...+w(k1)a(k1)k+ak0w0+ak1w1+ak2w2+...+2wkakk

Am Ausgang der versprochene Größenvektor (k times1) :

 beginpmatrix2w0a00+w1a10+w2a20+...+wkak0+a01w1+a02w2+...+a0kwkw0a01+2w1a11+w2a21+...+wkak1+a10w0+a12w2+...+a1kwk.........w0a0k+w1a1k+w2a2k+...+w(k1)a(k1)k+ak0w0+ak1w1+ak2w2+...+2wkakk endpmatrix



Wenn Sie sich den Vektor genauer ansehen, werden Sie feststellen, dass das linke und das entsprechende rechte Element des Vektors so gruppiert werden können, dass der Vektor vom dargestellten Vektor unterschieden werden kann  vecw die Größe (k times1) . Zum Beispiel w1a10 (linkes Element der obersten Zeile des Vektors) +a01w1 (das rechte Element der obersten Zeile des Vektors) kann als dargestellt werden w1(a10+a01) und w2a20+a02w2 - wie w2(a20+a02) usw. in jeder Zeile. Gruppe:

 beginpmatrix2w0a00+w1(a10+a01)+w2(a20+a02)+...+wk(ak0+a0k)w0(a01+a10)+2w1a11+w2(a21+a12)+...+wk(ak1+a1k).........w0(a0k+ak0)+w1(a1k+ak1)+w2(a2k+ak2)+...+2wkakk endpmatrix



Nehmen Sie den Vektor heraus  vecw und am Ausgang erhalten wir:

$$ display $$ \ begin {pmatrix} 2a_ {00} & a_ {10} + a_ {01} & a_ {20} + a_ {02} & ... & a_ {k0} + a_ {0k} \\ a_ {01} + a_ {10} & 2a_ {11} & a_ {21} + a_ {12} & ... & a_ {k1} + a_ {1k} \\ ... & ... & .. . & ... & ... \\ ... & ... & ... & ... & ... \\ ... & ... & ... & ... & .. . \\ a_ {0k} + a_ {k0} & a_ {1k} + a_ {k1} & a_ {2k} + a_ {k2} & ... & 2a_ {kk} \ end {pmatrix} \ times \ begin {pmatrix} w_0 \\ w_1 \\ ... \\ ... \\ ... \\ w_k \ end {pmatrix} \ qquad $$ display $$



Schauen wir uns nun die resultierende Matrix an. Eine Matrix ist die Summe zweier Matrizen A+AT :

$$ display $$ \ begin {pmatrix} a_ {00} & a_ {01} & a_ {02} & ... & a_ {0k} \\ a_ {10} & a_ {11} & a_ {12} & ... & a_ {1k} \\ ... & ... & ... & ... & ... \\ a_ {k0} & a_ {k1} & a_ {k2} & ... & a_ {kk} \ end {pmatrix} + \ begin {pmatrix} a_ {00} & a_ {10} & a_ {20} & ... & a_ {k0} \\ a_ {01} & a_ {11} & a_ {21} & ... & a_ {k1} \\ ... & ... & ... & ... & ... \\ a_ {0k} & a_ {1k} & a_ {2k} & ... & a_ {kk} \ end {pmatrix} \ qquad $$ display $$



Denken Sie daran, dass wir vorhin eine wichtige Eigenschaft der Matrix festgestellt haben A - Es ist symmetrisch. Anhand dieser Eigenschaft können wir sicher den Ausdruck angeben A+AT gleich 2A . Dies lässt sich leicht überprüfen, indem das Produkt Matrix für Element angezeigt wird XTX . Wir werden dies hier nicht tun, wer möchte, kann die Überprüfung selbst durchführen.

Kommen wir zu unserem Ausdruck zurück. Nach unseren Transformationen stellte sich heraus, wie wir es sehen wollten:

(A+AT) times beginpmatrixw0w1...wk endpmatrix qquad=2A vecw=2XTX vecw



Also haben wir die erste Differenzierung gemeistert. Wir kommen zum zweiten Ausdruck.

Differenzierung 2


 fracd(2 vecwTXT vecy)d vecw=2XT vecy

Gehen wir den ausgetretenen Pfaden entlang. Es wird viel kürzer als das vorherige sein, gehen Sie also nicht weit vom Bildschirm weg.

Wir decken die elementweisen Vektoren und die Matrix auf:

$ inline $ \ vec {w} ^ T = \ begin {pmatrix} w_0 & w_1 & ... & w_k \ end {pmatrix} \ qquad $ inline $

$ inline $ X ^ T = \ begin {pmatrix} x_ {00} & x_ {10} & ... & x_ {n0} \\ x_ {01} & x_ {11} & ... & x_ {n1} \\ ... & ... & ... & ... \\ x_ {0k} & x_ {1k} & ... & x_ {nk} \ end {pmatrix} \ qquad $ inline $

 vecy= beginpmatrixy0y1...yn endpmatrix qquad

Für eine Weile entfernen wir die Zwei aus den Berechnungen - es spielt keine große Rolle, dann werden wir es an seinen Platz zurückbringen. Multiplizieren Sie die Vektoren mit der Matrix. Zunächst multiplizieren wir die Matrix XT auf vektor  vecy Hier haben wir keine Einschränkungen. Holen Sie sich den Größenvektor (k times1) :

 beginpmatrixx00y0+x10y1+...+xn0ynx01y0+x11y1+...+xn1yn...x0ky0+x1ky1+...+xnkyn endpmatrix qquad



Führen Sie die folgende Aktion aus - multiplizieren Sie den Vektor  vecw zu dem resultierenden Vektor. Am Ausgang wartet eine Nummer auf uns:

 beginpmatrixw0(x00y0+x10y1+...+xn0yn)+w1(x01y0+x11y1+...+xn1yn) mkern10mu+ mkern10mu... mkern10mu+ mkern10muwk(x0ky0+x1ky1+...+xnkyn) endpmatrix qquad



Wir unterscheiden es dann. Am Ausgang erhalten wir einen Dimensionsvektor (k times1) :

 beginpmatrixx00y0+x10y1+...+xn0ynx01y0+x11y1+...+xn1yn...x0ky0+x1ky1+...+xnkyn endpmatrix qquad



Ähnelt es etwas? Alles ist richtig! Dies ist das Produkt der Matrix. XT auf vektor  vecy .

Damit wurde die zweite Unterscheidung erfolgreich abgeschlossen.

Anstelle einer Schlussfolgerung


Jetzt wissen wir, wie es zur Gleichstellung kam. XTX vecw=XT vecy .

Schließlich beschreiben wir einen schnellen Weg, um die Hauptformeln zu transformieren.

Schätzen Sie die Qualität des Modells nach der Methode der kleinsten Quadrate:
 sum limitsni=1(yif(xi))2 mkern20mu= mkern20mu sum limitsni=1(yi vecxiT vecw)2=

=(X vecw vecy)2 mkern20mu= mkern20mu(X vecw vecy)T(X vecw vecy) mkern20mu= mkern20mu vecwTXTX vecw2 vecwTXT vecy+ vecyT vecy

Wir differenzieren den resultierenden Ausdruck:
 fracd( vecwTXTX vecw2 vecwTXT vecy+ vecyT vecy)d vecw=2XTX vecw2XT vecy=0

XTX vecw=XT vecy

 leftarrow Frühere Arbeiten des Autors - „Wir lösen die Gleichung der einfachen linearen Regression“
 rightarrow Die nächste Arbeit des Autors - "Chewing Logistic Regression"

Literatur


Internetquellen:

1) habr.com/de/post/278513
2) habr.com/ru/company/ods/blog/322076
3) habr.com/de/post/307004
4) nabatchikov.com/blog/view/matrix_der

Lehrbücher, Aufgabensammlungen:

1) Vorlesungsskript über höhere Mathematik: volle Lehrveranstaltung / D.T. Geschrieben - 4. Aufl. - M .: Iris Press, 2006
2) Angewandte Regressionsanalyse / N. Draper, G. Smith - 2. Aufl. - M .: Finanzen und Statistik, 1986
3) Aufgaben zum Lösen von Matrixgleichungen:
function-x.ru/matrix_equations.html
mathprofi.ru/deistviya_s_matricami.html

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


All Articles