آخر تحديث: Invalid Date

اكتشاف السببية القابل للتفسير للممارسين: خوارزميات، فروض، وأمثلة عملية بـ Python

مقدمة وتعريف موجز

اكتشاف السببية (Causal Discovery) هو مجموعة من الطرق الإحصائية والحاسوبية التي تهدف لاستنتاج بنية العلاقات السببية —بشكل عيّني: أي المتغيرات تُؤثر مباشرة على متغيرات أخرى— من البيانات الملاحَظة (أحيانًا مع تدخلات أو بيانات زمنية). هذا المقال يقدّم شرحًا ممارِسياً: ما الخوارزميات الشائعة، ما الافتراضات التي لا بدّ من التحقّق منها، وكيف نطبّق أمثلة عملية قابلة للتكرار باستخدام مكتبات Python مفتوحة المصدر.

سنركّز على اختلافات منهجية (مُنَحازة بالقيود أو بالنتيجة)، نقاط قوّة وضعف كل نهج، وكيفية قراءة النتائج بطريقة تضمن تفسيرات عملية للاستخدام في العلم والتطبيقات الصناعية.

ملاحظة مهمة: تطورت أدوات وخوارزميات الاكتشاف السببي بشكل ملحوظ خلال السنوات الأخيرة، مع تركيز متزايد على التحسينات القابلة للتدرُّج (continuous optimization)، طرق الاستقرار عبر بيئات متعدّدة، وبيئات برمجية متكاملة. لمحة عن بعض الأعمال الأساسية مذكورة أدناه.

خريطة سريعة للنهج والخوارزميات الأساسية

بإمكاننا تصنيف أساليب اكتشاف السببية عمليًا إلى ثلاث عائلات رئيسية:

  • خوارزميات مقيدة (Constraint-based): مثل PC وFCI، التي تعتمد على اختبارات الاستقلال الشرطي لبناء صفوف من الرسوم البيانية المتوافقة (Markov equivalence / PAG). تُفضَّل عندما تكون الفروض حول عدم وجود متغيرات مختبِئة (latent confounders) مقبولة أو عندما نستخدم امتدادات للتعامل معها.
  • خوارزميات استدلال بالترتيب أو البحث (Score-/Search-based): مثل GES/GIES التي تبحث في فضاء الرسوم لتعميم دالة هدف، مناسبة عندما نملك قيودًا حسابية وأُطر تقييم واضحة.
  • طرق التحسين المستمر (Continuous optimization): نهج NOTEARS ونماذج مشتقّات لاحقة (DAG-GNN, GraN-DAG وغيرها) التي تُحوِّل قيد لا حلقيّة (acyclicity) إلى قيد قابل للاشتقاق وتُحلّ بواسطة خوارزميات تدرّج. هذا التحوّل أحدث طفرة عملية لأنه يسمح باستخدام مُحسّنات ذات أداء عالٍ والتوسّع لنماذج غير خطية.

بالإضافة، ظهرت طُرُق قائمة على استقرار التنبؤ عبر بيئات مختلفة (Invariant Causal Prediction وامتداداتها) لاكتشاف المتغيرات السببية بوصفها تلك التي تحافظ على علاقة تنبؤية مستقرة عبر تغيّر الظروف —مفيد جدًا في حالات النقل إلى بيئات جديدة أو لتصفية متغيّرات التسبب الظاهرية.

نقطة عملية: لا توجد خوارزمية واحدة صحيحة لكل الحالات؛ اختيار الأسلوب يعتمد على (1) هل البيانات i.i.d أم زمنية، (2) هل نثق بعدم وجود متغيرات مخفية، (3) شكل العلاقة (خطي/غير خطي)، و(4) غرضنا —بناء شبكة سببية أم استخراج مؤثرات سببية محددة.

أدوات Python الموصى بها ومخطط عمل عملي

توجد منظومة أدوات متزايدة النضج لعلم السببية في Python. من بين المكتبات التي ستستعملها عادة في سلاسل عمل اكتشاف السببية:

  • causal-learn: مكتبة مُعدّة للاكتشاف السببي وتوفّر تنفيذات للـ PC, FCI, GES وغيرها، مع توثيق ونماذج للتكامل مع أدوات تقدير التأثير.
  • DoWhy / PyWhy ecosystem: تركّز على دورة كاملة (نموذجة، تحديد الهوية، تقدير، ومراجعة) وتتعامل جيدًا مع تدقيق الافتراضات وإعادة التقدير. الموقع الرسمي للمجموعة يجمع الموارد والأدوات المساندة.
  • CausalNex وCausal Discovery Toolbox (CDT): أدوات إضافية لبناء شبكات بايز وتطبيقات تجارية وبحثية، مع أمثلة وتكاملات.

مخطّط عمل عملي مختصر (مراحل مُوصى بها للمشروع):

  1. فهم المجال وجمع القواعد الموضوعية (prior knowledge).
  2. فحص البيانات واستبعاد الملاحظات الشاذة، واختبارات الارتباط الأولية.
  3. اختيار مجموعة خوارزميات مناسبة (مثلاً PC/FCI للنتائج القائمة على الاستقلال الشرطي؛ NOTEARS/ GraN-DAG للبيانات المعقَّدة غير الخطية).
  4. تقدير البنية، ثم فحص الاستقرار عبر إعادة التهيئة (bootstrap) أو عبر بيئات بيانات متعددة (إذا توفّرت) للتحقق من التعقّل.
  5. استخدام إطار للتشكُّك (refutation) مثل DoWhy لاختبار الحساسية والافتراضات قبل إعلان نتائج للتدخلات المحتملة.

في القسم التالي سنقدّم مثالًا مبسّطًا قابلًا للتكرار باستخدام causal-learn وDoWhy لبيانات اصطناعية.

مثال عملي (مبسط) بـ Python — من البيانات الاصطناعية إلى تفسير البنية

هذا مثال تعليمي لتوضيح الأنابيب الشائعة: نولّد بيانات اصطناعية ثم نستخدم causal-learn لاستخراج بنية مبدئية، ثم نطبق اختبارات مصداقية عبر DoWhy.

ملاحظة: الشيفرة الموجزة أدناه للتوضيح التعليمي؛ في تطبيق حقيقي نحتاج لفحوصات إضافية حول الافتراضات وحساسية النتائج.

# متطلبات: pip install causallearn dowhy numpy pandas
import numpy as np
import pandas as pd
from causallearn.search.ScoreBased.GES import ges
from dowhy import CausalModel

# بيانات اصطناعية بسيطة
np.random.seed(0)
N = 1000
X = np.random.normal(size=N)
Z = 0.8*X + np.random.normal(size=N)
Y = 1.2*Z + 0.5*X + np.random.normal(size=N)
df = pd.DataFrame({'X': X, 'Z': Z, 'Y': Y})

# مثال: تطبيق GES لاستخراج بنية (مبسط)
# ملاحظة: واجهات المكتبات قد تختلف؛ راجع التوثيق لنسختك
skeleton = ges(df.values, score_type="local_score")
print(skeleton)

# بعد استخراج البنية، نعرّف نموذج DoWhy لتقدير تأثير Z على Y
model = CausalModel(data=df, treatment='Z', outcome='Y', common_causes=['X'])
identified_estimand = model.identify_effect()
estimate = model.estimate_effect(identified_estimand, method_name='backdoor.linear_regression')
print(estimate)

توضيح سريع: في المثال أعلاه نستخدم GES لاكتشاف بنية قابلة للتفسير ثم DoWhy لتحديد وتقدير التأثير السببي مع اختبار افتراضات backdoor. في مشروعات حقيقية، استعمل دائمًا اختبارات الاستقرار (bootstrap)، وتحقق من احتمال وجود متغيرات مختبِئة، ونفّذ إمكانيات تدخلية أو تجريبية إن أمكن.

لموارد مكتبية وتوثيق المكاتب الموصى بها، راجع مستودعات causal-learn وDoWhy، إضافةً إلى مجموعات أدوات CausalNex وCDT.

ملاحظات تقنية متقدمة مختصرة: خوارزميات NOTEARS والامتدادات التي تعتمد على تحويل قيد لا حلقيّة إلى دالة قابلة للاشتقاق تسمح بتطبيق تحسينات التدرج وتوسيع النماذج لغير الخطية، لكنّها تفترض عادة أن جميع المتغيرات المرغوب فيها مُرصودة أو تتطلب تعديلات للتعامل مع متغيّرات مخفية.

ممارسات جيدة، تحذيرات وخاتمة

نصائح عملية للممارسين:

  • دوِّن الافتراضات صراحة (مثلاً: لا confounders، لا cycles، تجانس بيئي) — هذه القرارات تُحدِّد أي خوارزمية صالحة.
  • لا تثق دائماً في رسم بياني ناتج وحيد: استخدم طرق إعادة التهيئة (bootstrap) واختبارات ثبات عبر بيئات متعددة للتحقق من عناصر البنية الأكثر ثقة.
  • استعمل المعرفة الموضوعية (domain knowledge) لفرض قيود (حظر/فرض حواف) — الإدخال اليدوي يقلّل من الأخطاء الناتجة عن بيانات محدودة.
  • عند الإمكان، خطط لتجارب تدخلية أو استراتيجيات شبه-تجريبية (IV, natural experiments) للتحقق من علاقات مفتوحة الشبهة.

خِتامًا: اكتشاف السببية قابل للتفسير هو مزيج من أدوات إحصائية معقّدة، افتراضات نظرية صارمة، وتقييم قوى ومضار عملي. المكتبات الحديثة في بايثون تبسّط التجريب وتوفّر أنابيب متكاملة، لكنّ الإخراج يحتاج دائمًا تحقيقًا نقديًا قبل اعتماد استنتاجات للتدخل أو السياسة.

للمزيد من القراءة والتوثيق التقني انظر أعمال NOTEARS ومراجعات منظومة pywhy، بالإضافة إلى أبحاث جديدة تتعامل مع بيانات زمنية، متغيّرات مخفية، وأنواع بيانات مختلطة — وهي اتجاهات نشطة بالبحث والتطبيق حاليًا.