Kürzlich habe ich ** kausales Denken / kausale Suche ** studiert, also Beschrieb ein Python-Implementierungsbeispiel für SAM (Structural Agnostic Modeling) [2018], bei dem es sich um eine ** kausale Suchmethode ** mit DeepLearning / GAN handelt. Ich werde. Ich möchte zu einem späteren Zeitpunkt ein Implementierungsbeispiel des bekanntesten Basin-Netzwerks in einem separaten Artikel veröffentlichen.
Dieser Artikel ist nur für SAM. Die verwendeten Daten waren Titanic-Daten.
Der Zweck besteht darin, anhand der in der folgenden Abbildung gezeigten Daten nach Existenz und Richtung von Kausalzusammenhängen zu suchen. Dies nennt man ** kausale Suche **.
Andererseits wird die Schätzung der Größe dieser Kausalzusammenhänge (Pfeile) als ** Kausalinferenz ** bezeichnet.
Zunächst werde ich kurz erklären, was ein ** Kausalzusammenhang ** ist. Wenn die Tendenz besteht, dass "je größer die Variable X, desto größer die Variable Y" ** Angenommen, es gibt einen Kausalzusammenhang zwischen Variable X und Variable Y **.
Was ist der Unterschied zum Korrelationskoeffizienten, wenn Sie dieses Wort hören? Ich werde den Unterschied erklären, weil einige Leute die Frage haben können. Sie haben vielleicht die berühmte Geschichte gehört ** "Je mehr Schokolade die Menschen konsumieren, desto mehr Nobelpreisträger" **. In der Abbildung scheint es eine Korrelation zwischen diesen beiden Variablen zu geben. Es ist jedoch eine andere Frage, ob zwischen diesen beiden Variablen ein ** Kausalzusammenhang ** besteht oder nicht.
Im Allgemeinen ist Schokolade ein Luxusartikel, und wohlhabende Länder konsumieren wahrscheinlich mehr. Je reicher das Land ist, desto mehr Geld wird es für Bildung ausgeben und desto wahrscheinlicher ist es, dass es Nobelpreisträger hervorbringt. Wie in der folgenden Abbildung dargestellt, wird daher davon ausgegangen, dass Variablen wie das "Pro-Kopf-BIP", ein Index, der den Wohlstand anzeigt, miteinander zusammenhängen.
Eine solche gefälschte Korrelation wird als ** Pseudokorrelation ** bezeichnet, und die Variable, die die Pseudokorrelation erzeugt, wird als ** Verschränkungsfaktor ** bezeichnet. Pseudokorrelierte Variablen haben ** keinen Kausalzusammenhang **. Wenn Sie jedoch den Korrelationskoeffizienten berechnen, ist dieser ein ziemlich großer positiver Wert, sodass eine ** Korrelation ** vorliegt.
Hier werde ich die Begriffe noch einmal zusammenfassen.
In Bezug auf die Kausalität ist der Punkt, dass je größer X ** ist, desto größer ** Y ist. Außerdem nimmt in jeder Beziehung der Absolutwert des Korrelationskoeffizienten einen großen Wert an, also Diese können nicht nur durch den Korrelationskoeffizienten unterschieden werden.
Referenz: Steigt die Zahl der Nobelpreisträger mit zunehmendem Schokoladenkonsum?
Anhand der bisherigen Inhalte werde ich die Methode zur Suche nach Existenz und Richtung des ** Kausalzusammenhangs ** erläutern. In diesem Artikel werde ich sehr kurz auf SAM (Structural Agnostic Modeling) [2018] eingehen, eine kausale Suchmethode mit Deep Learning / GAN. Ich möchte das berühmteste basianische Netzwerk in einem anderen Artikel erläutern.
SAM ist eine Methode, die die kausale Suche mithilfe der GAN-Technologie (Generative Adversarial Network) von Deep Learning realisiert. Im Allgemeinen besteht GAN grob aus einem Generator und einem Klassifikator und hat jeweils die folgenden Rollen. --Generator: Gibt Rauschen ein und generiert gefälschte Daten, die nahe an den trainierten Daten liegen. --Identifier: Gibt an, ob die Eingabedaten echt oder falsch sind
In SAM wird ** eine Matrix, die die Ursache und Wirkung der Anzahl der erklärenden Variablen x die Anzahl der erklärenden Variablen ** darstellt, an die Vorwärtsfunktion des Generators gegeben, und diese Matrix wird auch gelernt, wenn der Generator trainiert wird. Die Matrix hat einen Wert von 0 bis 1, und der Teil mit einem Wert über dem Schwellenwert wird als kausal beurteilt. Das Bild sieht wie folgt aus. (Schwellenwert ist 0,9)
Dies ist eine ziemlich grobe Erklärung. Wenn Sie jedoch weitere Einzelheiten erfahren möchten, lesen Sie bitte die folgenden Dokumente.
SAM (Structural Agnostic Modeling) [2018] Ein Beispiel für die Python-Implementierung wird beschrieben.
Laden Sie ** SAM_titanic.ipynb ** und ** titanic.csv ** vom GitHub unten herunter. https://github.com/yuomori0127/SAM_titanic
Wenn Sie den Code in Google Colab sehen möchten, klicken Sie hier [https://colab.research.google.com/drive/1eZmDN48eTV69CZmHzQt_T7KoT_IVj7bC?authuser=2#scrollTo=LdgNruwmJkxj/)
Die verwendete Umgebung ** Google Colab **. Informationen zur Verwendung finden Sie im folgenden Artikel. Die Servergebühr ist kostenlos. Zusammenfassung der Verwendung von Google Colab
Legen Sie die beiden zuvor heruntergeladenen Dateien in einem beliebigen Ordner von ** GooleDrive ** ab.
Öffnen Sie ** SAM_titanic.ipynb ** von ** Goole Drive ** in ** Google Colab **.
Zunächst benötigen Sie eine GPU-Ähnlichkeit.
Führen Sie oben ! Nvidia-smi
aus (Umschalt + Eingabetaste) und ähneln Sie, bis Sie Tesla P100 sehen.
Sie können innerhalb von 5 Mal schließen.
Sie können es wie folgt zurücksetzen.
Bitte ändern Sie den Ordnernamen (causal_book-Teil) des folgenden Codes in den Ordnernamen, in dem sich .ipynb und csv auf Google Drive befinden.
import os
os.chdir("./drive/My Drive/causal_book/")
Wenn Sie "Laufzeit" ausführen -> "Alle Verarbeitung ausführen", werden alle ausgeführt.
Das Folgende ist eine Zusammenfassung der Ausführungsergebnisse. (Schwellenwert 0,6)
Das Ergebnis war, dass die Zielvariable Survived schwebte (keine erklärende Variable hat Ursache und Wirkung).
Ich konnte mit Deep Learning / GAN eine kausale Suche durchführen, aber es gibt verschiedene Probleme. ・ ** SAM hat eine sehr hohe Zufälligkeit und das Lernergebnis ist überhaupt nicht stabil ** Das Ausführungsbeispiel verwendet den Durchschnittswert der Ergebnisse der fünfmaligen Ausführung. Das Papier war durchschnittlich 16 Mal. ・ ** Ausgabeergebnis kann nicht ausgewertet werden ** In der Arbeit wurde die Bewertung unter Verwendung von AP und Brummdistanz unter der Voraussetzung vorgenommen, dass eine korrekte Antwort vorliegt, dies ist jedoch im tatsächlichen Betrieb nicht möglich. Ich wünschte, es gäbe so etwas wie Perprexität. ・ ** Diskrete Werte können nicht so verwendet werden, wie sie sind, daher haben die erklärenden Variablen nach get_dummies einen kausalen Effekt ** Dies kann mein Mangel an Studium sein. In Anbetracht des tatsächlichen Betriebs wie diesem gibt es viele schwierige Punkte. Es könnte ein Bereich sein, der sich in Zukunft weiterentwickeln wird.
Recommended Posts