Nedensel Keşif: Horoz ötüşü Güneş'in doğmasına neden olur mu?

Görmeniz gereken nedensel keşfi otomatikleştirmek için 10 satırlık Python kodu

Fotoğraf Yegor Myznik on Unsplash

Son araştırmalarımın odak noktası nedensel çıkarım Müşterilerden, makine öğrenimi tahminlerinin ötesine geçerek "Ya şöyle olursa?" sorusunu yanıtlamaya yönelik artan taleplerden hareketle. Etkiyi ve sonuçları artırmak için sorular yazın.

Başlangıçta ilgimi çeken şeylerden biri şuydu: "Nedensel diyagramlar nasıl oluşturulur?" Çevrimiçi örneklerin çoğunda, düğümlerin ve bağlantıların nasıl tanımlandığına dair herhangi bir açıklama yapılmadan, tamamen oluşturulmuş bir şekilde hayata geçmiş gibi görünüyorlar.

Bu beni Judea Pearl ve Dana Mackenzie'nin "The Book of Why" kitabını (birkaç kez!) okumaya yöneltti ve ifade edilen görüşlerden biri, Yönlendirilmiş Döngüsel Grafik (DAG) olarak da bilinen bir nedensel diyagramı verilerden ters mühendislik yapamayacağınızdır. yalnız.

Veriler korelasyonu ortaya çıkarabilir ancak nedenselliği ortaya çıkaramaz; peki nedenselliği “keşfetmek” nasıl mümkün olabilir?

Not: Bu makaledeki tüm veri setleri kamu kullanımına açık lisanslıdır, tüm kaynaklar ve referanslar için lütfen makalenin sonundaki referanslar bölümüne bakın.

Nedensel keşfe dalmadan önce lütfen şunu düşünün…

Tavsiye bağlantımla Medium'a katılıyorum (Bu bağlantıyı kullanarak kaydolursanız ücretlerin bir kısmını alacağım).

Yeni bir hikaye yayınladığımda ücretsiz e-postaya abone olmak.

Önceki yazılarıma hızlıca göz atıyorum.

Ücretsiz stratejik veriye dayalı karar verme çerçevemi indiriyorum.

Veri bilimi web sitemi ziyaret ediyorum — Veri Blogu.

Aşağıdaki ikili veri kümesindeki değer sayımlarını göz önünde bulundurun…

Not: Güneş doğuşu/yavru horoz veri seti yazar tarafından oluşturulan sentetik verilerdir, tam kaynak ve referans ayrıntıları için lütfen makalenin sonundaki referanslar bölümüne bakın.

Yazara göre resim

Gözlemlerin %90.25'inde horozun güneş doğduğunda öttüğünü görebiliyoruz ama sadece verilerden yola çıkarak güneşin doğuşunun horozun ötmesine mi yoksa horozun ötüşünün mi güneşin doğmasına neden olduğunu nasıl bileceğiz?

Horozun güneş doğmadığında öttüğü veya güneş doğduğunda horozun sessiz kaldığı durumların sayısı neredeyse aynıdır (50,000'e karşı 47,500), dolayısıyla nedensel cevap, göreceli veri hacimleri karşılaştırılarak bulunamaz.

Bir yaklaşım zamansal yönüne bakmak olabilir. Güneş sürekli olarak horoz ötmeden önce doğuyorsa, bu nedenselliğin iyi bir göstergesi olacaktır, peki ya bizim horozumuz erken kalkan biriyse?

Cevap, alan uzmanlarına danışmaktır. Eğer bir astrolog, bir fizikçi ve bir kümes hayvanı çiftçisinden oluşan bir ekip kurabilseydik, horozun ötmesine güneşin neden olduğu, tersinin olmadığı sonucuna varacaklardı!

Fotoğraf Federico Respini on Unsplash

Yükselen güneşlerden ve horozların ötüşünden yılmadan, verilere dayanarak nedensel keşif büyüsünü gerçekleştirebilecek, zaten orada olan bir şeyi aramak üzere yola çıktım.

Nedensel keşif gerçekleştirebildiğini iddia eden “NOTEARS” adında bir algoritma var, hadi onu bir deneyelim ve neler yapabileceğini görelim…

Not: Çiçek hastalığı veri seti yazar tarafından oluşturulan sentetik verilerdir, tam kaynak ve referans ayrıntıları için lütfen makalenin sonundaki referanslar bölümüne bakın.

Yazara göre resim

Bu veri seti çiçek hastalığı aşılarındaki neden-sonuç ilişkilerini modelliyor. Gelin NOTEARS algoritmasını buna karşı çalıştıralım ve neler yapabileceğini görelim…

[('Tepki?', 'Aşı?'),
('Çiçek hastalığı?', 'Tepki?'),
('Ölüm mü?', 'Tepki?'),
('Ölüm mü?', 'Çiçek hastalığı mı?')]

NOTEARS'ın ürettiği sonuçları görselleştirecek olsaydık şöyle görünürdü…

Yazara göre resim

Pek iyi görünmüyor değil mi? NOTEARS'a göre çiçek hastalığına ölüm neden oluyor. Zamansal yön bize çiçek hastalığının önce geldiğini, dolayısıyla ölümden kaynaklanamayacağını söyler. Çiçek hastalığı da reaksiyona neden olamaz (aşı reaksiyona neden olur) ve reaksiyon kesinlikle aşıya neden olamaz.

Alan uzmanlarının bilgilerini kullanarak, aşının hastanın reaksiyon gösterip göstermediği ve hastalığın gelişip gelişmediği üzerinde nedensel bir etkiye sahip olduğunu ve reaksiyonun ve çiçek hastalığının her ikisinin de ölümle nedensel bir bağlantısı olduğunu kolayca tespit edebiliriz…

Yazara göre resim

Böylece NOTEARS nedensel keşif algoritmasının çok basit bir nedensel modelde bile doğru sonuçlar üretmediğini tespit ettik. Ayrıca önceki makalelerimden birinin okuyucusu NOTEARS'ın Python 3.9'da çalışmadığını ve yükseltme yapmak üzere olduğum için bunun başka bir büyük sorun olduğunu belirtti.

NOTEARS'ın nedensellik açısından uygunsuzluğu hakkında daha fazla bilgi edinmek istiyorsanız işte mükemmel bir akademik makale - https://arxiv.org/pdf/2104.05441.pdf (Marcus Kaiser ve Maksim Sipos).

Tam otomatik nedensel keşiften vazgeçmeden önce, NOTEARS'ın bir alternatifi olan “Kement” algoritmasına bir göz atalım –

Not: Nüfus sayımı geliri/mezun kazançları veri seti kamu kullanımı için lisanslıdır, tam kaynak ve referans ayrıntıları için lütfen makalenin sonundaki referanslar bölümüne bakın.

Yazara göre resim
Yazara göre resim

Ah canım, Lasso bir felaket! Her şeyin her şeye neden olduğunu ve düğümlerin de kendilerine neden olduğunu öngördü!

Son girişimlerim GES, GIES ve LINGAM algoritmalarını denemek oldu ancak bunların hepsi R kütüphanelerini gerektiriyor. R kullanmıyorum ve konfigürasyonu doğru yapmayı başarmış olsam bile asla diğer veri bilimcilerin kullanabileceği taşınabilir kod oluşturamam.

Mevcut nedensel keşif kütüphaneleri ve algoritmaları çalışmıyor ve bu, "Neden Kitabı"nda ifade edilen, yani nedenselliğin yalnızca verilerden yararlanılarak tersine mühendislik yapılamayacağı görüşünü güçlendirdi.

Bu sonuç benim kendi yaklaşımımı geliştirmeme yol açtı…

Fotoğraf Amanda Jones on Unsplash

Masadaki kartlar, nedensel bir keşif algoritması yazmadım. Daha doğrusu benim algoritmam bağıntılı keşfi bir değişiklikle uyguluyor (kelime oyunu değil!).

Nedensel keşif kitaplıklarından vazgeçtiğimde hâlâ alan uzmanlarıyla konuşmanın başlangıç ​​noktası olarak nedenselliği görselleştirmenin bir yoluna ihtiyacım vardı.

Özellikler/düğümler arasındaki korelasyonları kolayca hesaplayabileceğimi ve bunun en azından iyi bir başlangıç ​​noktası olabileceğini düşündüm.

Düşüncemi şu şekilde geliştirdim; nedensel keşif modellerinde genellikle "etkiyi", yani ilgilendiğimiz veri özelliğini tanımlarız (makine öğrenimi tahminlerindeki "hedef" gibi). Çiçek hastalığı örneğinde bu "Ölüm?", lisansüstü kazanç örneğinde ise "50k'den büyük" kazançtır.

Dolayısıyla herhangi bir özellik ile “etki” arasında korelasyon varsa nedensel yön, “satırın sonunda” olduğu gibi diğer özelliklerden etkiye doğru olmalıdır.

Bir sonraki adımım, aşağıdaki gibi görselleştirilebilecek bir özyinelemeli algoritma geliştirmekti…

Yazara göre resim

Yinelenenler ve çift yönlü bağlantılar zorla hariç tutulmalıdır. Ayrıca bağlantıları (kenarları) açıkça dahil edebilmek veya hariç tutabilmek ve özellikleri (düğümler) açıkça hariç tutabilmek istedim.

Bunlar nedensel keşfi uygulamak için bulduğum 10 satırlık özyinelemeli Python kodudur.

Çözümün nasıl çalıştığını göstermek için otel rezervasyon iptal verilerine ilişkin bazı verileri seçtim.

Verileri okuyarak ve korelasyonlara bir göz atarak başlayalım…

Not: Otel rezervasyonları veri seti genel kullanım için lisanslanmıştır; tam kaynak ve referans ayrıntıları için lütfen makalenin sonundaki referanslar bölümüne bakın.

Yazara göre resim

Keşif algoritmasının ilk çalıştırması yinelemeleri 1'e kadar tutmayı içerir, bu yüzden sadece "etki" ile (nedensel olması gereken) korelasyonlara, yani otel rezervasyonunun iptal edilip edilmediğine bakıyoruz.

Yazara göre resim

Tamam, bu kötü bir başlangıç ​​değil, yineleme/özyineleme/katman sayısını 3'e çıkaralım, korelasyon eşiğini biraz değiştirelim ve ne elde edeceğimizi görelim…

Yazara göre resim

Tamam, çok da kötü değil, ama biraz "meşgul", bu nedenle bir sonraki adım, gürültünün bir kısmına neden olabileceğinden şüphelendiğimiz bazı düğümleri hariç tutmaktır (not: gerçek dünyadaki bir iş durumunda konuşuyor olurduk) bu aşamada alan uzmanlarımız).

Yazara göre resim

Bu daha iyi görünmeye başlıyor. Algoritmamın, "İptal Edildi" bağlantılarının nedensel olduğundan emin olduğunu, çünkü bu "etki" olduğunu, dolayısıyla ondan sonra hiçbir şeyin gelmediğini unutmayın.

Ağacın diğer katmanları birbiriyle ilişkilidir; okların yönü, algoritmanın onları bulduğu sıraya göre eklenmiştir.

Alan uzmanlarıyla (veya bu örnekte otel rezervasyonlarıyla ilgili kendi deneyimimle) çalışırken aşağıdakileri fark ettim:

  • "DifferentRoomAssigned" ile "LeadTime" arasındaki bağlantı yanlış yöndedir çünkü uzun bir rezervasyon teslim süresi, oda rezervasyonunun değişme olasılığını artırır ve bunun tersi geçerli değildir.
  • “BookingChanges” ve “DifferentRoomAssigned” arasındaki korelasyon eşiğin altında ancak nedensel olarak anlamlı olabileceğinden dahil edilmesi gerekiyor.

Bir sonraki denemede algoritmaya bu düzeltmeleri yapması talimatı verilir:

Yazara göre resim

"Gözlenmeyen bir karıştırıcı", bazı düğümler arasında bir bağlantı sağlayarak nedensel modelimizi etkilediğine inandığımız ancak ölçülmemiş ve dolayısıyla şemaya dahil edilmemiş bir faktördür.

Otellere gitme deneyimim ve otelin veri seti hakkındaki bilgim, otel verilerini etkileyen "gözlenmeyen bir kafa karıştırıcı" olduğundan şüphelenmemi sağladı.

Verilerde iki otel var; bir "şehir" oteli ve bir "tatil" oteli. Bu beni, bu nedensel modeldeki gözlemlenmeyen karıştırıcının, “otelde kalma sebebiniz”.

Benim hipotezim şudur tatilciler öncelikli olarak resort otelde konaklarken, iş adamları ve şehir dışına çıkanlar öncelikli olarak şehir otelinde kalıyor.

Ayrıca, bu iki grubun farklı davranışlara sahip olduğunu ve bunun "gözlenmeyen kafa karıştırıcı" olduğunu (veriler "kalış nedenini" yansıtmadığı için gözlemlenmemiştir) bir hipotez kurdum.

NOTEARS ve diğer benzer algoritmalar “gözlenmeyen karıştırıcıları” hesaba katamaz ancak benim geliştirdiğim algoritma bunları aşağıdaki gibi açıkça dahil ederek dikkate alabilir…

Yazara göre resim

Son yinelemenin sonucu, otel verilerindeki nedensellik için alan uzmanlarıyla birlikte keşfedip hassaslaştıracağımdan emin olacağım makul, okunabilir ve anlaşılır bir görselleştirmedir. Bunlar önemli noktalar…

  • Konaklamanın temel nedeni olan “gözlenmeyen bir kafa karıştırıcı” vardır (tatil vs. iş / şehir tatili).
  • "Ülke"nin gözlemlenmeyen kafa karıştırıcı üzerinde nedensel bir etkisi vardır; bazı ülkelerden seyahat edenlerin tatilde olma olasılıkları daha yüksektir.
  • Aynı durum “TotalGuests” için de geçerlidir. Büyük partilerin tatil yapma olasılığı daha yüksektir, bekarların iş gezilerinde olması ve çiftlerin şehir tatillerinde olması daha olasıdır.
  • Gözlemlenmeyen "kalış nedeni"nin "LeadTime", "HotelType" ve "DepositType" üzerinde nedensel etkisi vardır.
  • "LeadTime", "DifferentRoomAssigned", "HotelType", "DepositType" ve "Reason for Stay" (U), "IsCanceled" üzerinde nedensel etkiye sahiptir.

Nedensel Keşif nedensel bağlantıları keşfetmeye yönelik bağıntılı bağlantıların ötesine geçme sürecidir (yani ok bağıntılı çizginin hangi ucuna aittir?). Bunun NOTEARS gibi algoritmalarla otomatikleştirilmesi mümkün değildir veya en azından engelleyici derecede zordur çünkü cevaplar yalnızca verilerde mevcut değildir.

Bununla birlikte, nedensel bir diyagram (Yönlendirilmiş Döngüsel Olmayan Grafik veya DAG olarak da anılır) oluşturmak amacıyla alan uzmanlarıyla birlikte incelenebilmesi için nedenselliği görselleştirmeye hala kritik bir ihtiyaç vardır.

Bu makalede, duyarlılığı (eşik) tekrar tekrar iyileştirmek ve bağlantıları (oklar) düzeltmek, eklemek veya kaldırmak ve ilgisiz olanları hariç tutmak için alan uzmanlarıyla birlikte kullanılabilecek, yalnızca 10 satırlık Python kodu kullanılarak bağıntılı keşfi artırmaya dayalı bir algoritma önerilmiştir. düğümler.

Gelecek makalelerde bu nedensel diyagramlar, karmaşık "Ya şöyle olursa?" sorusunu yanıtlayabilecek tam gelişmiş bir nedensel makine öğrenimi modeli oluşturmak için kullanılacaktır. Müşterilerden ve iş liderlerinden gelen soruları yazın.

Bu makaleyi beğendiyseniz lütfen dikkate alın…

Tavsiye bağlantımla Medium'a katılıyorum (Bu bağlantıyı kullanarak kaydolursanız ücretlerin bir kısmını alacağım).

Yeni bir hikaye yayınladığımda ücretsiz e-postaya abone olmak.

Önceki yazılarıma hızlıca göz atıyorum.

Ücretsiz stratejik veriye dayalı karar verme çerçevemi indiriyorum.

Veri bilimi web sitemi ziyaret ediyorum — Veri Blogu.

Güneş Doğuyor / Horoz Ötme Verileri

Çiçek Hastalığı Verileri

Mezun Kazançları / Nüfus Sayımı Gelir Verileri

Otel Rezervasyon Verileri

Nedensel Keşif: Horoz ötüşü Güneş'in doğmasına neden olur mu? Kaynak https://towardsdatascience.com/causal-discovery-does-the-cockerel-crowing-cause-the-sun-to-rise-f4308453ecfa?source=rss—-7f60cf5620c9—4 adresinden https://towardsdatascience aracılığıyla yeniden yayınlandı. com/feed

<!–

->

Zaman Damgası:

Den fazla Blockchain Danışmanları