[PYTHON] [Maschinelles Lernen] Unkorrelation aus der Mathematik verstehen

1. Einleitung

(1. Zweck

Wenn Sie maschinelles Lernen ausprobieren möchten, kann jeder Scicit-Learn usw. verwenden, um es relativ einfach zu implementieren. Um jedoch Ergebnisse bei der Arbeit zu erzielen oder Ihr Niveau zu verbessern ** "Ich kenne den Hintergrund nicht, aber ich habe dieses Ergebnis erhalten" ** Sie können sehen, dass es eindeutig schwach ist.

Dieses Mal konzentrieren wir uns auf ** "Unkorreliert" **.

Aus der vorherigen Erklärung: "Ich habe von Unkorrelation gehört, aber warum?" Und "Wie verwenden Sie sie?", "Welche Art der Verarbeitung wird mathematisch mit Unkorrelation durchgeführt?" Der Artikel soll die Frage "?" Beantworten.

(2) Konfiguration

Erstens gibt Kapitel 2 einen Überblick über die Unkorrelation, und Kapitel 3 führt tatsächlich die Unkorrelation durch. Abschließend werde ich in Kapitel 4 erklären, wie man die Unkorrelation mathematisch versteht.

2. Was ist Unkorrelation?

Wie der Name schon sagt, ist es **, die Korrelation zwischen jeder Variablen ** zu beseitigen. Was ist falsch an der hohen Korrelation zwischen den einzelnen Variablen?

(1) Warum es notwendig ist, die Korrelation aufzuheben

Aus der Schlussfolgerung ** "Weil die Varianz des partiellen Regressionskoeffizienten groß wird und die Genauigkeit des Modells tendenziell instabil ist" **.

Ich weiß es überhaupt nicht. Ich werde etwas mehr erklären.

Beispielsweise wird die Formel für ein Regressionsmodell üblicherweise wie folgt ausgedrückt:

$ Y = A_1x_1 + A_2x_2 + ・ ・ + b $

Geben Sie hier die tatsächlichen Daten in $ y $ (Zielvariable) und $ x_1 $ oder $ x_2 $ (erklärende Variable) ein, um den partiellen Regressionskoeffizienten $ a_1 $ oder $ a_2 $ und den konstanten Term $ b $ zu ermitteln. Ist eine multiple Regressionsanalyse.

Wie man die Streuung dieses partiellen Regressionskoeffizienten erhält (das Bild, wie stark der partielle Regressionskoeffizient verschiedene Werte annimmt), ist verwirrend, wenn er detailliert geschrieben ist. Wenn Sie also nur die Schlussfolgerung schreiben, ** " (1-Korrelationskoeffizient) "ist im Molekül der Formel zur Berechnung der Dispersion des partiellen Regressionskoeffizienten ** enthalten.

Mit anderen Worten, ** je größer die Korrelation ist, desto kleiner ist das Molekül und desto größer ist infolgedessen die Streuung des partiellen Regressionskoeffizienten = der partielle Regressionskoeffizient nimmt tendenziell verschiedene Werte an = die Genauigkeit des Modells wird instabil **

Das ist die Theorie.

In (2) sollten Variablen mit hoher Korrelation gelöscht werden ...?

Wie wir in (1) gesehen haben, sollte eine Variable mit hoher Korrelation nicht gelöscht werden.

Denn ** "hohe Korrelation zwischen Variablen" bedeutet einfach, dass "Variablen eine lineare Beziehung haben" **.

→ Wenn Sie es also einfach löschen, können Sie andere wichtige Informationen löschen, die die Variable möglicherweise tatsächlich enthält **.

(3) Was soll ich dann tun ...

Was hier erscheint, ist Unkorrelation.

Wir werden das Modell erstellen, nachdem die Korrelation jeder Variablen beseitigt wurde.

Ich denke, es ist schwierig, ein Bild zu bekommen, also versuchen wir es tatsächlich.

3. Versuchen Sie die Unkorrelation

Als konkretes Beispiel nehme ich diesmal die Kickstarter-Projekte von kaggle, die ich immer als Beispiel benutze. https://www.kaggle.com/kemical/kickstarter-projects

Dieses Kapitel ist lang, aber ** die einzige wichtige Unkorrelation ist (ⅶ) **, daher ist es eine gute Idee, zuerst dort nachzuschauen.

※wichtiger Punkt※ ・ Dieses Mal konnte ich keine Variable finden, die als erklärende Variable nicht korreliert sein sollte. Variablen, die nichts mit Modellbau zu tun haben, sind nicht korreliert.

Bitte beachten Sie, dass dies nur ein Kapitel ist, um zu erkennen, dass "die Unkorrelation auf diese Weise erfolgt".

-Es gab eine Site, die in den Kickstarter-Projekten, die ich immer im Beispiel meines Artikels verwende, nur unkorreliert war, also habe ich diese als Referenz verwendet. https://ds-blog.tbtech.co.jp/entry/2019/04/27/Kaggle%E3%81%AB%E6%8C%91%E6%88%A6%E3%81%97%E3%82%88%E3%81%86%EF%BC%81_%EF%BD%9E%E3%82%B3%E3%83%BC%E3%83%89%E8%AA%AC%E6%98%8E%EF%BC%92%EF%BD%9E

(I) Importieren

#numpy,Pandas importieren
import numpy as np
import pandas as pd
import seaborn as sns

#Importieren, um Datumsdaten zu verarbeiten
import datetime

(Ii) Daten lesen


df = pd.read_csv("ks-projects-201801.csv")

(Iii) Bestätigung der Anzahl der Daten

Aus dem Folgenden können Sie ersehen, dass es sich um den Datensatz von (378661, 15) handelt.

df.shape

(Iv) Datenformung

◆ Anzahl der Rekrutierungstage

Ich werde die Details weglassen, aber da die Start- und Endzeit der Rekrutierung für die Cloud-Finanzierung in den Daten enthalten sind, werden wir diese in "Rekrutierungstage" umwandeln.

df['deadline'] = pd.to_datetime(df["deadline"])
df["launched"] = pd.to_datetime(df["launched"])
df["days"] = (df["deadline"] - df["launched"]).dt.days

◆ Informationen zur Zielvariablen

Ich werde die Details auch hier weglassen, aber es gibt andere Kategorien als Erfolg ("erfolgreich") und Misserfolg ("fehlgeschlagen") für die Zielvariable "state", aber dieses Mal werde ich nur Daten für Erfolg und Misserfolg verwenden.

df = df[(df["state"] == "successful") | (df["state"] == "failed")]

Ersetzen Sie dann Erfolg durch 1 und Misserfolg durch 0.

df["state"] = df["state"].replace("failed",0)
df["state"] = df["state"].replace("successful",1)

(V) Fehlende Wertverarbeitung

Es tut mir leid für die Schlussfolgerung, aber da ich danach verwendet verpfändet verwenden werde, wird nur diese Variable für fehlende Werte verarbeitet.

df["usd pledged"] = df["usd pledged"].fillna(df["usd pledged"].mean())

(V) Bestätigung des Korrelationskoeffizienten

Lassen Sie uns die Korrelation jeder Variablen überprüfen.

sns.heatmap(df.corr())
キャプチャ1.PNG

Lassen Sie uns nun "pleged" und "used pleded" unkorrelieren, die in hohem Maße zwischen Variablen korrelieren.

(Ⅶ) Nicht korreliert

Die Dekorrelation selbst ist in Ordnung, wenn Sie den Code wie folgt schreiben. Ich glaube jedoch nicht, dass Sie die Bedeutung verstehen, aber dieses Mal lesen Sie bitte "Das ist es" und lesen Sie Kapitel 4, "Verständnis aus der Mathematik".

#Df nur verpfändet und verwendet pleged_In verpfändet aufbewahren
df_corr = pd.DataFrame({'pledged' : df['pledged'], 'usdpledged' : df['usd pledged']})

#Finden Sie Dispersion / Co-Dispersion
cov = np.cov(df_corr, rowvar=0) 

#Ersetzen Sie den Eigenvektor der Verteilungs-Co-Verteilungsmatrix durch S.
_, S = np.linalg.eig(cov)           

#Daten sind nicht korreliert *.T steht für Inversion
pledged_decorr = np.dot(S.T, df_corr.T).T 

Damit ist die Unkorrelation abgeschlossen. Lassen Sie uns als Test den Korrelationskoeffizienten zwischen verpfändet und verwendet zufrieden überprüfen.

print('Korrelationskoeffizient: {:.3f}'.format(np.corrcoef(pledged_decorr[:, 0], pledged_decorr[:, 1])[0,1])) 

In diesem Fall wird "Korrelationskoeffizient: 0,000" angezeigt. Ich konnte erfolgreich entkorrelieren!

4. Unkorrelation aus der Mathematik verstehen

(1) Voraussetzung

Lassen Sie uns nun sehen, wie dieses Kapitel die Unkorrelation tatsächlich mathematisch behandelt. Wie eingangs erwähnt, ist es notwendig, an "Matrix" und "Eigenwert / Eigenvektor" zu denken, um die Unkorrelation zu verstehen.

Wenn Sie es schwierig finden, können Sie es überspringen, und die Erklärung selbst ist nicht detailliert, aber grob gesagt wird sie auf diese Weise erklärt.

(2) Spezifisches Beispiel

Wenn es einige erklärende Variablen gibt, seien sie $ \ boldsymbol {x_1} $, $ \ boldsymbol {x_2} $ ・ ・ ・ $ \ boldsymbol {x_n} $.

Die Verteilungs- / Mitverteilungsmatrix zwischen diesen Variablen kann wie folgt geschrieben werden. キャプチャ3.PNG

Der blaue Rahmen zeigt die gemeinsame Verteilung von zwei Kombinationen jeder Variablen, und der rote Rahmen zeigt die Verteilung jeder Variablen.

Diese Dispersions- / Co-Dispersionsmatrix wird durch ** Ausführen eines als Diagonalisierung bezeichneten Prozesses ** in Folgendes umgewandelt!

キャプチャ2.PNG

Ich glaube nicht, dass ich mir sicher bin. Wichtig hierbei ist, dass ** der blaue Rahmen (Co-Dispersion) alle 0 ** ist.

** Durch Diagonalisierung kann die Kovarianz auf 0 reduziert werden, was genau der unkorrelierten Verarbeitung entspricht **.

Warum ist es nicht korreliert, wenn die Kovarianz zwischen den einzelnen Variablen 0 ist?

Um dies zu verstehen, erinnern wir uns an die Korrelationskoeffizientenformel. Wenn der Korrelationskoeffizient r ist, wird r wie folgt abgeleitet.

** (Korrelationskoeffizient r) = (Kovarianz) / (Standardabweichung von $ x $) ・ (Standardabweichung von $ y $) **

Aus dieser Gleichung können wir sehen, dass ** die Kovarianz 0 ist, das heißt, das Molekül ist 0, also ist der Korrelationskoeffizient 0 **.

Aus diesem Grund wird ** die Kovarianz zwischen jeder Variablen durch Diagonalisierung auf 0 gesetzt, und der Korrelationskoeffizient wird auf 0 gesetzt, um eine Unkorrelation zu erreichen **.

5. Schlussfolgerung

Wie war es? Mein Gedanke ist: "Ich kann nicht interpretieren, selbst wenn mir von Anfang an ein sehr komplizierter Code angezeigt wird. Daher ist mir die Genauigkeit kein einziges Mal wichtig. Deshalb werde ich versuchen, eine grundlegende Reihe von Flows mit Scicit-Learn usw. zu implementieren." Ich finde es sehr wichtig.

Sobald ich mich daran gewöhnt habe, halte ich es jedoch für sehr wichtig, aus mathematischer Sicht zu verstehen, wie sie hinter den Kulissen funktionieren.

Ich denke, es gibt viele Inhalte, die schwer zu verstehen sind, aber ich hoffe, es hilft, mein Verständnis zu vertiefen.

Recommended Posts

[Maschinelles Lernen] Unkorrelation aus der Mathematik verstehen
[Maschinelles Lernen] SVM sowohl aus Scikit-Lernen als auch aus Mathematik verstehen
[Maschinelles Lernen] Entscheidungsbäume aus Scikit-Lernen und Mathematik verstehen
[Maschinelles Lernen] Verständnis der logistischen Regression sowohl durch Scikit-Lernen als auch durch Mathematik
[Maschinelles Lernen] Verstehen der linearen multiplen Regression sowohl aus Scikit-Lernen als auch aus Mathematik
[Maschinelles Lernen] Zufällige Gesamtstruktur verstehen
Maschinelles Lernen
[Maschinelles Lernen] Verstehen Sie aus der Mathematik, warum der Korrelationskoeffizient zwischen -1 und 1 liegt.
Verwenden Sie die API-Gruppe A3RT für maschinelles Lernen aus Python
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Beispiel für maschinelles Lernen
Maschinelles Lernen ab 0 für theoretische Physikstudenten # 1
Hinweise zum maschinellen Lernen (von Zeit zu Zeit aktualisiert)
Algorithmus für maschinelles Lernen (von der Klassifizierung in zwei Klassen bis zur Klassifizierung in mehreren Klassen)
Maschinelles Lernen von Grund auf neu (maschinelles Lernen mit Kaggle)
Überblick über maschinelle Lerntechniken, die aus Scikit-Learn gelernt wurden
Maschinelles Lernen ab 0 für theoretische Physikstudenten # 2
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Deep Learning von Grund auf neu
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Maschinelles Lernen: Betreut --AdaBoost
Logistische Regression beim maschinellen Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer aus Kapitel 2
Maschinelles Lernen unterstützt Vektormaschine
Installation von TensorFlow, einer Bibliothek für maschinelles Lernen von Google
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Lerne irgendwie maschinelles Lernen
Lernmethode zum Lernen von maschinellem Lernen von Grund auf neu (Version März 2020)
Pip die maschinelle Lernbibliothek von einem Ende (Ubuntu)
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Erstellen Sie mit Winsows 10 eine maschinelle Lernumgebung von Grund auf neu
Einführung in das maschinelle Lernen mit Simple Perceptron
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
Sammeln Sie Daten zum maschinellen Lernen, indem Sie aus biobasierten öffentlichen Datenbanken kratzen
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Maschinelles Lernen mit Pokemon gelernt
Datensatz für maschinelles Lernen
Japanische Vorverarbeitung für maschinelles Lernen
Deep Learning von Grund auf 1-3 Kapitel
[Maschinelles Lernen] Verstehen Sie aus der Mathematik, dass Standardisierung zu einem Durchschnitt von 0 und einer Standardabweichung von 1 führt.
Eine Einführung in das maschinelle Lernen
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Maschinelles Lernen: Überwacht - Lineare Regression
Grundlagen des maschinellen Lernens (Denkmal)
Anfänger des maschinellen Lernens versuchten RBM
Maschinelles Lernen mit Python! Vorbereitung
Lernressourcen-Lernblock für maschinelles Lernen
Maschinelles Lernen ② Naive Bayes Zusammenfassung
Verstehe maschinelles Lernen ~ Ridge Regression ~.