สำหรับสมุดบันทึกตัวอย่างเพิ่มเติมดูที่นี่!
การตัดสินใจเกี่ยวข้องกับการทำความเข้าใจว่าตัวแปรที่แตกต่างกันมีผลต่อกันและกันอย่างไรและทำนายผลลัพธ์เมื่อบางส่วนถูกเปลี่ยนเป็นค่าใหม่ ตัวอย่างเช่นเมื่อได้รับตัวแปรผลลัพธ์หนึ่งอาจสนใจในการพิจารณาว่าการกระทำที่อาจเกิดขึ้นอาจส่งผลกระทบต่อมันอย่างไรทำความเข้าใจกับสิ่งที่นำไปสู่ค่าปัจจุบันหรือจำลองสิ่งที่จะเกิดขึ้นหากตัวแปรบางตัวเปลี่ยนไป การตอบคำถามดังกล่าวต้องใช้เหตุผลเชิงสาเหตุ Dowhy เป็นไลบรารี Python ที่จะแนะนำคุณผ่านขั้นตอนต่าง ๆ ของการให้เหตุผลเชิงสาเหตุและให้อินเทอร์เฟซแบบครบวงจรสำหรับการตอบคำถามเชิงสาเหตุ
Dowhy ให้อัลกอริทึมที่หลากหลายสำหรับการประเมินผลการทำนายการหาปริมาณของอิทธิพลเชิงสาเหตุการวินิจฉัยโครงสร้างเชิงสาเหตุการวิเคราะห์สาเหตุการแทรกแซงการแทรกแซงและ counterfactuals คุณลักษณะที่สำคัญของ Dowhy คือการพิสูจน์และการปลอมแปลง API ที่สามารถทดสอบสมมติฐานเชิงสาเหตุสำหรับวิธีการประมาณค่าใด ๆ ทำให้การอนุมานมีความแข็งแกร่งและเข้าถึงได้ง่ายขึ้น
แบบจำลองเชิงสาเหตุกราฟิกและผลลัพธ์ที่เป็นไปได้: ดีที่สุดของทั้งสองโลก
Dowhy สร้างสองเฟรมเวิร์กที่ทรงพลังที่สุดสำหรับการอนุมานเชิงสาเหตุ: แบบจำลองเชิงกราฟิกและผลลัพธ์ที่เป็นไปได้ สำหรับการประมาณค่าเอฟเฟกต์จะใช้เกณฑ์ที่ใช้กราฟและ DO-calculus สำหรับการสร้างแบบจำลองสมมติฐานและระบุผลกระทบเชิงสาเหตุที่ไม่ใช่พารามิเตอร์ สำหรับการประมาณค่าจะเปลี่ยนเป็นวิธีการตามผลลัพธ์ที่อาจเกิดขึ้นเป็นหลัก
สำหรับคำถามเชิงสาเหตุเกินกว่าการประมาณค่าเอฟเฟกต์จะใช้พลังของแบบจำลองเชิงกราฟิกแบบจำลองโดยการสร้างแบบจำลองกระบวนการสร้างข้อมูลผ่านกลไกเชิงสาเหตุที่ชัดเจนในแต่ละโหนดซึ่งตัวอย่างเช่นปลดล็อคความสามารถในการใช้งานเอฟเฟกต์ที่สังเกตได้
สำหรับการแนะนำอย่างรวดเร็วเกี่ยวกับการอนุมานเชิงสาเหตุลองดู AMIT-Sharma/การอนุมัติเชิงสาเหตุเรายังให้การสอนที่ครอบคลุมมากขึ้นในการค้นพบความรู้ ACM และการขุดข้อมูล (KDD 2018) การประชุม: CausalInference.gitlab.io/KDD-Tutorial สำหรับการแนะนำขั้นตอนสี่ขั้นตอนของการอนุมานเชิงสาเหตุและความหมายของมันสำหรับการเรียนรู้ของเครื่องคุณสามารถเข้าถึงวิดีโอสอนวิดีโอนี้จาก Microsoft Research Dowhy Webinar และสำหรับการแนะนำตัวแบบกราฟิกแบบจำลอง API ดูการนำเสนอ Pycon ในการวิเคราะห์สาเหตุที่แท้จริงด้วย Dowhy
Dowhy รองรับงานเชิงสาเหตุต่อไปนี้:
สำหรับรายละเอียดเพิ่มเติมและวิธีการใช้วิธีการเหล่านี้ในทางปฏิบัติให้ชำระเงินเอกสารที่ https://py-why.github.io/dowhy
Dowhy สนับสนุน Python 3.8+ ในการติดตั้งคุณสามารถใช้ PIP, Poetry หรือ Conda
รุ่นล่าสุด
ติดตั้งรีลีสล่าสุดโดยใช้ PIP
pip install dowhy
ติดตั้งรีลีสล่าสุดโดยใช้บทกวี
poetry add dowhy
ติดตั้งรีลีสล่าสุดโดยใช้ Conda
conda install -c conda-forge dowhy
หากคุณเผชิญกับปัญหา "การแก้ปัญหาสภาพแวดล้อม" กับ Conda ให้ลอง conda update --all
แล้วติดตั้ง Dowhy หากไม่ได้ผลให้ใช้ conda config --set channel_priority false
และลองติดตั้งอีกครั้ง หากปัญหายังคงมีอยู่โปรดเพิ่มปัญหาของคุณที่นี่
เวอร์ชันการพัฒนา
หากคุณต้องการใช้เวอร์ชัน dev ล่าสุดเครื่องมือการจัดการการพึ่งพาของคุณจะต้องชี้ไปที่ที่เก็บ GitHub ของเรา
pip install git+https://github.com/py-why/dowhy@main
ความต้องการ
Dowhy ต้องการการพึ่งพาสองสามครั้ง รายละเอียดเกี่ยวกับเวอร์ชันเฉพาะสามารถพบได้ใน pyproject.toml ภายใต้ส่วน tool.poetry.dependencies
หากคุณประสบปัญหาใด ๆ ลองติดตั้งการพึ่งพาด้วยตนเอง
pip install ' <dependency-name>==<version> '
เป็นทางเลือกหากคุณต้องการป้อนกราฟในรูปแบบ DOT ให้ติดตั้ง pydot (หรือ pygraphviz)
สำหรับกราฟที่ดูดีขึ้นคุณสามารถเลือกติดตั้ง pygraphviz หากต้องการดำเนินการต่อให้ติดตั้ง GraphViz ก่อนจากนั้น Pygraphviz (บน Ubuntu และ Ubuntu WSL)
บันทึก
การติดตั้ง pygraphviz อาจทำให้เกิดปัญหาในบางแพลตฟอร์ม วิธีหนึ่งที่ใช้งานได้สำหรับการแจกแจง Linux ส่วนใหญ่คือการติดตั้ง graphviz ก่อนจากนั้น pygraphviz ดังที่แสดงด้านล่าง มิฉะนั้นโปรดปรึกษาเอกสารของ 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
งานเชิงสาเหตุส่วนใหญ่ใน Dowhy ต้องการรหัสเพียงไม่กี่บรรทัดในการเขียน ที่นี่เราประเมินผลกระทบเชิงสาเหตุของการรักษาในตัวแปรผลลัพธ์:
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 )
กราฟสาเหตุสามารถกำหนดได้ในวิธีที่แตกต่างกัน แต่วิธีที่พบบ่อยที่สุดคือผ่าน NetworkX หลังจากโหลดข้อมูลแล้วเราใช้การดำเนินการหลักสี่ประการสำหรับการประมาณค่าเอฟเฟกต์ใน Dowhy: Model , ระบุ ประเมิน และ หักล้าง :
# 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 เน้นไปที่ความสามารถในการตีความของผลลัพธ์ ณ จุดใด ๆ ในการวิเคราะห์คุณสามารถตรวจสอบสมมติฐานที่ยังไม่ผ่านการทดสอบ, ประมาณการที่ระบุ (ถ้ามี) และการประมาณการ (ถ้ามี) นี่คือตัวอย่างตัวอย่างของตัวประมาณค่าการถดถอยเชิงเส้น:
สำหรับตัวอย่างโค้ดเต็มรูปแบบให้ตรวจสอบการเริ่มต้นใช้งานกับ Dowhy Notebook
นอกจากนี้คุณยังสามารถใช้วิธีการประมาณค่าการรักษาโดยเฉลี่ยตามเงื่อนไข (CATE) จาก ECONML ดังที่แสดงในสมุดบันทึกผลการรักษาแบบมีเงื่อนไข นี่คือตัวอย่างโค้ด
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" :{}})
กรอบรูปแบบสาเหตุกราฟิกของ Dowhy นำเสนอเครื่องมือที่มีประสิทธิภาพในการตอบคำถามเชิงสาเหตุเกินกว่าการประมาณค่าผล มันขึ้นอยู่กับกรอบรูปแบบสาเหตุกราฟิกของ Pearl และสร้างแบบจำลองกระบวนการสร้างข้อมูลเชิงสาเหตุของแต่ละตัวแปรอย่างชัดเจนผ่าน กลไกเชิงสาเหตุ เพื่อรองรับอัลกอริทึมเชิงสาเหตุที่หลากหลาย สำหรับรายละเอียดเพิ่มเติมดูองค์ประกอบหนังสือของการอนุมานเชิงสาเหตุ
การสืบค้นเชิงสาเหตุที่ซับซ้อนเช่นการระบุความผิดปกติที่สังเกตไปยังโหนดในระบบสามารถทำได้ด้วยรหัสเพียงไม่กี่บรรทัด:
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 )
Framework GCM มีคุณสมบัติมากมายนอกเหนือจากตัวอย่างเหล่านี้ สำหรับตัวอย่างรหัสเต็มลองดูสมุดบันทึกตัวอย่างร้านค้าออนไลน์
สำหรับฟังก์ชั่นเพิ่มเติมตัวอย่างแอปพลิเคชันของ Dowhy และรายละเอียดเกี่ยวกับเอาต์พุตดูคู่มือผู้ใช้หรือสมุดบันทึก Jupyter
บล็อกการวิจัยของ Microsoft | การสอนวิดีโอสำหรับการประมาณค่าเอฟเฟกต์ | การสอนวิดีโอสำหรับการวิเคราะห์สาเหตุที่แท้จริง กระดาษอาร์กซ์ กระดาษ Arxiv (ส่วนขยายแบบจำลองเชิงสาเหตุกราฟิก) | สไลด์
หากคุณพบว่า Dowhy มีประโยชน์สำหรับงานของคุณโปรดอ้างอิง ทั้งสอง อ้างอิงต่อไปนี้:
bibtex:
@article {Dowhy title = {dowhy: ไลบรารี end-to-end สำหรับการอนุมานเชิงสาเหตุ} ผู้แต่ง = {Sharma, Amit และ Kiciman, Emre}, journal = {arxiv preprint arxiv: 2011.04216}, ปี = {2020} - @article {jmlr: v25: 22-1258 ผู้แต่ง = {Patrick bl {{ "o}} baum และ peter g {{" o}} tz และ Kailash Budhathoki และ Atalanti A. Mastakouri และ Dominik Janzing} title = {dowhy-gcm: ส่วนขยายของ dowhy สำหรับการอนุมานเชิงสาเหตุในแบบจำลองสาเหตุกราฟิก} วารสาร = {วารสารการวิจัยการเรียนรู้ของเครื่อง} ปี = {2024} volume = {25} number = {147} หน้า = {1--7} url = {http://jmlr.org/papers/v25/22-1258.html} -
หากคุณพบปัญหาหรือมีคำขอเฉพาะสำหรับ Dowhy โปรดเพิ่มปัญหา
โครงการนี้ยินดีต้อนรับการมีส่วนร่วมและข้อเสนอแนะ สำหรับคำแนะนำเกี่ยวกับการมีส่วนร่วมและรายชื่อผู้มีส่วนร่วมทั้งหมดตรวจสอบการสนับสนุน MD และเอกสารของเราสำหรับการสนับสนุนรหัส จรรยาบรรณผู้สนับสนุนของเรามีอยู่ที่นี่