کشف علت: آیا بانگ خروس باعث طلوع خورشید می شود؟

10 خط کد پایتون برای خودکار کردن کشف علی که باید ببینید

عکس اگور میزنیک on می Unsplash

تمرکز تحقیقات اخیر من این بوده است استنتاج علی به دلیل افزایش درخواست‌هایی که از مشتریان دریافت می‌کنم برای فراتر رفتن از پیش‌بینی‌های یادگیری ماشین و پاسخ دادن به «چه می‌شود؟» سوالاتی را تایپ کنید تا تاثیر و نتایج را به همراه داشته باشید.

یکی از چیزهایی که در ابتدا برای من جالب بود این بود: "نمودارهای علی چگونه ساخته می شوند؟". در بسیاری از نمونه‌های آنلاین، به نظر می‌رسد که آنها بدون هیچ توضیحی در مورد چگونگی شناسایی گره‌ها و پیوندها، به حیاتی تبدیل شده‌اند.

این باعث شد که «کتاب چرا» نوشته جودیا پرل و دانا مکنزی (چند بار!) را بخوانم و یک دیدگاه بیان شده این است که شما نمی‌توانید نمودار علّی را که به عنوان نمودار غیر چرخه‌ای هدایت‌شده (DAG) نیز شناخته می‌شود، مهندسی معکوس کنید. تنها.

داده‌ها می‌توانند همبستگی را آشکار کنند، اما نه علیت، بنابراین چگونه می‌توان «کشف» علیت را پیدا کرد؟

توجه: تمام مجموعه داده‌های این مقاله برای استفاده عمومی مجوز دارند، لطفاً برای همه منابع و مآخذ به بخش مراجع در انتهای مقاله مراجعه کنید.

قبل از اینکه به کشف علی بپردازیم، لطفاً در نظر بگیرید…

پیوستن به رسانه با پیوند ارجاع من (اگر با استفاده از این لینک ثبت نام کنید، نسبتی از هزینه ها را دریافت خواهم کرد).

اشتراک در یک ایمیل رایگان هر زمان که داستان جدیدی منتشر می کنم.

نگاهی گذرا به مقالات قبلی من.

در حال دانلود رایگان چارچوب تصمیم گیری مبتنی بر داده استراتژیک من.

بازدید از وب سایت علم داده من - وبلاگ داده.

تعداد مقادیر را از مجموعه داده های باینری زیر در نظر بگیرید…

توجه: مجموعه داده های طلوع خورشید / خروس، داده های مصنوعی است که توسط نویسنده ایجاد شده است، لطفاً برای منبع کامل و جزئیات مرجع به بخش منابع در انتهای مقاله مراجعه کنید.

تصویر توسط نویسنده

ما می‌توانیم ببینیم که در 90.25٪ مشاهدات، هنگام طلوع خورشید، خروس بانگ می‌زند، اما چگونه می‌توانیم بفهمیم طلوع خورشید باعث بانگ زدن خروس می‌شود یا بانگ خروس باعث طلوع خورشید تنها بر اساس داده‌ها می‌شود؟

تعداد مواردی که وقتی خورشید طلوع نمی کند یا وقتی که خورشید طلوع می کند اما خروس ساکت می ماند تقریباً یکسان است (50,000 در مقابل 47,500) بنابراین نمی توان با مقایسه حجم نسبی داده ها پاسخ علی را پیدا کرد.

یک رویکرد می تواند نگاه به جنبه زمانی باشد. اگر خورشید به طور مداوم قبل از بانگ زدن خروس طلوع کند، این نشانگر خوبی برای علیت خواهد بود، اما اگر خروس ما زود طلوع کند چه؟

پاسخ این است که با کارشناسان دامنه مشورت کنید. اگر می توانستیم یک تیم با یک ستاره شناس، یک فیزیکدان و یک مرغدار جمع کنیم، به این نتیجه می رسیدند که خورشید باعث بانگ زدن خروس می شود و نه برعکس!

عکس فدریکو رسپینی on می Unsplash

من که از طلوع خورشید و بانگ خروس ها دلسرد نشده بودم، به دنبال چیزی رفتم که قبلاً آنجا بود و ممکن بود بتواند جادوی کشف علی را بر اساس داده ها انجام دهد.

الگوریتمی به نام «NOTEARS» وجود دارد که ادعا می‌کند می‌تواند کشف علی را پیاده‌سازی کند، پس بیایید آن را امتحان کنیم و ببینیم چه کاری می‌تواند انجام دهد…

توجه: مجموعه داده های آبله، داده های مصنوعی است که توسط نویسنده ایجاد شده است، لطفاً برای منبع کامل و جزئیات مرجع به بخش مراجع در انتهای مقاله مراجعه کنید.

تصویر توسط نویسنده

این مجموعه داده در حال مدل سازی روابط علت و معلولی در واکسیناسیون آبله است. بیایید الگوریتم NOTEARS را با آن اجرا کنیم و ببینیم چه کاری می تواند انجام دهد…

[("واکنش؟"، "واکسیناسیون؟")،
("آبله؟"، "واکنش؟")،
("مرگ؟"، "واکنش؟")،
("مرگ؟"، "ابله؟")]

اگر بخواهیم نتایج تولید شده توسط NOTEARS را تجسم کنیم، به این صورت خواهد بود…

تصویر توسط نویسنده

به نظر نمی رسد خیلی خوب است؟ به گفته NOTEARS مرگ باعث آبله می شود. جنبه زمانی به ما می گوید که آبله اول است بنابراین نمی تواند با مرگ ایجاد شود. همچنین آبله نمی تواند باعث واکنش شود (واکسن باعث واکنش می شود) و قطعاً واکنش نمی تواند باعث واکسیناسیون شود.

با استفاده از دانش متخصصان حوزه، به راحتی می‌توان دریافت که واکسیناسیون بر واکنش بیمار و ابتلای بیمار به بیماری تأثیر علّی دارد و واکنش و آبله هر دو با مرگ ارتباط دارند.

تصویر توسط نویسنده

بنابراین، ما ثابت کرده‌ایم که حتی در یک مدل علی بسیار ساده، الگوریتم کشف علّی NOTEARS نتایج درستی تولید نمی‌کند. همچنین، یکی از خوانندگان یکی از مقالات قبلی من اشاره کرد که NOTEARS در پایتون 3.9 کار نمی کند و از آنجایی که من در حال ارتقاء هستم، این مشکل بزرگ دیگری است.

اگر می خواهید در مورد نامناسب بودن NOTEARS برای علیت بیشتر بخوانید، در اینجا یک مقاله دانشگاهی عالی است - https://arxiv.org/pdf/2104.05441.pdf (مارکوس قیصر و ماکسیم سیپوس).

قبل از اینکه از کشف علّی کاملاً خودکار دست برداریم، بیایید نگاهی به یک جایگزین برای NOTEARS، الگوریتم «کند» بیندازیم.

توجه: مجموعه داده های درآمد سرشماری / درآمد فارغ التحصیلان دارای مجوز برای استفاده عمومی است، لطفاً برای منبع کامل و جزئیات مرجع به بخش منابع در انتهای مقاله مراجعه کنید.

تصویر توسط نویسنده
تصویر توسط نویسنده

ای عزیز، کمند فاجعه است! پیش بینی کرده است که همه چیز باعث هر چیز دیگری می شود و گره ها نیز خودشان را ایجاد می کنند!

آخرین تلاش من این بود که الگوریتم‌های GES، GIES و LINGAM را امتحان کنم، اما همه اینها به کتابخانه‌های R نیاز دارند. من از R استفاده نمی کنم و حتی اگر بتوانم پیکربندی را به درستی انجام دهم، هرگز نمی توانم کد قابل حملی را ایجاد کنم که سایر دانشمندان داده بتوانند از آن استفاده کنند.

کتابخانه‌ها و الگوریتم‌های کشف علّی موجود کار نمی‌کنند و این دیدگاه بیان شده در «کتاب چرا» را تقویت کرده است، یعنی اینکه علیت را نمی‌توان به تنهایی از روی داده‌ها مهندسی معکوس کرد.

این نتیجه گیری باعث شد که من رویکرد خودم را توسعه دهم…

عکس آماندا جونز on می Unsplash

کارت های روی میز، من یک الگوریتم کشف علی ننوشته ام. بلکه الگوریتم من کشف همبستگی را با یک پیچ و تاب (بدون جناس!) پیاده سازی می کند.

وقتی از کتابخانه‌های کشف علّی دست کشیدم، هنوز به راهی برای تجسم علیت به عنوان نقطه شروع گفتگو با متخصصان حوزه نیاز داشتم.

من استدلال کردم که می توانم همبستگی بین ویژگی ها / گره ها را به راحتی محاسبه کنم و این حداقل نقطه شروع خوبی خواهد بود.

من تفکر خود را به شرح زیر توسعه دادم - در مدل‌های کشف علّی ما معمولاً «اثر» را شناسایی می‌کنیم، یعنی ویژگی داده‌ای که به آن علاقه‌مندیم (مانند «هدف» در پیش‌بینی‌های یادگیری ماشین). در مثال آبله، این «مرگ؟» است، و در مثال درآمد فارغ التحصیل، درآمد «greaterThank50k» است.

بنابراین، اگر بین هر ویژگی و «اثر» همبستگی وجود داشته باشد، جهت علّی باید از دیگر ویژگی‌ها به تأثیر باشد، همانطور که در «انتهای خط» است.

قدم بعدی من توسعه یک الگوریتم بازگشتی بود که می تواند به صورت زیر تجسم شود…

تصویر توسط نویسنده

پیوندهای تکراری و دو جهته باید به اجبار حذف شوند. همچنین می‌خواستم بتوانم اتصالات (لبه‌ها) را به صراحت اضافه یا حذف کنم و ویژگی‌ها (گره‌ها) را به صراحت حذف کنم.

اینها 10 خط کد بازگشتی پایتون هستند که من برای پیاده سازی کشف علت پیدا کردم.

برای نشان دادن نحوه عملکرد راه حل، برخی از داده های مربوط به داده های لغو رزرو هتل را انتخاب کرده ام.

بیایید با خواندن داده ها شروع کنیم و نگاهی به همبستگی ها بیندازیم…

توجه: مجموعه داده رزرو هتل دارای مجوز برای استفاده عمومی است، لطفاً برای منبع کامل و جزئیات مرجع به بخش مراجع در انتهای مقاله مراجعه کنید.

تصویر توسط نویسنده

اولین اجرای الگوریتم اکتشاف شامل پایین نگه داشتن تکرارها تا 1 است، بنابراین ما فقط به همبستگی ها (که باید علی باشد) با "اثر" نگاه می کنیم، یعنی اینکه آیا رزرو هتل لغو می شود یا خیر…

تصویر توسط نویسنده

خوب، شروع بدی نیست، بیایید تعداد تکرارها / بازگشتی ها / لایه ها را به 3 افزایش دهیم، آستانه همبستگی را کمی تغییر دهیم و ببینیم چه چیزی به دست می آوریم…

تصویر توسط نویسنده

خوب، خیلی هم بد نیست، اما کمی «مشغول» است، بنابراین گام بعدی حذف برخی از گره‌هایی است که گمان می‌کنیم ممکن است باعث ایجاد نویز شوند (توجه داشته باشید: در یک مورد تجاری در دنیای واقعی که ما با آنها صحبت می‌کنیم کارشناسان حوزه ما در این مرحله).

تصویر توسط نویسنده

این شروع به بهتر شدن می کند. به یاد داشته باشید که الگوریتم my مطمئن است که پیوندهای "IsCancelled" علتی هستند زیرا "اثر" است، بنابراین هیچ چیزی بعد از آن نمی آید.

سایر لایه‌های درخت فقط همبستگی هستند، اما جهت فلش‌ها صرفاً بر اساس ترتیبی که الگوریتم آنها را پیدا کرده است، اضافه شده است.

کار با کارشناسان دامنه (یا تجربه شخصی خودم از رزرو هتل در این مثال!) به موارد زیر توجه کردم -

  • پیوند از «DifferentRoomAssigned» به «LeadTime» در جهت اشتباه است، زیرا زمان طولانی رزرو، احتمال تغییر رزرو اتاق را افزایش می‌دهد و بالعکس.
  • همبستگی بین «BookingChanges» و «DifferentRoomAssigned» کمتر از آستانه است، اما ممکن است از نظر علّی قابل توجه باشد، بنابراین باید لحاظ شود.

تلاش بعدی به الگوریتم دستور می دهد تا این اصلاحات را انجام دهد -

تصویر توسط نویسنده

یک "مخلوط کننده مشاهده نشده" عاملی است که ما معتقدیم با ارائه پیوندی بین برخی از گره ها بر مدل علی ما تأثیر می گذارد، اما اندازه گیری نشده است و از این رو در نمودار گنجانده نشده است.

تجربه من از رفتن به هتل ها و دانش من از مجموعه داده هتل ها باعث شد مشکوک شوم که یک "مخاطب کننده مشاهده نشده" وجود دارد که بر داده های هتل ها تأثیر می گذارد.

دو هتل در داده ها وجود دارد - یک هتل "شهری" و یک هتل "توچال". این من را به این فرضیه سوق داد که مخدوش کننده مشاهده نشده در این مدل علّی همان است “دلیل اقامت در هتل”.

فرضیه من این است مسافران تعطیلات عمدتاً در هتل استراحتگاه اقامت می کنند و افراد تجاری و شهر شکنان عمدتاً در هتل شهر اقامت می کنند..

علاوه بر این، من این فرضیه را مطرح کرده‌ام که این دو گروه رفتارهای متفاوتی دارند و این «مشکلات‌کننده مشاهده‌نشده» است (مشاهده نشده زیرا داده‌ها «دلیل ماندن» را نشان نمی‌دهند).

NOTEARS و سایر الگوریتم‌های مشابه نمی‌توانند «مشکلات‌کننده‌های مشاهده نشده» را در نظر بگیرند، اما الگوریتمی که من ایجاد کرده‌ام می‌تواند با گنجاندن صریح آنها به شرح زیر، آنها را در نظر بگیرد…

تصویر توسط نویسنده

نتیجه تکرار نهایی یک تجسم قابل قبول، خواندنی و قابل درک برای علیت در داده های هتل است که مطمئن هستم با کارشناسان حوزه بررسی و اصلاح می کنم. اینها نکات کلیدی…

  • یک "مشکلات کننده مشاهده نشده" وجود دارد که دلیل اصلی اقامت است (تعطیلات در مقابل کسب و کار / تعطیلات شهری).
  • "کشور" یک اثر علی بر مخدوش کننده مشاهده نشده دارد - کسانی که از برخی کشورها سفر می کنند به احتمال زیاد در تعطیلات هستند.
  • همین امر در مورد "TotalGuests" نیز صدق می کند. مهمانی های بزرگ بیشتر در تعطیلات، مجردها در سفرهای کاری و دو نفره در تعطیلات شهری هستند.
  • "دلیل اقامت" مشاهده نشده بر "LeadTime"، "HotelType" و "DepositType" اثر علی دارد.
  • «LeadTime»، «DifferentRoomAssigned»، «HotelType»، «DepositType» و «Reason for Stay» (U) همگی بر روی «IsCanceled» اثر علّی دارند.

کشف علی فرآیند فراتر رفتن از پیوندهای همبستگی برای کشف پیوندهای علّی است (یعنی فلش به کدام انتهای خط همبستگی تعلق دارد؟). خودکار کردن این کار با الگوریتم‌هایی مانند NOTEARS ممکن نیست، یا حداقل بسیار دشوار است، زیرا پاسخ‌ها به تنهایی در داده‌ها وجود ندارند.

با این حال، هنوز نیاز حیاتی به تجسم علیت وجود دارد تا بتوان آن را با متخصصان حوزه بررسی کرد تا یک نمودار علّی ایجاد شود (همچنین به عنوان نمودار غیر چرخه ای جهت دار یا DAG نیز شناخته می شود).

در این مقاله الگوریتمی مبتنی بر کشف همبستگی تقویت شده با استفاده از تنها 10 خط کد پایتون پیشنهاد شده است که می تواند با متخصصان دامنه برای اصلاح مکرر حساسیت (آستانه) و اصلاح، افزودن یا حذف پیوندها (فلش ها) و حذف موارد نامربوط استفاده شود. گره ها

در مقالات آینده از این نمودارهای علی برای ساختن یک مدل یادگیری ماشینی علّی کامل استفاده می شود که می تواند پاسخ پیچیده "چه می شود اگر؟" سوالات مشتریان و رهبران کسب و کار را تایپ کنید.

اگر از این مقاله لذت بردید لطفا در نظر بگیرید…

پیوستن به رسانه با پیوند ارجاع من (اگر با استفاده از این لینک ثبت نام کنید، نسبتی از هزینه ها را دریافت خواهم کرد).

اشتراک در یک ایمیل رایگان هر زمان که داستان جدیدی منتشر می کنم.

نگاهی گذرا به مقالات قبلی من.

در حال دانلود رایگان چارچوب تصمیم گیری مبتنی بر داده استراتژیک من.

بازدید از وب سایت علم داده من - وبلاگ داده.

داده های طلوع خورشید / خروس بانگ

داده های آبله

درآمد فارغ التحصیلان / داده های درآمد سرشماری

داده های رزرو هتل

کشف علت: آیا بانگ خروس باعث طلوع خورشید می شود؟ بازنشر شده از منبع https://towardsdatascience.com/causal-discovery-does-the-cockerel-crowing-cause-the-sun-to-rise-f4308453ecfa?source=rss—-7f60cf5620c9—4 از طریق https://towardsdatascience. com/feed

<!–

->

تمبر زمان:

بیشتر از مشاوران بلاک چین