Olasılık dağılımı, genelde olasılık teorisi ve istatistik kapsamında kullanılır – kısaca bize bir deneyde farklı sonuçların ne kadar olası olduğunu verir.
Normal Dağılım (Gaussian)
Normal Dağılım, en önemli dağılımlardan biridir. Alman matematikçi Carl Friedrich Gauss’tan sonra Gaussian Dağılımı olarak da adlandırılmaktadır. Birçok olayın olasılık dağılımına uyar. Örneğin IQ derecesi, kalp atışı gibi.
Python normal dağılımı, random değişkenleri simetrik bir çan şeklindeki bir grafikte dağıtan bir fonksiyondur. Bunu, her bir değer için olasılık dağılımını düzenleyerek yapar.
Python’da Normal Veri Dağılımı almak için random.normal() yöntemi kullanılır. Bu yöntemin üç parametresi bulunmaktadır. Bunlar:
loc – (Ortalama, Mean) çan eğrisinin tepesinin olduğu yer.
scale – (Standart Sapma, Standard Deviation) grafik dağılımının ne kadar düz olması gerektiği.
size – (Shape) döndürülen dizinin şekli.
Yukarıda oluşturduğumuz normal dağılımı görselleştirelim:
Binom Dağılımı
Binom dağılımı (Binomial Distribution), kesikli, ayrık (discrete) bir dağılımdır. Bunun anlamı ayrı olaylarda tanımlanır, örneğin bir yazı tura atmanın sonucu, yalnızca yazı veya yalnızca tura olabileceği için ayrıdır ya da kesiklidir anlamına gelir ancak insanların boyu 165, 165.1, 165.11 gibi olabileceğinden süreklidir. Binom dağılımı sürekli bir dağılım değildir.
Binom dağılımının matematiksel temellerini göz atmak isterseniz: Python – Binomial Distribution
Binom dağılımı kısaca ikili senaryoların sonucunu açıklar; yazı tura atarsanız, ya yazı ya tura gelecektir.
İnsanlar genelde “10 kere yazı tura attım ve 6 kere tutturdum” gibi deterministik düşünme eğilimindedir. Sonuç 6 ise o zaman olasılık dağılımı nerede? diyebilirsiniz. Olasılık dağılımları varyanstan kaynaklanır. Hem siz hem ben 10 kere yazı tura atarsak, büyük olasılıkla farklı sonuçlar elde ederiz (sizin 5 tahmininiz tutarken benim 7 tahminim tutabilir). Bu varyanstır, yani sonuç etrafındaki belirsizlik, temelde bize hangi sonuçların nispeten daha olası olduğunu (5 tutturma gibi) ve hangi sonuçların nispeten daha az olası olduğunu (10 tutturma gibi) söyleyen bir olasılık dağılımı üretir.
Yukarıdaki görseldeki yazı-tura atma örneğinde olduğu gibi her 10 atış rastgele bir değişken gibidir. Tam olarak kaç tahminin doğru çıkacağımızı önceden bilemeyiz. Ancak dağılımını bilirsek, hangi sonuçların olası hangilerinin olası olmadığını biliriz. Temelde herhangi bir istatistiksel dağılımın bize verdiği bilgi şudur: “Olası sonuçların her birini almanın ne kadar olası olduğunu gösteren bir grafik çiz”.
>> Normal dağılım üzerine nitelikli bir yazı için tıklayınız.
Python binom dağılımı, n bağımsız deneyde ne sıklıkla başarı olacağının olasılığını belirtir. Bu tür deneyler evet-hayır soruları gibidir ya da yukarıdaki gibi bozuk para atmak gibi olabilir.
Binom dağılımı almak için random.binomial() yöntemi kullanılır. Üç parametresi vardır:
n – deneme sayısı.
p – her denemenin gerçekleşme olasılığı (örneğin, yazı tura atarken her birinin gelme olasılığı 0.5).
size – döndürülen dizinin şekli.
Binom dağılımını görselleştirelim:
Kernel Density Estimation (KDE) parametrik olmayan bir yöntem olması açısından histogramlara benzer. >> Daha fazla bilgi için tıklayınız.
Gerçek Bir Yaşam Örneği –Binom Dağılımı
Binom dağılımı için gerçek bir örneği inceleyelim. Bir şirketin çağrı merkezi çalışanları, potansiyel müşterileri arıyor ve onların bir takım ürünleri satın almalarını sağlıyorlar. Bu şirketin Yatırım Getirisini (return on investment, ROI) iyileştirmekle görevli veri bilimciler var.
Veri bilimciler bazı geçmiş verilere bakarak aşağıdaki değerleri buluyor:
- Bir çağrı merkezi çalışanı günde ortalama 50 müşteri çağrısını yanıtlamaktadır.
- Her aramada müşterilerin satın alma olasılığı %4.
- Her satın almada şirketin elde ettiği ortalama gelir 20 dolar.
- Analiz edilen çağrı merkezinin toplam 100 çalışanı var.
- Her çalışana günlük 200 dolar ödeniyor.
Aşağıdaki kod parçacığı çağrı merkezinin ROI hesaplama amaçlı simülasyon kodudur:
Kodu her çalıştırdığınızda kazanç, harcamalara kıyasla oldukça zayıf görünüyor. Ancak bunlar sadece rastgele oluşturulmuş bir günün sonuçlarıdır. 1000’den fazla simülasyon üzerinden çağrı merkezimizin kazancına bakılırsa, günlük kârın nasıl değiştiği görülebilir:

Yukarıdaki grafiğe göre çağrı merkezinin duruma göre kaybı yüksek (simüle edilmiş kazançların neredeyse yarısı negatif). O halde ne yapılabilir?
Her çalışanın sonuçlarının binom dağılımı takip ettiğini hatırlayarak, işleri iyileştirmek için aşağıdakilerden biri veya birkaçı yapılabilir:
- Daha çok çağrı yapmak (n’i artırın).
- Daha yüksek bir yüzde ile müşterilerden satın alma dönüşü sağlamak (p’yi artırın).
- Çalışanlara daha az ödeme yapmak (Bunu yapmayalım!).
Çağrı merkezi çalışanlarının şirket ürünlerini satın alma olasılığı daha yüksek olan kişileri belirlemelerine olanak sağlayan “Potansiyel müşteri oluşturma aracı” geliştirmeye karar veriyoruz. Daha kısa telefon görüşmeleri (daha az tatlı konuşmalar), satın alma dönüş olasılığında artış ve sonuçta parametrelerimiz şu şekilde değişiyor:
n = 55
p = %5
Bu değişikliklerin gelecekteki günlük kârımızın istatistiksel dağılımını nasıl etkilediğini görmek için yeni ve iyileştirilmiş çağrı merkezimizin 1000 potansiyel gününü simüle eden aşağıdaki kod satırlarını çalıştıralım.
Bu örnekte her çalışanın ürettiği kârın bir binom dağılımını takip ettiğini anlamış olduk – bu nedenle, hem n (günlük yapılan çağrı sayısı) hem de p (her çağrı için müşterinin satın alma dönüş olasılığı) parametrelerini artırabilirsek, daha yüksek karlar elde edebiliriz. >> Örneğin orijinali için tıklayınız.
Şimdi Sıra Sizde! Bulma olasılığını belirlemek için Python’da bir binom hesabı yapın: 100 doğumda 7, 8, 9, 10, 11, 12 veya 13 bebeğin doğum ağırlıkları düşük bebek olma olasılığı (prematüre bebek) 0,1. Bir tabloda değerleri düzenleyin. Bu olasılıkları (dikey eksen) prematüre bebeklerin sayısına göre çizin. >> Cevabınız bu forumda.
Normal Dağılım ve Binom Dağılımı Arasındaki Fark Nedir?
Temel fark, normal dağılımın sürekli olması, binom dağılımının kesikli olmasıdır. Ancak şu da mümkündür; binom dağılımda yeterli veri noktası varsa, belirli loc ve scale değerleri ile normal dağılıma oldukça benzer sonuçlar elde edilecektir.
Aşağıdaki örneği inceleyelim:
Poisson Dağılımı
Poisson dağılımı, kesikli bir dağılımdır. Belirli bir zamanda bir olayın kaç kez olabileceğini tahmin eder. Örneğin; bir kişi günde 3 kez kahve içiyorsa, 5 kez kahve içme olasılığı nedir? ya da tam tersi gibi.
Python Poisson dağılımı, kısaca bize belirli sayıda olayın sabit bir zaman veya uzay aralığında meydana gelmesinin ne kadar olası olduğunu söyler. Bu dağılım olayların sabit bir oranda ve ayrıca son olaydan bağımsız olduğunu varsaymaktadır.
Poisson dağılımı almak için random.poisson() yöntemi kullanılır. İki parametresi vardır:
lam – oranı veya bilinen oluşum sayısı,( ör. yukarıdaki örnekte 3)
size – döndürülen dizinin şekli.
Poisson süreci, olaylar arasındaki ortalama sürenin bilindiği ancak olayların kesin zamanlamasının rastgele olduğu bir dizi ayrı olay için bir modeldir. Bir olayın gelişi, önceki olaydan bağımsızdır (olaylar arasındaki bekleme süresi belirsizdir). Burada önemli olan nokta, olaylar arasındaki ortalama süreyi bilmemiz ve bunların rastgele aralıklarla yerleştirilmiş olması. O halde bu süreç aşağıdaki özelliklere sahiptir diyebiliriz:
- Olaylar birbirinden bağımsızdır. Bir olayın meydana gelmesi, başka bir olayın meydana gelme olasılığını etkilemez.
- Ortalama oran (yani belli bir zaman periyodu başına olay) sabittir.
- Aynı anda iki olay gerçekleşemez.
Örneğin; Bir yılda Dünya’ya çarpan ve çapı 1 metreden büyük göktaşlarının sayısını tahmin etmek, 22.00-23.00 arası acil servise gelen hasta sayısını tahmn etmek, 30 dakikalık bir zaman diliminde bir araba yıkama servisine rastgele gelen araçların sayısını tahmin etmek, bir Poisson dağılım süreci olarak tanımlanabilir.
Poisson süreçleri genellikle zamanla ilişkilendirilir, ancak bu her zaman olmak zorunda değildir. Örneğin stok takip durumunda, günlük ortalama hareketleri (zaman başına olay) tahmin edebiliriz, ancak bir dönüm arazideki ağaç sayısı için (alan başına olay) de olabilir.
Diğer yandan Poisson süreci için sıklıkla verilen bir örnek, otobüs, tren varış saatleridir. Ancak, bu gerçek bir Poisson süreci değildir çünkü otobüslerin varış saatleri çoğu zaman birbirinden bağımsız değildir. Bir otobüsün gecikmesi bir sonraki otobüsün varış zamanını etkileyebilir. >> Örneği inceleyebilirsiniz.
Normal ve Poisson Dağılımı Arasındaki Fark
Normal dağılım sürekli, poisson dağılımı kesiklidir. Ancak, yeterince büyük bir poisson dağılımı, binom dağılımına benzer şekilde, belirli standart sapmada ve ortalamada normal dağılıma benzer hale gelebilir.
Poisson ve Binom Dağılımı Arasındaki Fark
Bu iki dağılım arasındaki fark çok belirsizdir. Binom dağılımı kesikli denemeler içindir, poisson dağılımı ise sürekli denemeler içindir. Aşağıdaki örnekte çok büyük n ve sıfıra yakın p için binom dağılımı, poisson dağılımıyla neredeyse özdeştir, diğer yandan n * p neredeyse lam’a eşittir.
Bir sonraki bölümde NumPy’da olasılık dağılımlarından bahsetmeye devam edeceğim.
Tekrar görüşmek dileğiyle,
Bir önceki bölüm: NumPy’da Random Sayılar, Random Veri Dağılımı ve Seaborn – Bölüm 10