Untuk lebih banyak contoh notebook, lihat di sini!
Pengambilan keputusan melibatkan pemahaman bagaimana variabel yang berbeda mempengaruhi satu sama lain dan memprediksi hasil ketika beberapa dari mereka diubah menjadi nilai-nilai baru. Misalnya, dengan variabel hasil, orang mungkin tertarik untuk menentukan bagaimana tindakan potensial dapat mempengaruhi itu, memahami apa yang mengarah pada nilai saat ini, atau mensimulasikan apa yang akan terjadi jika beberapa variabel diubah. Menjawab pertanyaan seperti itu membutuhkan penalaran kausal. Dowhy adalah perpustakaan Python yang memandu Anda melalui berbagai langkah penalaran kausal dan menyediakan antarmuka terpadu untuk menjawab pertanyaan kausal.
Dowhy menyediakan berbagai macam algoritma untuk estimasi efek, prediksi, kuantifikasi pengaruh kausal, diagnosis struktur kausal, analisis akar penyebab, intervensi dan kontrafaktual. Fitur utama dari Dowhy adalah penolakannya dan API pemalsuan yang dapat menguji asumsi kausal untuk metode estimasi apa pun, sehingga membuat inferensi lebih kuat dan dapat diakses oleh non-ahli.
Model kausal grafis dan hasil potensial: terbaik dari kedua dunia
Dowhy membangun dua kerangka kerja paling kuat untuk inferensi kausal: model kausal grafis dan hasil potensial. Untuk estimasi efek, ia menggunakan kriteria berbasis grafik dan do-calculus untuk memodelkan asumsi dan mengidentifikasi efek kausal non-parametrik. Untuk estimasi, ia beralih ke metode berdasarkan terutama pada hasil potensial.
Untuk pertanyaan kausal di luar estimasi efek, ia menggunakan kekuatan model kausal grafis dengan memodelkan proses pembuatan data melalui mekanisme kausal eksplisit di setiap node, yang, misalnya, membuka kemampuan untuk menghubungkan efek yang diamati dengan variabel tertentu atau memperkirakan kontrafaktual titik-bijaksana.
Untuk pengantar cepat untuk inferensi kausal, lihat Amit-Sharma/Kausal-Inferensi-Tutorial Kami juga memberikan tutorial yang lebih komprehensif di ACM Knowledge Discovery and Data Mining (KDD 2018) Konferensi: Causalinference.gitlab.io/KDD-TUTORIAL. Untuk pengantar empat langkah inferensi kausal dan implikasinya untuk pembelajaran mesin, Anda dapat mengakses tutorial video ini dari Microsoft Research Dowhy Webinar dan untuk pengantar API model kausal grafis, lihat presentasi PyCon tentang analisis akar penyebab dengan dowhy.
Dowhy mendukung tugas -tugas kausal berikut:
Untuk detail lebih lanjut dan cara menggunakan metode ini dalam praktiknya, periksa dokumentasi di https://py-why.github.io/dowhy
Dowhy mendukung Python 3.8+. Untuk menginstal, Anda dapat menggunakan pip, puisi, atau conda.
Rilis terbaru
Pasang rilis terbaru menggunakan PIP.
pip install dowhy
Instal rilis terbaru menggunakan puisi.
poetry add dowhy
Instal rilis terbaru menggunakan Conda.
conda install -c conda-forge dowhy
Jika Anda menghadapi masalah "menyelesaikan lingkungan" dengan Conda, maka coba conda update --all
dan kemudian instal Dowhy. Jika itu tidak berfungsi, maka gunakan conda config --set channel_priority false
dan cobalah untuk menginstal lagi. Jika masalah tetap ada, silakan tambahkan masalah Anda di sini.
Versi Pengembangan
Jika Anda lebih suka menggunakan versi DEV terbaru, alat manajemen ketergantungan Anda perlu menunjuk di repositori GitHub kami.
pip install git+https://github.com/py-why/dowhy@main
Persyaratan
Dowhy membutuhkan beberapa dependensi. Rincian tentang versi tertentu dapat ditemukan di bagian PyProject.toml, di bawah bagian Tool.poetry.dependensi.
Jika Anda menghadapi masalah, cobalah menginstal dependensi secara manual.
pip install ' <dependency-name>==<version> '
Secara opsional, jika Anda ingin memasukkan grafik dalam format DOT, maka instal pydot (atau pygraphviz).
Untuk grafik yang terlihat lebih baik, Anda dapat menginstal PyGraphviz secara opsional. Untuk melanjutkan, instal pertama GraphViz dan kemudian PyGraphviz (di Ubuntu dan Ubuntu WSL).
Catatan
Menginstal Pygraphviz dapat menyebabkan masalah pada beberapa platform. Salah satu cara yang berfungsi untuk sebagian besar distribusi Linux adalah dengan terlebih dahulu menginstal GraphViz dan kemudian PyGraphViz seperti yang ditunjukkan di bawah ini. Jika tidak, silakan berkonsultasi dengan dokumentasi 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
Sebagian besar tugas kausal di Dowhy hanya membutuhkan beberapa baris kode untuk ditulis. Di sini, kami memperkirakan efek kausal dari suatu pengobatan pada variabel hasil:
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 )
Grafik kausal dapat didefinisikan dengan cara yang berbeda, tetapi cara yang paling umum adalah melalui NetworkX. Setelah memuat dalam data, kami menggunakan empat operasi utama untuk estimasi efek di Dowhy: Model , Identifikasi , Ekstimasi , dan Bilang :
# 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 menekankan interpretabilitas outputnya. Pada titik mana pun dalam analisis, Anda dapat memeriksa asumsi yang belum diuji, estimasi yang diidentifikasi (jika ada), dan perkiraan (jika ada). Berikut output sampel dari estimator regresi linier:
Untuk contoh kode lengkap, periksa Notebook Dowhy yang dimulai dengan Dowhy.
Anda juga dapat menggunakan metode estimasi efek pengobatan bersyarat (CATE) dari ECONML, seperti yang ditunjukkan dalam notebook efek pengobatan bersyarat. Ini cuplikan kode.
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" :{}})
Kerangka kerja model kausal grafis Dowhy menawarkan alat yang kuat untuk menjawab pertanyaan kausal di luar estimasi efek. Ini didasarkan pada kerangka kerja model kausal grafis Pearl dan memodelkan proses pembuatan data kausal masing -masing variabel secara eksplisit melalui mekanisme kausal untuk mendukung berbagai algoritma kausal. Untuk detail lebih lanjut, lihat elemen buku inferensi kausal.
Kueri kausal yang kompleks, seperti mengaitkan anomali yang diamati dengan node dalam sistem, dapat dilakukan dengan hanya beberapa baris kode:
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 )
Kerangka kerja GCM menawarkan lebih banyak fitur di luar contoh ini. Untuk contoh kode lengkap, lihat buku catatan toko online.
Untuk fungsionalitas lebih lanjut, contoh aplikasi Dowhy dan detail tentang output, lihat panduan pengguna atau checkout notebook Jupyter.
Blog Penelitian Microsoft | Tutorial Video untuk Estimasi Efek | Tutorial Video untuk Analisis Penyebab Akar | Kertas Arxiv | Kertas arxiv (ekstensi model kausal grafis) | Slide
Jika Anda menganggap Dowhy berguna untuk pekerjaan Anda, silakan kutip dari dua referensi berikut:
Bibtex:
@Article {Dowhy, title = {dowhy: perpustakaan ujung ke ujung untuk inferensi kausal}, penulis = {Sharma, Amit dan Kiciman, Emre}, Journal = {arxiv preprint arxiv: 2011.04216}, tahun = {2020} } @Article {JMLR: V25: 22-1258, penulis = {Patrick bl {{ "o}} Baum dan Peter G {{" o}} tz dan kailash Budhathoki dan Atalanti A. mastakouri dan Dominik Janzing}, title = {Dowhy-GCM: Perpanjangan Dowhy untuk inferensi kausal dalam model kausal grafis}, Journal = {Journal of Machine Learning Research}, tahun = {2024}, volume = {25}, angka = {147}, halaman = {1--7}, url = {http://jmlr.org/papers/v25/22-1258.html} }
Jika Anda menghadapi masalah atau memiliki permintaan khusus untuk Dowhy, silakan angkat masalah.
Proyek ini menyambut kontribusi dan saran. Untuk panduan berkontribusi dan daftar semua kontributor, lihat Contributing.md dan dokumen kami untuk Kode Kontribusi. Kode Etik Kontributor kami tersedia di sini.