Bayes teoremi
Önkoşul:Olasılığın temelleri
Kanca
Nadir bir hastalığın testi %90 doğru (hem hastaları hem sağlıklıları %90 isabetle ayırt ediyor). Testin sonucu pozitif çıktı. Gerçekten hasta olma ihtimalin nedir — %90 mı? Hayır. %32.1. Bu şaşırtıcı fark nereden geliyor?
Sezgi
Çoğu kişi “test %90 doğru, pozitif çıktı, demek ki %90 hastayım” diye düşünür. Bu taban oranı yanılgısıdır — testin doğruluğuna bakıp, hastalığın ne kadar nadir olduğunu unutmak.
Bayes teoremi, yeni bir kanıtın (test sonucu) ışığında bir inancı (hasta olma olasılığı) güncellemenin doğru yoludur — ama bunu yaparken başlangıç noktasını (taban oranı) asla göz ardı etmez. Hastalık nadirse, testin yanlış pozitif verdiği az sayıdaki sağlıklı insan bile, gerçek hastalardan SAYICA daha kalabalık olabilir.
- Gerçek pozitif (45)
- Yanlış negatif (5)
- Yanlış pozitif (95)
- Gerçek negatif (855)
1000 kişiden 50'i gerçekten hasta. Test 140 kişiye pozitif diyor, bunların sadece 45'i gerçekten hasta — pozitif çıkan birinin gerçekten hasta olma olasılığı: %32.1.
Taban oranını düşür (hastalık nadirleşsin): pozitif çıkanlar içindeki gerçek hasta oranı (%) çöküyor. Taban oranını artır: aynı test artık çok daha güvenilir hale geliyor. Testin kendisi hiç değişmedi — değişen, hastalığın ne kadar yaygın olduğu.
Mekanizma
Somut sayılarla ilerleyelim: hastalık toplumun %5’inde var, test %90 duyarlı ve %90 özgül.
Senaryo
# Nadir bir hastalık: toplumun %5'inde var (taban oranı). Test %90 duyarlı (hastayı
# doğru bulma oranı) ve %90 özgül (sağlıklıyı doğru bulma oranı). Testin sonucu POZİTİF
# çıktı — gerçekten hasta olma olasılığın nedir?
taban_orani = 0.05
duyarlilik = 0.90 # P(pozitif | hasta)
ozgulluk = 0.90 # P(negatif | sağlıklı)
print(f"Toplumda hastalık yaygınlığı: %{taban_orani * 100:.0f}")
print(f"Test duyarlılığı (hastayı bulma): %{duyarlilik * 100:.0f}")
print(f"Test özgüllüğü (sağlıklıyı bulma): %{ozgulluk * 100:.0f}")Toplumda hastalık yaygınlığı: %5
Test duyarlılığı (hastayı bulma): %90
Test özgüllüğü (sağlıklıyı bulma): %901000 kişilik bir toplumda düşünelim — doğal frekans yaklaşımı, olasılıkları somut insan sayılarına çevirir:
1000 kişide doğal frekanslar
# 1000 kişilik bir toplumda somut sayılarla düşünelim.
toplam = 1000
hasta = round(toplam * taban_orani)
saglikli = toplam - hasta
gercek_pozitif = round(hasta * duyarlilik)
yanlis_negatif = hasta - gercek_pozitif
gercek_negatif = round(saglikli * ozgulluk)
yanlis_pozitif = saglikli - gercek_negatif
print(f"\n1000 kişiden {hasta} gerçekten hasta, {saglikli} sağlıklı.")
print(f"Hastalardan {gercek_pozitif} pozitif çıkıyor (doğru), {yanlis_negatif} negatif çıkıyor (kaçırılan).")
print(f"Sağlıklılardan {gercek_negatif} negatif çıkıyor (doğru), {yanlis_pozitif} pozitif çıkıyor (yanlış alarm).")
toplam_pozitif = gercek_pozitif + yanlis_pozitif
print(f"\nToplamda {toplam_pozitif} kişi pozitif çıkıyor, ama sadece {gercek_pozitif}'i gerçekten hasta.")
print(f"Pozitif çıkan birinin GERÇEKTEN hasta olma olasılığı: {gercek_pozitif}/{toplam_pozitif} = %{gercek_pozitif / toplam_pozitif * 100:.1f}")
1000 kişiden 50 gerçekten hasta, 950 sağlıklı.
Hastalardan 45 pozitif çıkıyor (doğru), 5 negatif çıkıyor (kaçırılan).
Sağlıklılardan 855 negatif çıkıyor (doğru), 95 pozitif çıkıyor (yanlış alarm).
Toplamda 140 kişi pozitif çıkıyor, ama sadece 45'i gerçekten hasta.
Pozitif çıkan birinin GERÇEKTEN hasta olma olasılığı: 45/140 = %32.150 gerçek hastadan 45’i doğru pozitif çıkıyor. Ama 950 sağlıklı kişiden de %10’u (95 kişi) yanlış pozitif çıkıyor — çünkü test %90 özgül, yani %10 hata payı var. Toplamda 140 kişi pozitif çıkıyor, bunların sadece 45’i gerçek hasta: 45/140 = %32.1.
Çoğu kişi bu noktada “ama test %90 doğru dediniz” diye itiraz eder. Değil, çünkü testin doğruluğu (duyarlılık/özgüllük) ile “pozitif çıkan birinin gerçekten hasta olması” (Bayes sonucu) farklı sorulardır. Sağlıklı insan sayısı (950) hasta sayısından (50) o kadar fazla ki, testin küçük hata payı bile mutlak sayıda çok kişiyi (95) yanlış pozitif yapıyor — ve bu 95 kişi, 45 gerçek hastadan daha kalabalık.
Matematik
Bayes teoreminin formülü
| Sembol | Anlamı |
|---|---|
| Taban oranı (prior) — kanıttan önceki inancımız (hastalığın toplumdaki yaygınlığı) | |
| Duyarlılık — hastaysan testin pozitif çıkma olasılığı | |
| Kanıtın (pozitif çıkmanın) toplam olasılığı — hem gerçek hem yanlış pozitifleri kapsar | |
| Sonsal olasılık (posterior) — kanıttan (pozitif test) sonra güncellenmiş inancımız |
Bayes formülü, doğal frekans hesabıyla (yukarıdaki notebook) birebir aynı sonucu verir — formül sadece aynı mantığın cebirsel ifadesidir. ‘yi hesaplarken hem gerçek pozitifleri hem yanlış pozitifleri toplamak kritiktir — bu adımı atlamak, taban oranı yanılgısının matematiksel kökenidir.
Kod
Aynı formülü doğrudan uygulayıp, sonra taban oranının sonucu ne kadar değiştirdiğini görelim:
Formülle doğrulama
# Aynı sonucu Bayes formülüyle doğrulayalım.
p_pozitif = duyarlilik * taban_orani + (1 - ozgulluk) * (1 - taban_orani)
p_hasta_verilen_pozitif = (duyarlilik * taban_orani) / p_pozitif
print(f"\nP(pozitif) = {p_pozitif:.4f}")
print(f"P(hasta | pozitif) = {p_hasta_verilen_pozitif:.4f} = %{p_hasta_verilen_pozitif * 100:.1f}")
print("Doğal frekans hesabıyla birebir aynı sonuç.")
P(pozitif) = 0.1400
P(hasta | pozitif) = 0.3214 = %32.1
Doğal frekans hesabıyla birebir aynı sonuç.Taban oranının etkisi
# Taban oranı P(hasta|pozitif)'i nasıl değiştiriyor? Testin kendisi (duyarlılık, özgüllük) SABİT.
print("\nAynı test, farklı taban oranlarında:")
for taban in [0.001, 0.01, 0.05, 0.30, 0.50]:
p_poz = duyarlilik * taban + (1 - ozgulluk) * (1 - taban)
p_hasta_poz = (duyarlilik * taban) / p_poz
print(f" taban oranı=%{taban * 100:>5.1f} → P(hasta|pozitif)=%{p_hasta_poz * 100:.1f}")
Aynı test, farklı taban oranlarında:
taban oranı=% 0.1 → P(hasta|pozitif)=%0.9
taban oranı=% 1.0 → P(hasta|pozitif)=%8.3
taban oranı=% 5.0 → P(hasta|pozitif)=%32.1
taban oranı=% 30.0 → P(hasta|pozitif)=%79.4
taban oranı=% 50.0 → P(hasta|pozitif)=%90.0Aynı test (%90 duyarlılık, %90 özgüllük), taban oranı %0.1’den %50’ye çıkarken, sonsal olasılık %0.9’dan %90’a fırlıyor. Testin kendisi bir milim değişmedi — sadece hastalığın ne kadar yaygın olduğu değişti.
Nerede işe yarar
Bayes teoremi, “yeni kanıtla inancı güncelle” mantığının gerektiği her yerde işler:
- Tıbbi tanı. Nadir hastalıkların taramasında, pozitif bir sonucun gerçek anlamını yorumlamak için taban oranı şarttır — bu yüzden nadir hastalık taramaları genelde ikinci bir doğrulama testi gerektirir.
- Spam filtreleri ve dolandırıcılık tespiti. Bir e-postanın “spam” ya da bir işlemin “sahte” olma olasılığı, o kelimenin/örüntünün ne kadar nadir olduğuna (taban oranına) bağlıdır.
- Makine öğrenmesinde Naive Bayes. 2. derste değindiğimiz bağımsızlık varsayımıyla birlikte, sınıflandırma yapan klasik bir algoritmanın temelidir.
Bu 3 hatayı yaparsın:
- Testin doğruluğunu (duyarlılık/özgüllük) doğrudan “pozitif çıkan biri gerçekten hasta mı” sorusunun cevabı sanmak.
- Taban oranını göz ardı etmek — özellikle nadir olaylarda (dolandırıcılık, nadir hastalık) bu, sonucu tamamen yanlış yorumlatır.
- “Duyarlılık yüksek, demek ki test güvenilir” demek — özgüllük de en az duyarlılık kadar önemlidir, özellikle taban oranı düşükken.
Kendini test et
1. %90 duyarlı bir test pozitif çıktı. Bu, hasta olma olasılığının %90 olduğu anlamına gelir mi?
- Evet, her zaman
- Hayır — taban oranına (hastalığın yaygınlığına) bağlı olarak çok daha düşük olabilir (doğru cevap)
- Evet ama sadece büyük popülasyonlarda
- Duyarlılık bu soruyla ilgisizdir
Neden: Notebook'ta gördüğümüz gibi, %90 duyarlı ve %90 özgül bir test, %5 taban oranında sadece %32.1'lik bir sonsal olasılık veriyor — duyarlılık tek başına yeterli bilgi değildir.
2. Taban oranı çok düşükken (nadir bir olay) bir testin pozitif sonucuna neden temkinli yaklaşılmalı?
- Testler nadir olaylarda çalışmaz
- Sağlıklı/olumsuz grup çok büyük olduğu için, küçük bir hata oranı bile mutlak sayıda çok fazla yanlış pozitif üretebilir (doğru cevap)
- Nadir olaylarda olasılık hesaplanamaz
- Taban oranının sonuçla hiçbir ilgisi yoktur
Neden: Sağlıklı grup (950 kişi) hasta gruptan (50 kişi) çok daha kalabalık olduğu için, testin küçük yanlış pozitif oranı (%10) bile gerçek hastalardan daha fazla yanlış pozitif üretebiliyor.
3. Bayes formülündeki P(E) (kanıtın toplam olasılığı) neyi kapsamalıdır?
- Sadece gerçek pozitifleri
- Hem gerçek pozitifleri hem yanlış pozitifleri (doğru cevap)
- Sadece taban oranını
- Sadece özgüllüğü
Neden: P(E), pozitif çıkan HERKESİ kapsamalı — hem gerçekten hasta olup doğru pozitif çıkanları hem de sağlıklı olup yanlış pozitif çıkanları. Bu adımı atlamak taban oranı yanılgısına yol açar.
Özet
Özet
- Bayes teoremi, yeni bir kanıt ışığında bir olasılığı (taban oranından sonsal olasılığa) günceller.
- Taban oranı (prior), sonucu en az testin kendisi kadar etkiler — özellikle nadir olaylarda.
- Doğal frekans yaklaşımı (1000 kişi üzerinden düşünmek), Bayes formülünü sezgisel hale getirir.
- Duyarlılık yüksek olsa bile, taban oranı düşükse "pozitif çıkan biri gerçekten pozitif mi" sorusunun cevabı düşük olabilir.
- Nadir olay tespitinde (hastalık, dolandırıcılık, spam), taban oranını görmezden gelmek en yaygın yorumlama hatasıdır.