Weitere Beispiel -Notizbücher finden Sie hier!
Die Entscheidungsfindung beinhaltet das Verständnis, wie unterschiedliche Variablen sich auf einander auswirken und das Ergebnis vorhersagen, wenn einige von ihnen in neue Werte geändert werden. Zum Beispiel kann man angesichts einer Ergebnisvariablen daran interessiert sein, festzustellen, wie sich eine potenzielle Aktion auswirken kann, das zu verstehen, was zu ihrem aktuellen Wert geführt hat, oder zu simulieren, was passieren würde, wenn einige Variablen geändert würden. Die Beantwortung solcher Fragen erfordert kausale Argumentation. Dowhy ist eine Python -Bibliothek, die Sie durch die verschiedenen Schritte des kausalen Denkens führt und eine einheitliche Schnittstelle zur Beantwortung kausaler Fragen bietet.
Dowhy liefert eine Vielzahl von Algorithmen zur Effektschätzung, Vorhersage, Quantifizierung kausaler Einflüsse, Diagnose kausaler Strukturen, Ursachenanalyse, Interventionen und Kontrafakten. Ein wesentliches Merkmal von Dowhy ist seine Widerlegung und Fälschungs-API, die kausale Annahmen für jede Schätzungsmethode testen kann, wodurch die Inferenz für Nicht-Experten robuster und zugänglicher wird.
Grafische Kausalmodelle und mögliche Ergebnisse: Beste aus beiden Welten
Dowhy baut auf zwei der leistungsstärksten Rahmenbedingungen für die kausale Inferenz auf: grafische Kausalmodelle und mögliche Ergebnisse. Für die Effektschätzung verwendet es graphbasierte Kriterien und Do-Kalkulus für die Modellierung von Annahmen und die Identifizierung eines nichtparametrischen kausalen Effekts. Für die Schätzung wechselt es auf Methoden, die hauptsächlich auf potenziellen Ergebnissen basieren.
Für kausale Fragen, die über die Effektschätzung hinausgehen, wird die Leistung grafischer Kausalmodelle verwendet, indem der Datenerzeugungsprozess über explizite Kausalmechanismen an jedem Knoten modelliert wird, die beispielsweise Funktionen freischalten, um beobachtete Effekte auf bestimmte Variablen zuzuschreiben oder punktgezogene kontrafaktische zu schätzen.
Für eine kurze Einführung in die kausale Inferenz finden Sie unter Amit-Sharma/Kausalinferenz-Tutorial auch ein umfassenderes Tutorial auf der Konferenz für ACM Knowledge Discovery and Data Mining (KDD 2018): Kausalinferenz.gitlab.io/kdd-Tutorial. Für eine Einführung in die vier Schritte der kausalen Inferenz und deren Auswirkungen auf das maschinelle Lernen können Sie von Microsoft Research Dowhy Webinar auf dieses Video -Tutorial zugreifen und eine Einführung in die grafische Kausalmodell -API finden Sie in der Pycon -Präsentation zur Ursachenanalyse mit Dowhy.
Dowhy unterstützt die folgenden kausalen Aufgaben:
Weitere Informationen und die Verwendung dieser Methoden in der Praxis finden Sie in der Dokumentation unter https://py-why.github.io/dowhy
Dowhy -Stütze Python 3.8+. Zur Installation können Sie PIP, Poesie oder Conda verwenden.
Letzte Veröffentlichung
Installieren Sie die neueste Version mit PIP.
pip install dowhy
Installieren Sie die neueste Version mit Poesie.
poetry add dowhy
Installieren Sie die neueste Version mit Conda.
conda install -c conda-forge dowhy
Wenn Sie Probleme mit Conda mit "Lösungsumgebung" haben, versuchen Sie es conda update --all
und dann Dowhy installieren. Wenn dies nicht funktioniert, verwenden Sie conda config --set channel_priority false
und versuchen Sie erneut zu installieren. Wenn das Problem weiterhin besteht, fügen Sie hier Ihr Problem hinzu.
Entwicklungsversion
Wenn Sie es vorziehen, die neueste Entwicklerversion zu verwenden, muss Ihr Abhängigkeitsmanagement -Tool auf unser GitHub -Repository verweisen.
pip install git+https://github.com/py-why/dowhy@main
Anforderungen
Dowhy erfordert einige Abhängigkeiten. Details zu bestimmten Versionen finden Sie in PYProject.toml unter dem Abschnitt "Tool.Poetry.Dependencies".
Wenn Sie Probleme haben, versuchen Sie, Abhängigkeiten manuell zu installieren.
pip install ' <dependency-name>==<version> '
Installieren Sie optional, wenn Sie Diagramme im DOT -Format eingeben möchten, PyDOT (oder Pygraphviz).
Für besser aussehende Grafiken können Sie pygraphviz optional installieren. Um fortzufahren, installieren Sie zuerst Graphviz und dann Pygraphviz (auf Ubuntu und Ubuntu WSL).
Notiz
Das Installieren von Pygraphviz kann auf einigen Plattformen Probleme verursachen. Ein Weg, der für die meisten Linux -Verteilungen funktioniert, besteht darin, zuerst Graphviz und dann Pygraphviz wie unten gezeigt zu installieren. Andernfalls wenden Sie sich bitte an die Dokumentation von Pygraphviz.
sudo apt install graphviz libgraphviz-dev graphviz-dev pkg-config
pip install --global-option=build_ext
--global-option= " -I/usr/local/include/graphviz/ "
--global-option= " -L/usr/local/lib/graphviz " pygraphviz
Die meisten kausalen Aufgaben in Dowhy erfordern nur wenige Codezeilen zum Schreiben. Hier schätzen wir beispielhaft den kausalen Effekt einer Behandlung auf eine Ergebnisvariable:
from dowhy import CausalModel
import dowhy . datasets
# Load some sample data
data = dowhy . datasets . linear_dataset (
beta = 10 ,
num_common_causes = 5 ,
num_instruments = 2 ,
num_samples = 10000 ,
treatment_is_binary = True )
Ein Kausalzita kann auf unterschiedliche Weise definiert werden, aber der häufigste Weg ist über NetworkX. Nach dem Laden der Daten verwenden wir die vier Hauptvorgänge für die Effektschätzung in Dowhy: Modell , identifizieren , schätzen und widerlegen :
# I. Create a causal model from the data and given graph.
model = CausalModel (
data = data [ "df" ],
treatment = data [ "treatment_name" ],
outcome = data [ "outcome_name" ],
graph = data [ "gml_graph" ]) # Or alternatively, as nx.DiGraph
# II. Identify causal effect and return target estimands
identified_estimand = model . identify_effect ()
# III. Estimate the target estimand using a statistical method.
estimate = model . estimate_effect ( identified_estimand ,
method_name = "backdoor.propensity_score_matching" )
# IV. Refute the obtained estimate using multiple robustness checks.
refute_results = model . refute_estimate ( identified_estimand , estimate ,
method_name = "random_common_cause" )
Dowhy belastet die Interpretierbarkeit seiner Ausgabe. Zu jedem Zeitpunkt in der Analyse können Sie die nicht getesteten Annahmen, identifizierte Schätzungen (falls vorhanden) und die Schätzung (falls vorhanden) inspizieren. Hier ist eine Beispielausgabe des linearen Regressionsschätzers:
Für ein volles Code -Beispiel finden Sie den ersten Start mit Dowhy Notebook.
Sie können auch die Schätzungsmethoden für bedingte Durchschnittsbehandlungseffekte (CATE) aus ECONML verwenden, wie im Notebook für bedingte Behandlungseffekte gezeigt. Hier ist ein Code -Snippet.
from sklearn . preprocessing import PolynomialFeatures
from sklearn . linear_model import LassoCV
from sklearn . ensemble import GradientBoostingRegressor
dml_estimate = model . estimate_effect ( identified_estimand , method_name = "backdoor.econml.dml.DML" ,
control_value = 0 ,
treatment_value = 1 ,
target_units = lambda df : df [ "X0" ] > 1 ,
confidence_intervals = False ,
method_params = {
"init_params" :{ 'model_y' : GradientBoostingRegressor (),
'model_t' : GradientBoostingRegressor (),
'model_final' : LassoCV (),
'featurizer' : PolynomialFeatures ( degree = 1 , include_bias = True )},
"fit_params" :{}})
Das grafische Kausalmodell -Framework von Dowhy bietet leistungsstarke Werkzeuge, um kausale Fragen über die Effektschätzung hinauszugehen. Es basiert auf dem grafischen Kausalmodell -Framework von Pearl und modelliert den kausalen Datenerzeugungsprozess jeder Variablen explizit über Kausalmechanismen, um einen weiten Bereich von Kausalalgorithmen zu unterstützen. Weitere Informationen finden Sie in den Buchelementen der kausalen Inferenz.
Komplexe kausale Abfragen, wie z. B. die zu beobachteten Anomalien zu Knoten im System zuzuweisen, können mit nur wenigen Codezeilen durchgeführt werden:
import networkx as nx , numpy as np , pandas as pd
from dowhy import gcm
# Let's generate some "normal" data we assume we're given from our problem domain:
X = np . random . normal ( loc = 0 , scale = 1 , size = 1000 )
Y = 2 * X + np . random . normal ( loc = 0 , scale = 1 , size = 1000 )
Z = 3 * Y + np . random . normal ( loc = 0 , scale = 1 , size = 1000 )
data = pd . DataFrame ( dict ( X = X , Y = Y , Z = Z ))
# 1. Modeling cause-effect relationships as a structural causal model
# (causal graph + functional causal models):
causal_model = gcm . StructuralCausalModel ( nx . DiGraph ([( 'X' , 'Y' ), ( 'Y' , 'Z' )])) # X -> Y -> Z
gcm . auto . assign_causal_mechanisms ( causal_model , data )
# 2. Fitting the SCM to the data:
gcm . fit ( causal_model , data )
# Optional: Evaluate causal model
print ( gcm . evaluate_causal_model ( causal_model , data ))
# Step 3: Perform a causal analysis.
# results = gcm.<causal_query>(causal_model, ...)
# For instance, root cause analysis:
anomalous_sample = pd . DataFrame ( dict ( X = [ 0.1 ], Y = [ 6.2 ], Z = [ 19 ])) # Here, Y is the root cause.
# "Which node is the root cause of the anomaly in Z?":
anomaly_attribution = gcm . attribute_anomalies ( causal_model , "Z" , anomalous_sample )
# Or sampling from an interventional distribution. Here, under the intervention do(Y := 2).
samples = gcm . interventional_samples ( causal_model , interventions = { 'Y' : lambda y : 2 }, num_samples_to_draw = 100 )
Das GCM -Framework bietet über diese Beispiele hinaus viel mehr Funktionen. Für einen vollständigen Code -Beispiel finden Sie das Notebook zum Online -Shop -Beispiel.
Weitere Funktionen, Beispielanwendungen von Dowhy und Details zu den Ausgängen finden Sie im Benutzerhandbuch oder im Checkout Jupyter -Notizbücher.
Microsoft Research Blog | Video -Tutorial zur Effektschätzung | Video -Tutorial für Ursachenanalyse | Arxiv Papier | ARXIV -Papier (Grafische Kausalmodellverlängerung) | Folien
Wenn Sie Dowhy für Ihre Arbeit nützlich finden, zitieren Sie bitte beide folgenden zwei Referenzen:
Bibtex:
@Article {dowhy, Titel = {Dowhy: Eine End-to-End-Bibliothek für kausale Inferenz}, Autor = {Sharma, Amit und Kiciman, Emre}, Journal = {Arxiv Preprint Arxiv: 2011.04216}, Jahr = {2020} } @Article {jmlr: v25: 22-1258, Autor = {Patrick Bl {{ "O}} Baum und Peter G {{" o}} TZ und Kailash Budhathoki und Atalanti A. Mastakouri und Dominik Janzing}, Titel = {Dowhy-GCM: Eine Erweiterung von Dowhy zur kausalen Inferenz in grafischen Kausalmodellen}, Journal = {Journal of Machine Learning Research}, Jahr = {2024}, Volume = {25}, Nummer = {147}, Seiten = {1--7}, url = {http://jmlr.org/papers/v25/22-1258.html}} }
Wenn Sie auf ein Problem stoßen oder eine bestimmte Anfrage nach Dowhy haben, stellen Sie bitte ein Problem an.
Dieses Projekt begrüßt Beiträge und Vorschläge. Für einen Leitfaden für den Beitrag und eine Liste aller Mitwirkenden finden Sie unter den beitragen.md und in unseren Dokumenten für den beitragenden Code. Unser Verhaltenskodex für den Beitrag ist hier verfügbar.