[PYTHON] [Recherche causale / inférence causale] Effectuer une recherche causale (SAM) à l'aide du Deep Learning

Récemment, j'ai étudié ** le raisonnement causal / la recherche causale **, donc Décrit un exemple d'implémentation Python de SAM (Structural Agnostic Modeling) [2018], qui est une méthode de ** recherche causale ** utilisant DeepLearning / GAN. Je vais. Je voudrais publier un exemple d'implémentation du réseau Basin le plus célèbre dans un article séparé à une date ultérieure.

Cet article est pour SAM uniquement. Les données utilisées étaient données Titanic.

table des matières

  1. [Objectif](# 1-Objectif)
  2. [Qu'est-ce qu'une relation causale](# 2-Qu'est-ce qu'une relation causale)
  3. [Qu'est-ce que SAM](Qu'est-ce que # 3-sam)
  4. [Exemple de mise en œuvre](# 4-Exemple de mise en œuvre)
  5. [Télécharger le code et les données](# 4-1-Télécharger le code et les données)
  6. [Préparation environnementale](# 4-2-Préparation environnementale)
  7. [Exécution de code](# 4-3-Execution de code)
  8. [Enfin](# 5-Enfin)

1. Objet

Le but est de ** rechercher l'existence et la direction des relations causales ** à partir des données, comme le montre la figure ci-dessous. C'est ce qu'on appelle la ** recherche causale **. 因果探索.png

Par contre, l'estimation de l'ampleur de ces relations causales (flèches) est appelée ** inférence causale **.

2. Qu'est-ce qu'une relation causale?

Tout d'abord, je vais expliquer brièvement ce qu'est une ** relation causale **. S'il y a une tendance selon laquelle "plus la variable X est grande, plus la variable Y est grande" ** Supposons qu'il existe une relation causale entre la variable X et la variable Y **.

Quand vous entendez ce mot, quelle est la différence avec le coefficient de corrélation? Certaines personnes peuvent avoir la question, alors je vais expliquer la différence. Vous avez peut-être entendu la célèbre histoire ** «Plus les gens consomment de chocolat, plus il y a de prix Nobel» **. 図1.png En regardant la figure, il semble y avoir une corrélation entre ces deux variables. Cependant, l'existence ou non d'une ** relation causale ** entre ces deux variables est une autre question.

En général, le chocolat est un produit de luxe et les pays riches sont susceptibles d'en consommer davantage. De plus, plus le pays est riche, plus il dépensera d’argent pour l’éducation et plus il est probable qu’il produira des prix Nobel. Par conséquent, comme le montre la figure ci-dessous, on considère que des variables telles que le «PIB par habitant», qui est un indice montrant la richesse, sont liées.

図2.png Une telle fausse corrélation est appelée ** pseudo-corrélation **, et la variable qui produit la pseudo-corrélation est appelée ** facteur d'intrication **. Les variables pseudo-corrélées ne sont ** pas considérées comme ayant une relation causale **. Cependant, si vous calculez le coefficient de corrélation, ce sera une valeur positive assez grande, donc il y a une ** corrélation **.

Ici, je vais résumer à nouveau les termes.

--Il existe une corrélation: ** Lorsque la valeur de la variable X est grande, la variable Y a également tendance à être grande ** --Il existe une relation causale: ** Plus la valeur de la variable X est élevée, plus la variable Y a tendance à l'être ** --Pseudo-corrélation: les variables X et Y sont corrélées mais non causales

En termes de causalité, le fait est que plus X est grand **, plus ** Y est grand. De plus, dans toute relation, la valeur absolue du coefficient de corrélation prend une valeur élevée, donc Ceux-ci ne peuvent pas être distingués uniquement par le coefficient de corrélation.

Référence: Le nombre de lauréats du prix Nobel augmente-t-il à mesure que la consommation de chocolat augmente?

3. Qu'est-ce que SAM?

Sur la base du contenu jusqu'à présent, je vais expliquer la méthode de recherche de l'existence et de la direction de la ** relation causale **. Dans cet article, j'expliquerai très brièvement SAM (Structural Agnostic Modeling) [2018], qui est une méthode de recherche causale utilisant Deep Learning / GAN. Je voudrais expliquer le réseau Basian le plus célèbre dans un autre article.

3-1. Aperçu

SAM est une méthode qui réalise une recherche causale en utilisant la technologie GAN (Generative Adversarial Network) de Deep Learning. En général, le GAN est composé à peu près d'un générateur et d'un classificateur, et chacun a les rôles suivants. --Generator: entre du bruit et génère de fausses données proches des données entraînées. --Identifier: identifie si les données d'entrée sont authentiques ou fausses

Dans SAM, ** une matrice représentant la cause et l'effet du nombre de variables explicatives x le nombre de variables explicatives ** est donnée à la fonction avant du générateur, et cette matrice est également apprise lorsque le générateur est entraîné. La matrice a une valeur de 0 à 1 et la partie avec une valeur supérieure au seuil est jugée causale. L'image sera la suivante. (Le seuil est de 0,9) 因果探索2.png

Ceci est une explication assez approximative, mais si vous souhaitez en savoir plus, veuillez vous référer aux documents suivants.

4. Exemple de mise en œuvre

SAM (Structural Agnostic Modeling) [2018] Un exemple d'implémentation Python est décrit.

4-1. Télécharger le code et les données

Téléchargez ** SAM_titanic.ipynb ** et ** titanic.csv ** à partir du GitHub ci-dessous. https://github.com/yuomori0127/SAM_titanic

Si vous souhaitez voir le code sur Google Colab, cliquez ici [https://colab.research.google.com/drive/1eZmDN48eTV69CZmHzQt_T7KoT_IVj7bC?authuser=2#scrollTo=LdgNruwmJkxj/)

4-2. Préparation de l'environnement

L'environnement utilisé ** Google Colab **. Consultez l'article suivant pour savoir comment l'utiliser. Les frais de serveur sont gratuits. Résumé de l'utilisation de Google Colab

Placez les deux fichiers que vous avez téléchargés précédemment dans n'importe quel dossier de ** GooleDrive **.

4-3. Exécution du code

Ouvrez ** SAM_titanic.ipynb ** à partir de ** Goole Drive ** dans ** Google Colab **.

Tout d'abord, vous avez besoin d'un resemara GPU. Exécutez ! Nvidia-smi en haut (Maj + Entrée) et ressemblez jusqu'à ce que vous voyiez Tesla P100. Vous pouvez fermer dans les 5 fois. nvideasmi.png

Vous pouvez le réinitialiser à partir des éléments suivants. リセマラ.png

Veuillez remplacer le nom du dossier (partie causal_book) du code ci-dessous par le nom du dossier où .ipynb et csv sont placés sur Google Drive.

import os
os.chdir("./drive/My Drive/causal_book/")

Si vous exécutez Runtime-> ʻExécuter tous les traitements`, tout sera exécuté.

Voici un résumé des résultats de l'exécution. (Seuil 0,6) 因果探索3.png

Le résultat était que la variable objective Survived flottait (aucune variable explicative n'a de cause à effet).

5. Enfin

J'ai pu effectuer une recherche causale en utilisant Deep Learning / GAN, mais il y a plusieurs problèmes. ・ ** SAM a un caractère aléatoire très élevé et le résultat d'apprentissage n'est pas du tout stable ** L'exemple d'exécution prend la valeur moyenne des résultats de l'exécution 5 fois. Le papier était en moyenne 16 fois. ・ ** Le résultat de sortie ne peut pas être évalué ** Dans l'article, l'évaluation a été faite en utilisant AP et la distance de bourdonnement sur la prémisse qu'il y avait une réponse correcte, mais ce n'est pas possible en fonctionnement réel. J'aurais aimé qu'il y ait quelque chose comme la perprexité. ・ ** Les valeurs discrètes ne peuvent pas être utilisées telles quelles, donc les variables explicatives après get_dummies auront un effet causal ** C'est peut-être mon manque d'étude. Compte tenu du fonctionnement réel comme celui-ci, il y a de nombreux points difficiles. C'est peut-être un domaine qui continuera à se développer à l'avenir.

Les références

Recommended Posts

[Recherche causale / inférence causale] Effectuer une recherche causale (SAM) à l'aide du Deep Learning
Raisonnement causal utilisant l'apprentissage automatique (organisation des méthodes de raisonnement causal)
J'ai essayé l'apprentissage en profondeur avec Theano
Modèle de reconnaissance d'image utilisant l'apprentissage profond en 2016
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow)
L'apprentissage en profondeur
Un amateur a essayé le Deep Learning avec Caffe (Introduction)
Raisonnement causal et recherche causale par Python (pour les débutants)
Un amateur a essayé le Deep Learning en utilisant Caffe (Practice)
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow) - Partie 2
Un amateur a essayé le Deep Learning avec Caffe (Vue d'ensemble)
Prévision du cours de l'action à l'aide du Deep Learning [acquisition de données]
Mémorandum d'apprentissage profond
Commencer l'apprentissage en profondeur
Apprentissage profond × Python
Réflexion sur les tactiques de croissance de type attaque de groupe en utilisant l'apprentissage en profondeur
[Deep Learning] Exécuter la console de réseau neuronal SONY à partir de CUI
[Apprentissage automatique] Essayez de détecter des objets à l'aide de la recherche sélective
Collecte et automatisation d'images érotiques à l'aide du deep learning