Motivation
- Ich möchte einen maschinellen Lernalgorithmus von Grund auf in Python schreiben
――Es gibt eine Technical Review Page, die einen guten Ruf hat, wenn Sie für "maschinelles Lernen" googeln, und die auch als Studie dient. Obwohl es sich um eine alte Seite handelt, wird sie für diejenigen empfohlen, die sie nicht gelesen haben, da die Erklärung leicht zu verstehen war.
- Das Folgende ist eine Zusammenfassung der obigen Seite zum Selbstverständnis (Einzelheiten finden Sie auf der Originalseite am Ende des Satzes).
Ablauf, wie man eine lineare Regression findet
Basisfunktion
――In "linearer Regression" definieren Sie zunächst eine sogenannte "Basisfunktion".
- Im wahrsten Sinne des Wortes, was Sie als Basis verwenden, um eine Funktion auszudrücken
- Es gibt keine besonderen Bedingungen für die Basisfunktion, sodass Sie jede beliebige Funktion verwenden können.
―― Da jedoch die Leistung des Modells und die Form der erhaltenen Funktion durch die Auswahlmethode bestimmt werden, muss die Basisfunktion entsprechend dem zu lösenden Problem ausgewählt werden.
- Die zwei am häufigsten verwendeten Basisfunktionen sind wie folgt (Details zu jeder werden später beschrieben).
** Polygonbasis **
\phi_i(x)=x^i\hspace{1.0em}(i=0,\cdots,M-1)
** Gaußsche Basis **
\phi_i(x)=\exp\left\{-\frac{(x-c_i)^2}{2s^2}\right\}\hspace{1.0em}(i=0,\cdots,M-1)
So finden Sie eine lineare Regression
--Die Basisfunktion wird zuerst bestimmt und festgelegt, und die Funktion f (x), für die Sie die lineare Summe ermitteln möchten, wird verwendet.
- Indem Sie das Gewicht $ w_i $ verwenden, das jeder Basisfunktion als Parameter zugewiesen wurde, können Sie den "Satz angenommener Funktionen" erhalten.
f(x)= \sum^{M-1}_{i=0}w_i\phi_i(x) = w^T\phi(x) \hspace{1.0em}(Gleichung 1)
--F (x) kann durch Bestimmen des Parameters $ w_i $ erhalten werden, daher sollte es eine Möglichkeit geben, $ w_i $ entsprechend zu bestimmen.
- => Quadratischen Fehler als Fehlberechnungsfunktion verwenden
E(w)=\frac{1}{2}\sum^N_{n=1}(f(x_n)-t_n)^2
=\frac{1}{2}\sum^N_{n=1}\left(\sum^{M-1}_{i=0}w_{i}x^{i}_{n}-t_n\right)^2 \hspace{1.0em}(Gleichung 2)
-
Es ist auf den ersten Blick kompliziert, aber wenn man bedenkt, dass $ x_n $ und $ t_n $ Konstanten sind (bereits gegebene Punkte), kann dies als eine Funktion von $ w_i $ betrachtet werden, nur ein quadratischer Ausdruck von $ w_i $. Ist
-
Daher können Sie $ w_i $ finden, das die Fehlerfunktion $ E (w) $ minimiert, und Sie können auch die Funktion f (x) bestimmen, die Sie suchen möchten.
-
Der grundlegende Ablauf der "linearen Regression" besteht darin, das Gewicht $ w $ durch Minimieren des quadratischen Fehlers zu ermitteln.
Beispieldaten
Bei einem Diagramm wie dem folgenden möchte ich seine lineare Regression finden
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
X = np.array([0.02, 0.12, 0.19, 0.27, 0.42, 0.51, 0.64, 0.84, 0.88, 0.99])
t = np.array([0.05, 0.87, 0.94, 0.92, 0.54, -0.11, -0.78, -0.79, -0.89, -0.04])
plt.xlim([0,1.0])
plt.ylim([-1.5,1.5])
plt.plot(X, t, 'o')
plt.show()
Finden Sie die Beziehung zwischen X und t durch lineare Regression
Finden Sie die lineare Regression mithilfe der Polynombasis
Polygonbasis
Definiert durch die folgende Formel (Repost)
\phi_i(x)=x^i\hspace{1.0em}(i=0,\cdots,M-1)
-
Die Polynombasis hat den Vorteil, dass die Lösung im bekannten "Polypoly" -Format erhalten werden kann, hat jedoch die Eigenschaft, dass sie die Schätzung an einem entfernten Punkt stark beeinflusst.
-
Es kann gesagt werden, dass die Einschränkungen für die Notation der Lösung zu stark sind.
-
Dieses Mal lösen wir die Merkmalsfunktion φ unter Verwendung der Polynombasis der kubischen Funktion. Daher ist die zu erhaltende Regressionsgleichung $ f (x) $ wie folgt.
f(x)=w_{1}+w_{2}x+w_{3}x^2+w_{4}x^3
- Beim Fixieren der Basisfunktion φ (x) kann der Parameter $ w $ frei verschoben werden.
--Dann ändert sich $ f (x) , sodass der lineare Regressionsansatz darin besteht, das für einen bestimmten Datenpunkt am besten geeignete " w $" zu finden.
- $ w $, so dass $ f (x) $ dem Datenpunkt ($ X_n $, $ t_n $) (n = 1, ..., N) "am nächsten" kommt, ist "falsch berechnete Funktion $ E. (w) Bei $ w_i $, wobei $ das Minimum ist, ist die partielle Differenzierung 0 ”, und finden Sie $ w_i $, das den Minimalwert ergibt.
\frac{\partial E(w)}{\partial w_m}=\sum^N_{n=1}\phi_m(x_n)\left(\sum^M_{j=1}w_j\phi_j(x_n)-t_n\right)=0 \hspace{1.0em}(m=1,\cdots,M) \hspace{1.0em}(Gleichung 3)
- Wenn diese simultanen Gleichungen unter Verwendung einer Matrix angeordnet werden, kann die Lösung $ w $ durch die folgende Gleichung erhalten werden.
w = (\phi^T\phi)^{-1}\phi^{T}t \hspace{1.0em}(Gleichung 4)
Φ ist jedoch eine Matrix, die wie folgt definiert ist.
\phi=\left(
\begin{array}{ccc}
\phi_{1}(x_1) & \phi_{2}(x_1) & \cdots & \phi_{M}(x_1) \\
\vdots & \vdots& & \vdots \\
\phi_{1}(x_N) & \phi_{2}(x_N) & \cdots & \phi_{M}(x_N)\\
\end{array}
\right) \hspace{1.0em}(Gleichung 5)
- Einsetzen des auf diese Weise erhaltenen Parameters $ w $ in $ f (x) = \ sum ^ {M-1} _ {i = 0} w_i \ phi_i (x) = w ^ T \ phi (x) $ Sie erhalten die Funktion $ f (x) $, die in der Nähe des Punktes verläuft
Finden Sie eine lineare Regression auf Polynombasis (Funktion dritter Ordnung) (Implementierung der obigen Inhalte)
Schreiben Sie den obigen Inhalt so wie er ist in den Code und finden Sie die lineare Regression mit der Polynombasis (Funktion dritter Ordnung).
(* Normalisierungsbegriffe werden hier nicht berücksichtigt)
#Wenn eine Polynombasis für die Merkmalsfunktion φ verwendet wird
def phi(x):
return [1, x, x**2, x**3]
PHI = np.array([phi(x) for x in X])
#Berechnung des obigen Teils (Gleichung 4). np.dot:Finden Sie das innere Produkt np.linalg.inv:Finden Sie die Umkehrung
w = np.dot(np.linalg.inv(np.dot(PHI.T, PHI)), np.dot(PHI.T, t))
#Np, um die Lösung simultaner Gleichungen zu finden.linalg.Sie können auch die Lösungsfunktion verwenden. Das geht schneller. np.linalg.solve(A, b): A^{-1}gibt zurück b
#w = np.linalg.solve(np.dot(PHI.T, PHI), np.dot(PHI.T, t))
xlist = np.arange(0, 1, 0.01) #Der x-Punkt der linearen Regressionsgleichung. 0.Zeichnen Sie fein in 01 Einheiten und geben Sie es als Linie aus
ylist = [np.dot(w, phi(x)) for x in xlist] #Lineare Regressionsgleichung y
plt.plot(xlist, ylist) #Lineare Regressionsgleichung
plt.plot(X, t, 'o')
plt.show()
#Die Ausgabe w wird durch die obige Berechnung erhalten
w
array([ -0.14051447, 11.51076413, -33.6161329 , 22.33919877])
Mit anderen Worten wurde als Ergebnis der linearen Regression die Regressionsgleichung $ f (x) = -0,14 + 11,5x-33,6x ^ 2 + 22,3x ^ 3 $ erhalten.
Finden Sie die lineare Regression auf der Gaußschen Basis
Gaußsche Basis
Die Gaußsche Basis ist eine glockenförmige Funktion (keine Verteilung), die durch die folgende Gleichung definiert wird
\phi_i(x)=\exp\left\{-\frac{(x-c_i)^2}{2s^2}\right\}\hspace{1.0em}(i=0,\cdots,M-1)\hspace{1.0em}(Gleichung 6)
- Die Gaußsche Basis ist ein Modell, das die Informationen in der Nähe des Datenpunkts stark nutzt und den Einfluss schwächt, wenn sie verschwinden.
――Es basiert auf der Idee, dass "den beobachteten Daten ein bestimmtes zufälliges Rauschen hinzugefügt wird".
――Die Erklärung basiert auf der Annahme, dass die Abweichung der beobachteten Werte (zufälliges Rauschen) einer Normalverteilung folgt.
Gaußsche Basisvariable s
- $ s $ ist ein Parameter, der die Entfernung steuert, auf die sich die Daten auswirken (Gaußsche Basis ist keine Verteilung, aber $ s $ ist ein Bild wie eine Streuung in einer Normalverteilung (wahrscheinlich)).
―― Je größer die Größe, desto weiter reicht der Effekt. Daher ist ein kleiner Wert wünschenswert
―― Wenn Sie es jedoch zu klein machen, können Sie möglicherweise keine Datenpunkte verwenden und korrekte Schlussfolgerungen ziehen, wenn die Datendichte niedrig ist.
- Versuchen Sie diesmal, es mit $ s $ = 0.1 auszuführen
Gaußsche Basisvariable c_i
- $ c_i $ repräsentiert das Zentrum der Gaußschen Basis
- Da die lineare Summe dieser Gaußschen Basis die Funktion darstellt, die Sie finden möchten, müssen Sie sie so nehmen, dass sie das Intervall abdeckt, in dem Sie eine Regression durchführen möchten.
- Grundsätzlich ist es in Ordnung, wenn Sie es im Intervall des zuvor in $ s $ festgelegten Werts nehmen
- Dieses Mal verwenden wir 11 Gaußsche Basisfunktionen aus dem Intervall 0 bis 1 in Intervallen von $ s $ = 0,1.
Finden Sie eine lineare Regression auf Gaußscher Basis (Implementierung der obigen)
Lassen Sie uns zunächst einfach ein Diagramm erstellen, in dem die in der obigen linearen Regression verwendete Merkmalsfunktion φ von "Polypoly-Basis" in "Gauß-Basis" umgeschrieben wird.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
X = np.array([0.02, 0.12, 0.19, 0.27, 0.42, 0.51, 0.64, 0.84, 0.88, 0.99])
t = np.array([0.05, 0.87, 0.94, 0.92, 0.54, -0.11, -0.78, -0.79, -0.89, -0.04])
#Wenn eine Gaußsche Basis für die Merkmalsfunktion φ verwendet wird
#phi gibt einen 12-dimensionalen Vektor zurück, indem 1 addiert wird, um den konstanten Term zusätzlich zu den 11 Gaußschen Basisfunktionen darzustellen.
#Gaußsche Basis (0 zu 1).0 bis 0.11 Punkte in Schritten von 1)+Gibt insgesamt 12 Punkte (Dimensionen) zurück, einen Punkt des konstanten Terms
def phi(x):
s = 0.1 #Gaußsche Basis "Breite"
#Gleichung 6 aufschreiben
return np.append(1, np.exp(-(x - np.arange(0, 1 + s, s)) ** 2 / (2 * s * s)))
PHI = np.array([phi(x) for x in X])
w = np.linalg.solve(np.dot(PHI.T, PHI), np.dot(PHI.T, t))
xlist = np.arange(0, 1, 0.01)
ylist = [np.dot(w, phi(x)) for x in xlist]
plt.plot(xlist, ylist)
plt.plot(X, t, 'o')
plt.show()
Die 12-dimensionale Gaußsche Basis ist völlig überlernt, weil sie mehr Freiheit und Ausdruckskraft hat als die 4-dimensionale polymorphe Basis.
Bayesianische lineare Regression, die die lineare Regression probabilisiert
- Unterschied in der Bedeutung des geschätzten Wertes $ w $
--Lineare Regression ⇒ Finden Sie den Koeffizienten w, der den quadratischen Fehler im Bereich der linearen Summe der Basisfunktionen minimiert.
- Bayes lineare Regression ⇒ ** Der Wert, der die hintere Wahrscheinlichkeit maximiert **, ist der geschätzte Wert von $ w $
――Die stochastische lineare Regression basiert auf der Idee, dass "den beobachteten Daten zufälliges Rauschen hinzugefügt wird".
- "Zufälliges Rauschen", dh "Abweichung", wird durch $ N (t | \ mu, \ beta ^ {-1}) $ formuliert, das von der Normalverteilung in der folgenden Formel angenommen wird.
p(t|w,x) = N(t|\mu,\beta^{-1})=\frac{1}{Z}\exp\left\{-\frac{1}{2}\beta(t-\mu)^2\right\} \hspace{1.0em}(Gleichung 7)\\
Jedoch,\mu=f(x)=\sum^M_{i=1}w_i\phi_i(x), Z=\sqrt{2\pi\beta^{-1}}
-
$ N (\ mu, \ beta ^ -1) $ ist eine Verteilung, die auf dem vorhergesagten Wert $ \ mu = f (x) $ zentriert ist, und die Wahrscheinlichkeit nimmt mit zunehmender Entfernung ab.
――Der Grad der Absenkung wird durch $ \ beta $ gesteuert. Wenn $ \ beta $ groß ist, sammelt es sich stark in der Mitte, und wenn es klein ist, wird die Abweichung groß.
--Dieses $ \ beta $, das die Umkehrung der Verteilung darstellt, wird auch als "Präzision" bezeichnet.
-
$ \ Beta $ sollte mindestens 1 oder mehr betragen
-
Wenn der Punkt $ (x_1, t_1) $ der obigen Gleichung 7 zugeordnet ist, wird die von ihm erhaltene Funktion $ p (t_1 | w, x_1) $ von $ w $ als "Wahrscheinlichkeitsfunktion" bezeichnet.
-
In der Bayes'schen linearen Regression, die eine stochastische Version der linearen Regression ist, wird $ w $, das die Wahrscheinlichkeitsfunktion maximiert, als optimaler Parameter ausgewählt.
――Die Wahrscheinlichkeit kann durch Multiplizieren der Wahrscheinlichkeit an jedem Punkt erhalten werden, und es kann $ w $ erhalten werden, das sie maximiert.
- Da die Multiplikation problematisch ist, nehmen Sie den Logarithmus der Wahrscheinlichkeit (Logarithmusfunktion). Das Maximum $ w $ vor dem Aufnehmen des Protokolls und das Maximum $ w $ nach dem Aufnehmen des Protokolls stimmen überein.
- Mit anderen Worten, Sie können $ w $ finden, um den Maximalwert von Gleichung 8 unten zu erhalten, der der Logarithmus von Gleichung 7 ist.
\ln{p(T|w,X)}=-\frac{1}{2}\beta\sum^N_{n=1}\left(t_n-\sum^{M}_{i=1}w_{i}\phi_i(x_n)\right)^2+C \hspace{1.0em}(Gleichung 8)
- Bei Betrachtung der Struktur der Gleichung entspricht Gleichung 8 im Wesentlichen der Gleichung 2, für die der quadratische Fehler erhalten wurde.
- Das Vorzeichen ist umgekehrt, da der quadratische Fehler "minimieren" und die logarithmische Wahrscheinlichkeitsfunktion "maximieren" entspricht.
--β (> 0) und C sind konstante Terme, die w nicht enthalten, sodass die Maximierung nicht beeinflusst wird.
- Mit anderen Worten, ** $ w $, das Gleichung 8 maximiert, kann durch Gleichung 4 gelöst werden **
Finden Sie die hintere Verteilung p (t | w, x) aus der vorherigen Verteilung p (w)
-Ex-post-Verteilungp(t|w,x)Insbesondere da x ein Eingabewert ist, behandeln Sie ihn als Konstantep(t|w,x)Ebenfallsp(t|w)Notiert als
- Aktualisieren Sie die Verteilung von $ w $ auf die hintere Verteilung $ p (w | t) $ mit $ p (w) $ und Datenpunkten (x, t). Diese hintere Verteilung ist das "Vertrauen der Antwort", das Sie finden möchten.
- Die Aktualisierungsformel für die posteriore Verteilung kann aus der Bayes'schen Formel und dem Multiplikations- / Additionssatz erhalten werden.
p(w|t)=p(t|w)p(w)/p(t) \\
p(t)=\int p(t,w)dw=\int p(t|w)p(w)dw
- Unter der Annahme einer Normalverteilung $ p (w) = N (w | 0, \ alpha ^ -1I) , wobei der Mittelwert 0 ist und die Kovarianzmatrix ein konstantes Vielfaches der Einheitsmatrix als vorherige Verteilung ist,
-Erneuerungsformelp(w|t)=p(t|w)p(w)/p(t)Zu diesem p(w)Durch Einsetzen und Umordnen der Formel wird Folgendes erhalten (der konstante Term ist\frac{1}{Z'}(Weggelassen) (\alpha$Wird später beschrieben)
p(w|t)=\frac{1}{Z'}\exp\left\{-\frac{1}{2}(w-m)^T\sum^{-1}(w-m)\right\} \hspace{1.0em}(Gleichung 9)\\
jedoch\\
m=\beta t\sum\phi(x)\\
\sum^{-1}=\alpha I+\beta\phi(x)\phi(x)^T
- Betrachtet man das {} von $ \ exp $ in Gleichung 9, so ist $ N (w | \ mu, \ sum) = \ frac {1} {Z} \ exp {(- (w- \ mu) ^ {T} \ sum ^ {-1} (w- \ mu)} Entspricht dem exp-Teil von $
-Mit anderen Wortenp(w|t)VonN(w|\mu,\sum)Das istZ'Verstehe ohne zu fragen
N(w|\mu,\sum)=\frac{1}{Z}\exp\left\{(-(w-\mu)^T\sum^{-1}(w-\mu)\right\}
p(w|t)=N(w|m,\sum)
- Da die vorherige Verteilung eine Normalverteilung ist und die hier erhaltene hintere Verteilung auch eine Normalverteilung ist, können diese als konjugierte vorherige Verteilung verwendet werden.
- Für N Datenpunkte $ x = (x_1, \ cdots, x_N) ^ T, t = (t_1, \ cdots, t_N) ^ T $ ist die hintere Verteilung $ p (w | t, x) $ Kann auf die gleiche Weise berechnet werden
- Mit anderen Worten, die Normalverteilung ist wie folgt.
p(w|t,x)=N(w|m_N,\sum_N) \hspace{1.0em}(Gleichung 10)\\
jedoch\\
m_N=\beta \sum_N\phi^{T}t\\
\sum^{-1}_N=\alpha I+\beta\phi^T\phi
- $ \ Phi $ ist eine Matrix, die auf die gleiche Weise wie Gleichung 5 definiert ist.
-Als Ergebnis zuerst die Datenpunkte(x_1,t_1)Für seine hintere Verteilungp(w|t_1,x_1)Und betrachten Sie es erneut als eine vorherige Verteilung, einen weiteren Datenpunkt(x_2,t_2)Die folgende posteriore Verteilung mitp(w|t_1,t_2,x_1,x_2)Kann durch Wiederholen des Suchvorgangs erhalten werden ...p(w|t_1,…,t_N,x_1,…,x_N)Wird die gleiche Verteilung haben wie
- Indem Sie die posteriore Verteilung gefunden haben, haben Sie "die Bayes'sche lineare Regression gelöst".
- wPosteriore Verteilung vonp(w|t)=N(w|\mu_N,\sum_N)Ist eine Normalverteilung, also der Durchschnitt\mu_NEs wird eine glockenförmige Verteilung mit
- Daher ist die "sicherste", dh wahrscheinlichste Antwort $ w = \ mu_N $.
- Die Methode, den Maximalpunkt der posterioren Verteilung als geschätzten Wert von $ w $ zu betrachten, wird als Schätzung der Maximierung der posterioren Verteilung (Maximum a Posterior, MAP) bezeichnet.
――Der Grad an "Vertrauen" kann aus der Ausbreitung des Saums (Kovarianz $ \ sum_N $) (später beschrieben) ermittelt werden.
Regularisierung der Bayes'schen linearen Regression
- Auch in der Bayes'schen linearen Regression gibt es eine Idee der Regularisierung.
- Das Ersetzen von $ \ sum_N $ in Gleichung 10 oben in $ m_N $ ergibt eine Gleichung, die dem Erhalten des Koeffizienten $ w $ für die lineare Regression mit Regularisierung ähnlich ist.
- Es ist bekannt, dass das Baying und die Regularisierung der linearen Regression zu derselben optimalen Lösung führen (siehe [hier](http://gihyo.jp/dev/serial/01/machine-learning/0013?page=2 für Details). )Seite von)
Implementierung der Bayes'schen linearen Regression
Vergleichen wir sowohl die Bayes'sche lineare Regression (blaue Linie) als auch die normale lineare Regression (grüne Linie) im Diagramm.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
X = np.array([0.02, 0.12, 0.19, 0.27, 0.42, 0.51, 0.64, 0.84, 0.88, 0.99])
t = np.array([0.05, 0.87, 0.94, 0.92, 0.54, -0.11, -0.78, -0.79, -0.89, -0.04])
#Wenn eine Gaußsche Basis für die Merkmalsfunktion φ verwendet wird
def phi(x):
s = 0.1
return np.append(1, np.exp(-(x - np.arange(0, 1 + s, s)) ** 2 / (2 * s * s)))
PHI = np.array([phi(x) for x in X])
#(Wie oben) Lösen nur einer linearen Regression auf Gaußscher Basis → Überlernen
w = np.linalg.solve(np.dot(PHI.T, PHI), np.dot(PHI.T, t))
#Lösen der linearen Bayes'schen Regression auf Gauß'scher Basis → Vermeiden Sie Überlernen
#Eine Abschrift von Gleichung 10 oben
alpha = 0.1 #Zwischenlagerung
beta = 9.0 #Zwischenlagerung
Sigma_N = np.linalg.inv(alpha * np.identity(PHI.shape[1]) + beta * np.dot(PHI.T, PHI)) #np.identity(PHI.shape[1])Ist eine 12-dimensionale Einheitsmatrix, die in der Gaußschen Basis angegeben ist
mu_N = beta * np.dot(Sigma_N, np.dot(PHI.T, t))
xlist = np.arange(0, 1, 0.01)
plt.plot(xlist, [np.dot(w, phi(x)) for x in xlist], 'g') #Zeichnen Sie die Lösung der gewöhnlichen linearen Regression
plt.plot(xlist, [np.dot(mu_N, phi(x)) for x in xlist], 'b') #Zeichnen Sie die Lösung der Bayes'schen linearen Regression
plt.plot(X, t, 'o') #Zeichnen Sie Beispielpunkte
plt.show()
- Die lineare Regression von Bayes (blau) ist besser als die normale lineare Regression (grün) und kann aufgezeichnet werden, um ein Übertraining zu vermeiden
- Bei der Bayes'schen linearen Regression ist der Wert, der die hintere Wahrscheinlichkeit maximiert, der geschätzte Wert von w. Dies steht im Einklang mit dem Ergebnis der linearen Regression mit Regularisierung, wie am Ende des Vorstehenden angegeben.
Was war Kovarianz Σ_N?
- Die Kovarianz $ \ sum_N $ repräsentiert das "Wahrscheinlichkeitsvertrauen" des Datenpunkts
- Die "Streuung" einer eindimensionalen Verteilung repräsentiert die "Streuung" von Daten
- Andererseits ist eine mehrdimensionale "Co-Dispersion" nicht so einfach wie eine Dispersion, da es sich um eine Matrix handelt.
--Das $ \ sum_N $ ist diesmal auch eine 12x12-Matrix.
#Kovarianzmatrix Sigma_Gut lesbare Anzeige von N.
print "\n".join(' '.join("% .2f" % x for x in y) for y in Sigma_N)
2.94 -2.03 -0.92 -1.13 -1.28 -1.10 -1.21 -1.14 -1.23 -1.06 -0.96 -2.08
-2.03 2.33 -0.70 1.95 0.13 1.02 0.85 0.65 0.98 0.70 0.65 1.44
-0.92 -0.70 2.52 -1.86 1.97 -0.29 0.42 0.59 0.13 0.40 0.32 0.63
-1.13 1.95 -1.86 3.02 -1.66 1.50 0.17 0.29 0.73 0.33 0.36 0.82
-1.28 0.13 1.97 -1.66 2.82 -1.11 1.39 0.22 0.55 0.49 0.40 0.92
-1.10 1.02 -0.29 1.50 -1.11 2.39 -1.35 1.72 -0.29 0.53 0.46 0.69
-1.21 0.85 0.42 0.17 1.39 -1.35 2.94 -2.06 2.39 -0.02 0.25 1.01
-1.14 0.65 0.59 0.29 0.22 1.72 -2.06 4.05 -2.72 1.43 0.37 0.67
-1.23 0.98 0.13 0.73 0.55 -0.29 2.39 -2.72 3.96 -1.41 1.23 0.59
-1.06 0.70 0.40 0.33 0.49 0.53 -0.02 1.43 -1.41 3.30 -2.27 2.05
-0.96 0.65 0.32 0.36 0.40 0.46 0.25 0.37 1.23 -2.27 3.14 -0.86
-2.08 1.44 0.63 0.82 0.92 0.69 1.01 0.67 0.59 2.05 -0.86 2.45
- Es stellt sich heraus, dass die Kovarianzmatrix eine Diagonalmatrix ist
- Diagonale Komponente
- Repräsentiert die Verteilung, wenn die entsprechenden Parameter alleine angezeigt werden
- Mit anderen Worten, die diagonale Komponente entspricht der Streuung der eindimensionalen Normalverteilung.
――In diesen Daten ist sogar die kleinste 2,33, und keine der diagonalen Komponenten ist sehr klein.
- Die Genauigkeit der Parameterschätzung ist aufgrund der geringen Datenmenge möglicherweise nicht sehr hoch.
- Punkte, an denen sich jedes Element schneidet
- Repräsentiert die Korrelation zwischen den entsprechenden Parametern
--0 bedeutet keine Korrelation (unabhängig voneinander)
- Wenn es sich um einen positiven Wert handelt und einer größer als der Durchschnitt ist, ist der andere tendenziell größer als der Durchschnitt.
- Im Gegenteil, wenn der Wert negativ ist, ist er tendenziell kleiner als der Durchschnitt.
- In diesen Daten unter Verwendung der Gaußschen Basis,
- Es besteht eine negative Korrelation zwischen dem Koeffizienten des konstanten Terms (erster Parameter), anderen Parametern und dem Koeffizienten der Gaußschen Basis nebeneinander.
- Die entfernten Gaußschen Basen weisen eine allgemein positive Korrelation auf, sind jedoch im Allgemeinen schwach (nahe 0).
――Wenn Sie das Problem tatsächlich lösen, müssen Sie sich die Kovarianzmatrix nicht oft so ansehen.
Visualisieren Sie die vorhergesagte Verteilung
-(Idee) posteriore Verteilungp(w|X)Ist die Verteilung des Parameters w, sop(y|w,x)Eine "Funktion", die die Verteilung von y zurückgibt, wenn x angegeben ist.p(y|X,x)(Tatsächlich ist es nicht möglich, die Verteilung durch die Verteilung zu ersetzen, es handelt sich also nur um ein Bild.)
-
Die Verteilung der Zielvariablen, die die hintere Verteilung widerspiegelt, wird als vorhergesagte Verteilung bezeichnet.
-
Weitere Informationen zum Schreiben der folgenden vorhergesagten Verteilung finden Sie unter hier.
#Normalverteilungswahrscheinlichkeitsdichtefunktion
def normal_dist_pdf(x, mean, var):
return np.exp(-(x-mean) ** 2 / (2 * var)) / np.sqrt(2 * np.pi * var)
#Sekundärformat( x^Berechnen Sie T A x)
def quad_form(A, x):
return np.dot(x, np.dot(A, x))
xlist = np.arange(0, 1, 0.01)
tlist = np.arange(-1.5, 1.5, 0.01)
z = np.array([normal_dist_pdf(tlist, np.dot(mu_N, phi(x)),1 / beta + quad_form(Sigma_N, phi(x))) for x in xlist]).T
plt.contourf(xlist, tlist, z, 5, cmap=plt.cm.binary)
plt.plot(xlist, [np.dot(mu_N, phi(x)) for x in xlist], 'r')
plt.plot(X, t, 'go')
plt.show()
- Der dunkle Teil hat einen hohen Wert der Wahrscheinlichkeitsdichtefunktion, dh den Teil, an dem die geschätzte Funktion wahrscheinlich dort vorbeigeht.
――Wir sind zuversichtlich zu schätzen, wo die Datendichte hoch ist, und wir sind nicht zuversichtlich zu schätzen, wo die Datenpunkte weit voneinander entfernt sind.
Über den Hyperparameter α der vorherigen Verteilung
- Die in der basilianischen Vorverteilung $ p (w) = N (w | 0, \ alpha ^ -1I) $ enthaltenen Parameter werden auch als Hyperparameter bezeichnet.
―― Je größer α ist, desto kleiner ist die Dispersion, dh desto stärker ist das Vorwissen, dass w ein Wert nahe 0 ist.
- Wenn Sie die Bayes'sche lineare Regression in diesem Zustand lösen, ist die Kraft, w auf einen Wert nahe 0 zu schätzen, stark, so dass es leicht ist, das Ergebnis des sogenannten Überlernens zu unterdrücken, aber Sie kommen zu der wahren Lösung. Möglicherweise sind viele Daten erforderlich
――Um im Gegenteil, wenn α klein ist, wird die Kraft, w niederzuhalten, schwach.
- Insbesondere wenn α 0 ist, stimmt es mit der gewöhnlichen linearen Regression überein. Daher ist es üblich, einen kleinen Wert nahe 0 einzustellen, beispielsweise um 0,1 oder 0,01, und ihn zuerst zu lösen.
Frühere Geschichte
- Mehrere Seiten von "Beginnen wir mit maschinellem Lernen" http://gihyo.jp/dev/serial/01/machine-learning
- Insbesondere,
--11. Implementieren wir die lineare Regression http://gihyo.jp/dev/serial/01/machine-learning/0011
--14. Implementieren wir die Bayes'sche lineare Regression http://gihyo.jp/dev/serial/01/machine-learning/0014