[PYTHON] Maschinelles Lernen: Überwacht - Lineare Diskriminanzanalyse

Ziel

Verstehen Sie die lineare Diskriminanzanalyse von Fisher mathematisch und versuchen Sie es mit scicit-learn.

Es wird davon ausgegangen, dass Sie bereits Differentialintegration und lineare Algebra gelernt haben.

Theorie

Die lineare Diskriminanzanalyse von Fisher ist eine überwachte Technik, bei der $ w $ ermittelt wird, damit sich die Verteilungen zwischen den Kategorien nach der Projektion der Daten nicht überlappen. Obwohl sie als Diskriminante bezeichnet wird, wird sie praktisch zur Dimensionsreduzierung verwendet.

Fisher's lineare Diskriminierungsanalyse

Ableitung der linearen Diskriminanzanalyse nach Fisher

Wenn die Daten $ x $ von $ w $ projiziert werden, sind die projizierten Daten $ y $

y = w^T x

Es wird sein. Zu diesem Zeitpunkt finden wir $ w $, damit die Verteilung der Kategorien in $ y $ so weit wie möglich voneinander entfernt ist. In dem unten gezeigten Fall projiziert das optimale $ w $ die blauen und orangefarbenen Punkte auf die hohlen Punkte auf der schwarzen geraden Linie.

105_lda_reduction.png

Betrachten Sie nun zwei Kategorien von Daten, wie oben gezeigt. Der durchschnittliche Vektor der Kategorien 1 und 2 kann wie folgt ausgedrückt werden.

\mu_1 = \frac{1}{N_1} \sum^{N_1}_{i \in C_1} x_i \\
\mu_2 = \frac{1}{N_2} \sum^{N_2}_{i \in C_2} x_i

Wenn der durch $ w $ projizierte Durchschnittsvektor durch $ m_1 = w ^ T \ mu_1, m_2 = w ^ T \ mu_2 $ dargestellt wird, ist die Differenz zwischen den Durchschnittswerten nach der Projektion

m_1 - m_2 = w^T (\mu_1 - \mu_2)

Je größer der Wert ist, desto größer ist der Grad der Trennung zwischen den Kategorien. Deshalb,wWird das Maximum sein. Aber was ich wirklich will, istwWeil es die Projektionsrichtung von ist|w|^2 = 1Ich werde die Einschränkung hinzufügen. Dies allein funktioniert jedoch nicht. Berücksichtigen Sie daher die Verteilung der einzelnen Kategorien. Verteilung in der Klasse nach Projektion jeder Kategories^2_1, s^2_2Ist

s^2_1 = \sum^{N_1}_{i \in C_1} (w^T x_i - w^T \mu_1)^2 \\
s^2_2 = \sum^{N_2}_{i \in C_2} (w^T x_i - w^T \mu_2)^2

Je kleiner die Varianz nach der Projektion ist, desto besser. Daher sollten wir die Varianz innerhalb der Klasse $ s ^ 2 = s ^ 2_1 + s ^ 2_2 $ minimieren, die die Summe von $ s ^ 2_1 und s ^ 2_2 $ ist.

Hier definieren wir die folgenden Fisher-Kriterien $ J (w) $ als Bewertungsfunktion, die sowohl die Maximierung des Mittelwerts nach der Projektion als auch die Minimierung der Varianz nach der Projektion berücksichtigt.

J(w) = \frac{(m_1 - m_2)^2}{s^2_1 + s^2_2}

Wenn die Kovarianzmatrix zwischen den Klassen $ S_B = (\ mu_1- \ mu_2) (\ mu_1- \ mu_2) ^ T $ ist, ist die Variation zwischen den Klassen $ (m_1 - m_2) ^ 2 $

\begin{align}
(m_1 - m_2)^2 &= \left( w^T(\mu_1 - \mu_2) \right)^2 \\
&= \left( w^T(\mu_1 - \mu_2) \right) \left( w^T(\mu_1 - \mu_2) \right)^T \\
&= w^T (\mu_1 - \mu_2)(\mu_1 - \mu_2)^T w \\
&= w^T S_B w
\end{align}

Kann ausgedrückt werden als. Weiterhin ist die klasseninterne Verteilung $ s ^ 2_k $

\begin{align}
s^2_k &= \sum_{i \in C_k} (y_i - m_k)^2 \\
&= \sum_{i \in C_k} \left( w^T (x_i - \mu_k) \right)^2 \\
&= \sum_{i \in C_k} \left( w^T(x_i - \mu_k) \right) \left( w^T(x_i - \mu_k) \right)^T \\
&= w^T \sum_{i \in C_k} (x_i - \mu_k)(x_i - \mu_k)^T w \\
&= w^T S_k w
\end{align}

Daher setzt die Verteilung innerhalb aller Klassen $ s ^ 2_1 + s ^ 2_2 $ die Kovarianzmatrix innerhalb aller Klassen auf $ S_W = S_1 + S_2 $.

s^2_1 + s^2_2 = w^T (S_1 + S_2) w = w^T S_W w

Kann ausgedrückt werden als. Daher ist Fischers Referenz $ J (w) $

J(w) = \frac{w^T S_B w}{w^T S_W w}

Und wird dies maximieren.

Lernen der linearen Diskriminierungsanalyse nach Fisher

Da wir den Maximalwert finden müssen, differenzieren wir die Fisher-Referenz $ J (w) $ in Bezug auf $ w $ und lösen sie als 0.

\begin{align}
\frac{\partial J(w)}{\partial w} &= \frac{2S_B w \cdot w^TS_Ww - w^TS_Bw \cdot 2S_Ww}{(w^TS_Ww)^2} \\
&= \frac{2}{w^TS_Ww} \left( S_Bw - \frac{w^TS_Bw}{w^TS_Ww} S_Ww \right) = 0
\end{align}

Setzen Sie hier $ \ lambda = \ frac {w ^ TS_Bw} {w ^ TS_Ww} $

\frac{\partial J(w)}{\partial w} = \frac{2}{w^TS_Ww} (S_Bw - \lambda S_Ww) = 0 \\
(S_Bw - \lambda S_Ww) = 0

Daher werden wir das verallgemeinerte Eigenwertproblem der folgenden Gleichung lösen.

S_Bw = \lambda S_Ww

Wenn $ S_W $ eine reguläre Matrix ist,

\lambda w = S^{-1}_WS_Bw

Und es wird ein normales eindeutiges Wertproblem. des Weiteren,

S_Bw = (\mu_1 - \mu_2)(\mu_1 - \mu_2)^Tw \propto (\mu_1 - \mu_2)

Weil es wird

w \propto S^{-1}_WS_Bw \propto S^{-1}_W (\mu_1 - \mu_2)

Sie finden das optimale $ w $ as.

Implementierung

Ausführungsumgebung

Hardware-

・ CPU Intel (R) Core (TM) i7-6700K 4,00 GHz

Software

・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Matplotlib 3.3.1 ・ Numpy 1.19.2 ・ Scikit-Learn 0.23.2

Programm zum Ausführen

Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/MachineLearning/tree/master/Supervised).

fisher_lda.py


Ergebnis

Dieses Mal habe ich mich für den Iris-Datensatz von scikit-learn entschieden.

Das Ausführungsergebnis ist wie folgt. Die Setosa ist gut getrennt, und die Versicolor und Virginica sind teilweise bedeckt, aber sie scheinen einigermaßen getrennt zu sein.

105_fisher_lda.png

Referenz

1.2. Linear and Quadratic Discriminant Analysis

Yuzo Hirai. "Erste Mustererkennung", Morikita Publishing, 2012.

Recommended Posts

Maschinelles Lernen: Überwacht - Lineare Diskriminanzanalyse
Maschinelles Lernen: Überwacht - Lineare Regression
Maschinelles Lernen: Betreut --AdaBoost
Lineare Regression des maschinellen Lernens
Maschinelles Lernen: Überwacht - Zufälliger Wald
Maschinelles Lernen: Überwacht - Support Vector Machine
Maschinelles Lernen: Überwacht - Entscheidungsbaum
Python Scikit-learn Lineare Regressionsanalyse Nichtlineare einfache Regressionsanalyse Maschinelles Lernen
Binarisierung von Bildern mittels linearer Diskriminanzanalyse
Maschinelles Lernen: Überwacht - Lineare Diskriminanzanalyse
Anfänger des maschinellen Lernens versuchen eine lineare Regression
Algorithmus für maschinelles Lernen (multiple Regressionsanalyse)
Algorithmus für maschinelles Lernen (Einzelregressionsanalyse)
Maschinelles Lernen
Binarisierung von Bildern mittels linearer Diskriminanzanalyse
Algorithmus für maschinelles Lernen (Verallgemeinerung der linearen Regression)
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung
<Kurs> Maschinelles Lernen Kapitel 1: Lineares Regressionsmodell
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
<Kurs> Maschinelles Lernen Kapitel 4: Hauptkomponentenanalyse
Algorithmus für maschinelles Lernen (Zusammenfassung und Regularisierung der linearen Regression)
Vorverarbeitung beim maschinellen Lernen 1 Datenanalyseprozess
Betreutes Lernen (Klassifizierung)
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Beispiel für maschinelles Lernen
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 2
EV3 x Python Maschinelles Lernen Teil 2 Lineare Regression
[Python] Datenanalyse, maschinelles Lernen (Kaggle) -Datenvorverarbeitung-
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 3
Analyse der gemeinsamen Raumnutzung durch maschinelles Lernen
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Logistische Regression beim maschinellen Lernen
Maschinelles Lernen unterstützt Vektormaschine
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Coursera Machine Learning Challenge in Python: ex1 (lineare Regression)
Lerne irgendwie maschinelles Lernen
Lernen mit einem Lehrer (Rückkehr) 1 Grundlagen
Python: Überwachtes Lernen (Rückkehr)
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Python: Überwachtes Lernen (Klassifizierung)
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 7 Regressionsanalyse
Coursera-Herausforderungen für maschinelles Lernen in Python: ex7-2 (Primäranalyse)
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Maschinelles Lernen mit Pokemon gelernt
Datensatz für maschinelles Lernen
Maschinelles Lernen in Delemas (Praxis)
Eine Einführung in das maschinelle Lernen
Ensemble-Lernen und Korbanalyse
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Grundlagen des maschinellen Lernens (Denkmal)
Python: Überwachtes Lernen: Hyperparameter Teil 1
Anfänger des maschinellen Lernens versuchten RBM