deepecon

deepcausal

##ai ##deeplearning ##set_deepecon

Description

L'action deepecon.deepcausal (ou l'art de l'inférence causaleGemini said

L’inférence causale est une méthode statistique mesurant l’effet réel d’une variable sur une autre en isolant les corrélations trompeuses, afin d’établir des liens de cause à effet directs.
sous stéroïdes neuronaux) permet d'estimer les effets causauxMesure de l'impact direct d'une intervention ou d'un traitement sur un résultat, isolée des autres variables grâce à des méthodes statistiques comme le score de propension. en utilisant des architectures de deep learningSous-ensemble du Machine Learning basé sur des réseaux de neurones artificiels profonds. Il excelle dans l'extraction automatique de motifs complexes depuis des données brutes (images, texte, son).. Plutôt que de s'appuyer sur des méthodes statistiques classiques, elle entraîne un réseau de neuronesUn réseau de neurones est un modèle d'IA bio-inspiré composé de couches de nœuds interconnectés, capable d'apprendre des relations complexes dans les données pour prédire ou classifier avec précision. pour modéliser le résultat (outcomeVariable dépendante ou cible mesurant l'effet d'un traitement ou d'une intervention. En modélisation prédictive, il s'agit du résultat observé que l'on cherche à expliquer ou à prévoir.) et un autre pour le score de propension . Idéal pour répondre à la fameuse question 'Est-ce une corrélation ou une causalité ?' en exploitant toute la puissance de calcul de Viya.

Syntaxe Officielle
proc cas;
deepecon.deepcausal /
table={name="table_name", caslib="caslib_name"}
id="id_variable"
model={outcome="Y", covariates={"X1", "X2"}, dnn={nodes={32, 16}}}
psmodel={treatment="T", covariates={"X1", "X2"}, dnn={nodes={32, 16}}}
infer={policy={"T"}, out={name="out_est", replace=True}, outDetails={name="out_details", replace=True}}
;
run;

Paramètres Clés

Nom du paramètre Description
table La table d'entrée contenant les données d'observation. C'est ici que la magie commence.
id La variable d'identification unique pour chaque ligne (indispensable pour garder le fil et générer les sorties détaillées).
model Spécifie le modèle de la variable de résultat (outcome), avec ses covariables et la configuration de son réseau de neurones dédié .
psmodel Spécifie le modèle de score de propension, c'est-à-dire la probabilité de recevoir le traitement, avec ses propres covariables et configuration de réseau.
infer Définit les paramètres d'inférence, notamment les politiques de traitement à évaluer et les tables de destination pour les résultats (out et outDetails).
dnn Paramètres d'architecture globale des réseaux de neurones (nombre de nœuds par couche, options d'entraînement comme le taux d'apprentissage, les époques et le type d'optimiseur).
score Optionnel. Permet d'injecter des tables de données d'inférence si vos sous-modèles (alpha, beta, propensity score ou outcome) ont déjà été préalablement entraînés.

Préparation des données

Génération de données causales (Le laboratoire du savant fou)

Nous allons créer une table contenant un traitement binaire T, un résultat continu Y et des covariables X pour tester notre modèle et voir s'il détecte le vrai lien causal.

1DATA public.causal_data; call streaminit(12345); DO id = 1 to 1000; X1 = rand("Normal"); X2 = rand("Uniform"); prob_T = exp(0.5*X1 - 0.5*X2) / (1 + exp(0.5*X1 - 0.5*X2)); IF rand("Uniform") < prob_T THEN T = 1; ELSE T = 0; Y = 2.5 * T + 1.5 * X1 + 0.8 * X2 + rand("Normal"); OUTPUT; END; RUN;

Exemples d'utilisation

Inférence causale basique

Un lancement classique pour évaluer l'effet du traitement T sur le résultat Y en utilisant un réseau de neurones modeste (une couche cachée de 16 nœuds pour chaque modèle).

1PROC CAS; deepecon.deepcausal / TABLE={name="causal_data", caslib="public"} id="id" model={outcome="Y", covariates={"X1", "X2"}, dnn={nodes={16}, train={maxEpochs=20, optimizer={algorithm={method="ADAM"}}}}} psmodel={treatment="T", covariates={"X1", "X2"}, dnn={nodes={16}, train={maxEpochs=20, optimizer={algorithm={method="ADAM"}}}}} infer={policy={"T"}, out={name="causal_out", caslib="public", replace=True}}; RUN;
Résultat Attendu :
Création de la table `causal_out` dans la librairie public, contenant l'effet moyen du traitement (ATE) estimé avec succès par les réseaux de neurones.
Inférence causale avancée avec comparaison de politiques et régularisation

Configuration avancée avec des architectures plus profondes (couches de 32 puis 16 nœuds) définies globalement, ajout de régularisation L1/L2, et exportation des détails de scoring individuels pour une analyse microscopique.

1PROC CAS; deepecon.deepcausal / TABLE={name="causal_data", caslib="public"} id="id" dnn={nodes={32, 16}, train={maxEpochs=50, miniBatchSize=32, optimizer={algorithm={method="ADAM"}, regL1=0.001, regL2=0.001}}} model={outcome="Y", covariates={"X1", "X2"}} psmodel={treatment="T", covariates={"X1", "X2"}} infer={policy={"T"}, policyComparison={base={"T"}, compare={"T"}}, out={name="causal_out_adv", caslib="public", replace=True}, outDetails={name="causal_details", caslib="public", replace=True}}; RUN;
Résultat Attendu :
Génération de la table agrégée `causal_out_adv` pour l'effet causal global et `causal_details` contenant les scores de propension, prédictions et fonctions d'influence pour chaque observation.