لمزيد من الدفاتر على سبيل المثال ، انظر هنا!
يتضمن اتخاذ القرارات فهم كيفية تأثير المتغيرات المختلفة على بعضها البعض والتنبؤ بالنتيجة عندما يتم تغيير بعضها إلى قيم جديدة. على سبيل المثال ، بالنظر إلى متغير النتيجة ، قد يكون المرء مهتمًا بتحديد كيفية تأثير الإجراء (الإجراءات) المحتملة ، أو فهم ما أدى إلى قيمته الحالية ، أو محاكاة ما يمكن أن يحدث إذا تم تغيير بعض المتغيرات. الإجابة على مثل هذه الأسئلة تتطلب التفكير السببي. Dowhy هي مكتبة Python التي ترشدك عبر الخطوات المختلفة للتفكير السببي وتوفر واجهة موحدة للإجابة على الأسئلة السببية.
يوفر DoWhy مجموعة واسعة من الخوارزميات لتقدير التأثير ، والتنبؤ ، والقياس الكمي للتأثيرات السببية ، وتشخيص الهياكل السببية ، وتحليل الأسباب الجذرية ، والتدخلات والعلاج المضادة. تتمثل الميزة الرئيسية لـ DoWhy في دحضها وتزويرها التي يمكنها اختبار الافتراضات السببية لأي طريقة تقدير ، مما يجعل الاستدلال أكثر قوة ومتاحة لغير الخبراء.
النماذج السببية الرسومية والنتائج المحتملة: أفضل ما في العالمين
يعتمد Dowhy على اثنين من أقوى الأطر للاستدلال السببي: النماذج السببية الرسومية والنتائج المحتملة. لتقدير التأثير ، فإنه يستخدم المعايير المستندة إلى الرسم البياني و DO-Calculus لنمذجة الافتراضات وتحديد تأثير سببي غير برماري. للتقدير ، يتحول إلى طرق تعتمد بشكل أساسي على النتائج المحتملة.
بالنسبة للأسئلة السببية التي تتجاوز تقدير التأثير ، فإنه يستخدم قوة النماذج السببية الرسومية من خلال نمذجة عملية توليد البيانات عبر آليات سببية واضحة في كل عقدة ، والتي ، على سبيل المثال ، تفتح إمكانياتها لنسب التأثيرات المرصودة إلى متغيرات معينة أو تقدير العوامل المضادة للنقطة.
للحصول على مقدمة سريعة للاستدلال السببي ، تحقق من Amit-Sharma/Inference-Information-لقد قدمنا أيضًا برنامجًا تعليميًا أكثر شمولاً في مؤتمر ACM للمعرفة والتعدين للبيانات (KDD 2018): causalinference.gitlab.io/kdd-tutorial. للحصول على مقدمة إلى الخطوات الأربع للاستدلال السببي وآثاره على التعلم الآلي ، يمكنك الوصول إلى هذا الفيديو التعليمي من Microsoft Research Dowhy Webhinar ولإدخال واجهة برمجة تطبيقات النموذج السببي الرسومي ، راجع عرض Pycon حول تحليل السبب الجذري مع dowhy.
يدعم Dowhy المهام السببية التالية:
لمزيد من التفاصيل وكيفية استخدام هذه الأساليب في الممارسة العملية ، يمكنك الخروج من الوثائق على https://py-why.github.io/dowhy
دعم dowhy Python 3.8+. للتثبيت ، يمكنك استخدام PIP أو الشعر أو كوندا.
أحدث إصدار
تثبيت أحدث إصدار باستخدام PIP.
pip install dowhy
تثبيت أحدث إصدار باستخدام الشعر.
poetry add dowhy
تثبيت أحدث إصدار باستخدام كوندا.
conda install -c conda-forge dowhy
إذا كنت تواجه مشكلات "حل البيئة" مع كوندا ، فحاول 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> '
اختياريا ، إذا كنت ترغب في إدخال الرسوم البيانية في تنسيق النقطة ، ثم قم بتثبيت 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: النموذج ، وتحديد ، وتقدير ودحض :
# 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.
يمكنك أيضًا استخدام أساليب تقدير تأثير المعالجة المتوسط (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 )
يوفر إطار عمل GCM العديد من الميزات التي تتجاوز هذه الأمثلة. للحصول على مثال رمز كامل ، تحقق من دفتر ملاحظات مثال المتجر عبر الإنترنت.
لمزيد من الوظائف ، مثال على تطبيقات doWhy وتفاصيل حول المخرجات ، راجع دليل المستخدم أو تسجيل الدخول إلى دفاتر Jupyter.
Microsoft Research Blog | فيديو تعليمي لتقدير التأثير | فيديو تعليمي لتحليل السبب الجذري | ورقة arxiv | ورقة Arxiv (تمديد النموذج السببي الرسومي) | الشرائح
إذا وجدت dowhy مفيدة لعملك ، فيرجى الاستشهاد بكل من المرجعين التاليين:
bibtex:
article {dowhy ، العنوان = {dowhy: مكتبة من طرف إلى طرف للاستدلال السببي} ، المؤلف = {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} ، العنوان = {dowhy-gcm: امتداد dowhy للاستدلال السببي في النماذج السببية الرسومية} ، Journal = {Journal of Machine Learning Research} ، السنة = {2024} ، المجلد = {25} ، الرقم = {147} ، الصفحات = {1--7} ، url = {http://jmlr.org/papers/v25/22-1258.html} }
إذا واجهت مشكلة أو لديك طلب محدد لـ Dowhy ، فيرجى إثارة مشكلة.
يرحب هذا المشروع بالمساهمات والاقتراحات. للحصول على دليل للمساهمة وقائمة جميع المساهمين ، تحقق من المساهمة. مدونة قواعد السلوك المساهم لدينا متوفرة هنا.