Ana içeriğe geç

Orta14 dk

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): %90

1000 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.1

50 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ü
P(HE)=P(EH)P(H)P(E)P(H \mid E) = \frac{P(E \mid H) \cdot P(H)}{P(E)}
SembolAnlamı
P(H)P(H)Taban oranı (prior) — kanıttan önceki inancımız (hastalığın toplumdaki yaygınlığı)
P(EH)P(E \mid H)Duyarlılık — hastaysan testin pozitif çıkma olasılığı
P(E)P(E)Kanıtın (pozitif çıkmanın) toplam olasılığı — hem gerçek hem yanlış pozitifleri kapsar
P(HE)P(H \mid E)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. P(E)P(E)‘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.0

Aynı 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:

  1. Testin doğruluğunu (duyarlılık/özgüllük) doğrudan “pozitif çıkan biri gerçekten hasta mı” sorusunun cevabı sanmak.
  2. Taban oranını göz ardı etmek — özellikle nadir olaylarda (dolandırıcılık, nadir hastalık) bu, sonucu tamamen yanlış yorumlatır.
  3. “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?
  1. Evet, her zaman
  2. Hayır — taban oranına (hastalığın yaygınlığına) bağlı olarak çok daha düşük olabilir (doğru cevap)
  3. Evet ama sadece büyük popülasyonlarda
  4. 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ı?
  1. Testler nadir olaylarda çalışmaz
  2. 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)
  3. Nadir olaylarda olasılık hesaplanamaz
  4. 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?
  1. Sadece gerçek pozitifleri
  2. Hem gerçek pozitifleri hem yanlış pozitifleri (doğru cevap)
  3. Sadece taban oranını
  4. 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.
Sonraki adım: Korelasyon, nedensellik ve yaygın tuzaklar →