deepcausal
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.
Paramètres Clé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.
| 1 | DATA 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).
| 1 | PROC 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 :
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.
| 1 | PROC 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; |