---
title: "Koşullamaya Devam ve Toplam Olasılık Yasası"
subtitle: "LOTP, hastalık testi, savcı yanılgısı, explaining away"
---
::: {.callout-note title="Bölüm bilgisi"}
- **Blitzstein'in videosu:** [YouTube — Lecture 5: Conditioning Continued, Law of Total Probability](https://www.youtube.com/watch?v=JzDvVgNDxo8) (≈50 dk)
- **Okuma süresi:** ≈28 dk
:::
## Bu Derste Ne Var? {#sec-bu-derste}
[Ders 4](04-kosullu-olasilik.qmd)'te koşullu olasılığı ve Bayes'i kurduk. Burada onu **kullanıyoruz**:
1. **Toplam olasılık yasası (LOTP):** karmaşık $P(B)$'yi ayrık durumlara bölüp birleştir.
2. **Bayes + LOTP:** hastalık testi — %95 "doğru" test, ama pozitifin sadece %16'sı gerçekten hasta.
3. **Biyohazardlar:** $P(A \mid B)$ ile $P(B \mid A)$ (savcı yanılgısı), prior ile posterior, bağımsızlık ile koşullu bağımsızlık.
> *"you can't really think clearly except under the condition that you understand how to think conditionally."* — Blitzstein, 1:33
::: {.callout-tip title="Builder Notu — ML Köprüleri"}
- **LOTP = marjinalleştirme:** $p(x) = \sum_z p(x \mid z) p(z)$. Latent değişkenli modellerin (mixture, VAE, EM, HMM) temeli.
- **Hastalık testi = precision vs recall.** Dengesiz veride accuracy neden yanıltır.
- **Savcı yanılgısı** = $p(\text{veri} \mid \text{model})$ ile $p(\text{model} \mid \text{veri})$'yi karıştırmak.
- **Koşullu bağımsızlık** = Bayesian ağların ve naive Bayes'in çekirdeği; **explaining away** = collider yapısı.
:::
## Toplam Olasılık Yasası (LOTP) {#sec-lotp}
Örnek uzay $S$'yi **böler (partition)** ayır: $A_1, A_2, \ldots, A_n$ hem **ayrık** hem de **birleşimleri $S$**. Bir $B$ olayını her parça keser:
$$
P(B) = \sum_{i=1}^{n} P(B \cap A_i) = \sum_{i=1}^{n} P(B \mid A_i)\,P(A_i)
$$
> *"I prefer to just think of it as breaking up a problem into simpler pieces."* — Blitzstein, 7:28
Kritik nokta: yararı, **partition'ı ne kadar iyi seçtiğine** bağlı. Kötü bölme $n$ eşit zor problem verir; iyi bölme her parçayı kolaylaştırır.
```{python}
#| label: fig-lotp-partition
#| fig-cap: "LOTP geometrisi: S'yi A1, A2, A3'e böl (ayrık + birleşim S). B olayını her parça keser; P(B) = sum P(B|Ai)P(Ai)."
#| fig-width: 10
#| fig-height: 4.5
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle, Ellipse
fig, ax = plt.subplots(figsize=(10, 4.5))
ax.add_patch(Rectangle((0, 0), 9, 4, facecolor='#f3f4f6', edgecolor='#1f2937', linewidth=2))
# Partition Ai
renkler = ['#fef3c7', '#fed7aa', '#bfdbfe']
isimler = ['$A_1$', '$A_2$', '$A_3$']
genislikler = [3, 3.5, 2.5]
basla = 0
for w, c, ad in zip(genislikler, renkler, isimler):
ax.add_patch(Rectangle((basla, 0), w, 4, facecolor=c, edgecolor='#6B7280',
linewidth=1.5, alpha=0.85))
ax.text(basla + w/2, 3.5, ad, fontsize=18, weight='bold', ha='center', color='#1f2937')
basla += w
# B olayı (elips, partition'ları keser)
ax.add_patch(Ellipse((4.5, 1.5), 6.5, 1.8, facecolor='#A51C30', alpha=0.4,
edgecolor='#6B0E1B', linewidth=2))
ax.text(4.5, 1.5, '$B$', fontsize=20, weight='bold', ha='center', va='center', color='white')
# B ∩ Ai parçaları için annotation
ax.annotate('$P(B) = P(B|A_1)P(A_1) + P(B|A_2)P(A_2) + P(B|A_3)P(A_3)$',
xy=(4.5, -0.3), ha='center', fontsize=12, color='#6B0E1B', weight='bold')
ax.set_xlim(-0.5, 9.5); ax.set_ylim(-0.8, 4.4); ax.set_aspect('auto')
ax.set_title('LOTP: $B$\'yi partition $\\{A_1, A_2, A_3\\}$ ile parçalara böl, koşullu olasılıkları ağırlıkla topla',
fontsize=11)
ax.set_xticks([]); ax.set_yticks([])
for sp in ax.spines.values(): sp.set_visible(False)
plt.tight_layout()
plt.show()
```
::: {.callout-tip title="Builder Notu — Marjinalleştirme ve Latent Modeller"}
LOTP, olasılıksal modellerde **marjinalleştirmenin** ta kendisi: $p(x) = \sum_z p(x \mid z) p(z)$. Sınıflandırıcının marjinal tahmini, mixture'da bileşenleri toplama, HMM'de gizli durumları toplama — hepsi LOTP. "İyi partition seç" tavsiyesi de gizli değişkeni doğru tasarlamaya denk düşer.
:::
## İki Kart Paradoksu: "Bir As" vs "Maça Ası" {#sec-iki-kart}
52 kartlık desteden 2 kart. İki koşullu olasılığı karşılaştır:
**(a) İki as, en az bir as verildiğinde:**
$$
P(\text{iki as} \mid \text{en az bir as}) = \frac{\binom{4}{2}}{\binom{52}{2} - \binom{48}{2}} = \frac{6}{198} = \frac{1}{33}
$$
**(b) İki as, maça ası verildiğinde:** Bir kart maça ası, diğer kart 51 kartın eşit olası biri. Bunların 3'ü as:
$$
P(\text{iki as} \mid \text{maça ası}) = \frac{3}{51} = \frac{1}{17}
$$
Şaşırtıcı: **hangi as** olduğunu söylemek olasılığı neredeyse **iki katına** çıkardı. "Bir as" = varoluşsal (belirsiz); "maça ası" = belirli bir kartı sabitlemek.
::: {.callout-tip title="Builder Notu — Kanıtın Belirliliği"}
Kanıtın **belirliliği** posterior'u kökten değiştirir. "En az bir" tipi (varoluşsal) ile "belirli bir öğe" tipi farklı sonuç verir — **selection effect / gözlem çerçevesi sorunudur**. Bir modele kanıt verirken "belirli mi, varoluşsal mı" ayrımı çıkarılan sonucu değiştirir.
:::
## Hastalık Testi: Bayes + LOTP El Ele {#sec-hastalik}
Hastalık nüfusun **%1'inde**. Test **%95 doğru**:
$$
P(T \mid D) = 0{,}95 = P(T^c \mid D^c)
$$
Hastanın merak ettiği $P(D \mid T)$. Bayes + LOTP:
$$
P(D \mid T) = \frac{P(T \mid D)P(D)}{P(T \mid D)P(D) + P(T \mid D^c)P(D^c)} = \frac{0{,}95 \cdot 0{,}01}{0{,}95 \cdot 0{,}01 + 0{,}05 \cdot 0{,}99} \approx 0{,}16
$$
%95 doğru test pozitif verdiğinde bile, hasta olma olasılığı sadece **%16**.
> *"there's only a 16% chance that the patient has the disease."* — Blitzstein, 26:15
```{python}
#| label: fig-hastalik
#| fig-cap: "Hastalık testi frekansçı sezgi: 10.000 kişide 100 hasta (95'i pozitif) ve 9900 sağlam (495'i yanlış pozitif). Toplam 590 pozitif → 95/590 ≈ %16,1 gerçekten hasta."
#| fig-width: 11
#| fig-height: 5
import matplotlib.pyplot as plt
import numpy as np
N = 10000
hasta = 100
saglam = N - hasta
hasta_poz = int(hasta * 0.95) # 95
hasta_neg = hasta - hasta_poz # 5
saglam_poz = int(saglam * 0.05) # 495
saglam_neg = saglam - saglam_poz # 9405
fig, axes = plt.subplots(1, 2, figsize=(11, 5))
# Sol: 4'lü tablo
ax = axes[0]
veri = [[hasta_poz, hasta_neg], [saglam_poz, saglam_neg]]
etiketler = [['Hasta + Pozitif\n95', 'Hasta + Negatif\n5'],
['Sağlam + Pozitif\n495 (yanlış)', 'Sağlam + Negatif\n9405']]
renkler = [['#A51C30', '#fdf2f8'], ['#DD6B20', '#bfdbfe']]
for i in range(2):
for j in range(2):
ax.add_patch(plt.Rectangle((j, 1-i), 1, 1, facecolor=renkler[i][j],
edgecolor='#1f2937', linewidth=2))
ax.text(j + 0.5, 1.5 - i, etiketler[i][j], ha='center', va='center',
fontsize=10, color='white' if i == 0 and j == 0 else '#1f2937', weight='bold')
ax.text(-0.15, 1.5, 'Hasta\n(%1)', ha='right', va='center', fontsize=11, weight='bold', color='#A51C30')
ax.text(-0.15, 0.5, 'Sağlam\n(%99)', ha='right', va='center', fontsize=11, weight='bold', color='#DD6B20')
ax.text(0.5, 2.15, 'Pozitif', ha='center', fontsize=12, weight='bold')
ax.text(1.5, 2.15, 'Negatif', ha='center', fontsize=12, weight='bold')
ax.set_xlim(-0.7, 2.3); ax.set_ylim(-0.2, 2.5); ax.set_aspect('equal')
ax.set_title('10.000 kişi — 4\'lü tablo', fontsize=12)
ax.set_xticks([]); ax.set_yticks([])
for sp in ax.spines.values(): sp.set_visible(False)
# Sağ: Pozitif çıkanların kompozisyonu
ax = axes[1]
toplam_poz = hasta_poz + saglam_poz
ax.barh(['Toplam pozitif\n= 590'], [hasta_poz], color='#A51C30', label=f'Gerçekten hasta: 95 (%{100*hasta_poz/toplam_poz:.1f})')
ax.barh(['Toplam pozitif\n= 590'], [saglam_poz], left=[hasta_poz], color='#DD6B20',
label=f'Yanlış pozitif: 495 (%{100*saglam_poz/toplam_poz:.1f})')
ax.text(hasta_poz/2, 0, f'{hasta_poz}', ha='center', va='center', fontsize=14, color='white', weight='bold')
ax.text(hasta_poz + saglam_poz/2, 0, f'{saglam_poz}', ha='center', va='center', fontsize=14, color='white', weight='bold')
ax.legend(loc='upper right', fontsize=10)
ax.set_xlabel('kişi sayısı', fontsize=12)
ax.set_title(f'$P(D \\mid T) = 95/590 \\approx 0{{,}}161$', fontsize=12)
ax.set_xlim(0, 650)
ax.grid(True, axis='x', alpha=0.3)
plt.tight_layout()
plt.show()
```
::: {.callout-important title="Builder Notu — Precision vs Recall"}
Bu örnek **precision vs recall**'un ta kendisi. $P(T \mid D)$ = recall/sensitivity; $P(D \mid T)$ = precision. Test "%95 accurate" görünse de, dengesiz veride (%1 pozitif) precision çöker — **accuracy'nin neden yanıltıcı bir metrik** olduğunun kanıtı. Aynı hesap, bir dolandırıcılık dedektörünün alarmlarının çoğunun neden yanlış pozitif olduğunu açıklar; çözüm base rate'i hesaba katmak ve **kalibrasyon**.
:::
## Biyohazard 1: P(A|B) ≠ P(B|A) — Savcı Yanılgısı {#sec-savci-yanilgisi}
Blitzstein bu yaygın hataları "biyohazard" diye adlandırıyor. Birincisi: **$P(A \mid B)$ ile $P(B \mid A)$'yı karıştırmak**. Hukukta buna **savcı yanılgısı** denir.
**Sally Clark davası.** İki bebeği SIDS'le ölen kadın, "uzman" tanığa göre $(1/8500)^2 \approx 1/73$ milyon olasılıkla "masum". İki hata:
- **Bağımsızlık varsayımı:** iki ölüm bağımsız sayıldı — ortak genetik faktör olabilir.
- **Savcı yanılgısı:** $1/73$ milyon = $P(\text{kanıt} \mid \text{masum})$, ama önemli olan $P(\text{masum} \mid \text{kanıt})$. Bayes ile çevirince paya **$P(\text{masum})$** girer; çoğu anne masum olduğundan bu prior $\approx 1$'e yakın, hesap kökten değişir.
Clark yıllarca hapis yattı; karar sonradan bozuldu.
::: {.callout-important title="Builder Notu — Likelihood ≠ Posterior"}
Savcı yanılgısı = **olabilirlik $p(\text{kanıt} \mid \text{hipotez})$ ile posterior $p(\text{hipotez} \mid \text{kanıt})$'u karıştırmak**. Bir modelde "p(veri | null) çok düşük" demek "p(null | veri) çok düşük" demek **değildir** — prior olmadan posterior'a geçemezsin. P-değeri yanlış-yorumlarının kökü budur.
:::
## Biyohazard 2 ve 3: Prior↔Posterior ve Koşullu Bağımsızlık {#sec-biyohazard-2-3}
**Biyohazard 2: prior ile posterior'u karıştırmak.** $P(A)$ prior (kanıttan önce); $P(A \mid B)$ posterior. Sık hata: "A gerçekleşti deniyor, o hâlde $P(A) = 1$." Yanlış. Doğrusu:
$$
P(A \mid A) = 1
$$
Verilen bilgi koşul çubuğunun **sağına** gider, $P(A)$'yı $1$ yapmaz.
**Biyohazard 3: koşullu bağımsızlığı bağımsızlıkla karıştırmak.** $A$ ve $B$, $C$ verildiğinde koşullu bağımsızdır:
$$
P(A \cap B \mid C) = P(A \mid C)\,P(B \mid C)
$$
Bağımsızlık tanımının her yerine "$\mid C$" ekle.
::: {.callout-tip title="Builder Notu — PGM ve Naive Bayes"}
**Koşullu bağımsızlık** = **Bayesian ağların (graphical models)** çekirdeği — bir değişken ebeveynlerine koşullu olarak gerisinden bağımsızdır; dev birleşik dağılım küçük çarpanlara iner. **Naive Bayes**: "özellikler, sınıfa koşullu bağımsızdır" — çoğu zaman yanlış ama şaşırtıcı işe yarar.
:::
## Explaining Away: Bağımsız ama Koşullu Bağımlı {#sec-explaining-away}
İki örnek bağımsızlık ↔ koşullu bağımsızlığın birbirini gerektirmediğini gösterir.
**(a) Koşullu bağımsız ⇏ bağımsız.** Bilmediğin güçlü/zayıf bir satranç rakibiyle bir dizi maç. Güce **koşullu** olarak maçlar bağımsız (güç sabit). Ama koşulsuz **bağımsız değil**: ilk beş galibiyet, sonrakileri tahmin etmeye yarar.
**(b) Bağımsız ⇏ koşullu bağımsız (explaining away).** Yangın alarmı: F = gerçek yangın, C = patlamış mısır. F ile C **bağımsız**. Alarmın çaldığını (A) öğrenince:
$$
P(F \mid A \cap C^c) = 1
$$
Alarm çaldı + popcorn yok → yangın olmak **zorunda**. F ve C başta bağımsız, ama ortak sonuçlarına (A) koşullandığında **bağımlı** hale gelirler.
```{mermaid}
%%| label: fig-collider
%%| fig-cap: "Collider (v-yapısı): iki bağımsız neden (F, C) → ortak sonuç (A). A'ya koşullanmak F ve C'yi bağımlı yapar — explaining away. Nedensel çıkarımda collider'a koşullanmak sahte korelasyon üretir (Berkson paradoksu)."
flowchart LR
F["F<br/>Yangın<br/>(neden 1)"] --> A["A<br/>Alarm çaldı<br/>(ortak sonuç)"]
C["C<br/>Popcorn<br/>(neden 2)"] --> A
A -.->|"A'ya koşullan"| Renk["F ⊥ C başta<br/>F ⊥̸ C | A<br/>(explaining away)"]
style F fill:#fef3c7,stroke:#9a3412
style C fill:#bfdbfe,stroke:#1e3a5f
style A fill:#fce7f3,stroke:#A51C30,stroke-width:3px
style Renk fill:#fef9c3,stroke:#6B0E1B
```
::: {.callout-important title="Builder Notu — Collider Bias / Berkson"}
Bu doğrudan **Bayesian ağlardaki collider (v-yapısı)**. Collider'a **koşullanmak** nedenleri bağımlı yapar — nedensel çıkarımda **sahte korelasyon** üretir (collider bias / **Berkson paradoksu**). Veri bir collider'a koşullanarak toplandıysa (sadece "hastaneye başvuranlar"), gerçekte bağımsız özellikler korele görünür ve model bu **sahte ilişkiyi** öğrenir. Çözüm: collider'a koşullanma/kontrol etme.
:::
## Bu Dersin Özeti {#sec-ozet}
1. **Koşullu düşünmek** kursun ana teması; LOTP olasılıkta "böl ve birleştir".
2. **LOTP:** $P(B) = \sum_i P(B \mid A_i)P(A_i)$, ayrık $\{A_i\}$ partition'ı. Yararı iyi bölmeye bağlı.
3. **İki kart paradoksu:** $P(\text{iki as} \mid \text{bir as}) = 1/33$, $P(\text{iki as} \mid \text{maça ası}) = 1/17$.
4. **Hastalık testi:** %95 doğru test, %1 base → $P(D \mid T) \approx 0{,}16$.
5. **Savcı yanılgısı:** Sally Clark (Bayes'siz hesap masumu mahkum eder).
6. **Prior ↔ posterior:** $P(A) \ne P(A \mid B)$; $P(A \mid A) = 1$.
7. **Koşullu bağımsızlık** sıradanı gerektirmez; **explaining away** = collider'a koşullanmak nedenleri bağımlı yapar.
::: {.callout-important title="Tek bir cümle"}
LOTP karmaşık bir olayı ayrık durumlara koşullayıp birleştirir; koşullamanın en derin dersi şudur: **$P(A \mid B) \ne P(B \mid A)$, prior $\ne$ posterior, ve bağımsızlık koşula göre ortaya çıkıp kaybolabilir.**
:::
## Kontrol Soruları {#sec-sorular}
::: {.callout-note collapse="true" title="Soru 1: 2 adil para + 1 hileli (iki yüzü tura). Rastgele biri atılıyor. Tura olasılığı? (LOTP)"}
**Cevap:** $P(\text{tura}) = (2/3)(1/2) + (1/3)(1) = 1/3 + 1/3 = \mathbf{2/3}$.
:::
::: {.callout-note collapse="true" title="Soru 2: Tura geldi. Hileli olma olasılığı? (Bayes)"}
**Cevap:** $P(\text{hileli} \mid \text{tura}) = (1)(1/3)/(2/3) = \mathbf{1/2}$. Prior $1/3$ → posterior $1/2$.
:::
::: {.callout-note collapse="true" title="Soru 3: 'NBA oyuncusu → uzun' doğru, ama 'uzun → NBA oyuncusu' yanlış. Hangi koşulluklar?"}
**Cevap:** $P(\text{uzun} \mid \text{NBA}) \approx 1$; $P(\text{NBA} \mid \text{uzun}) \approx 0$. Savcı yanılgısı + base rate: NBA oyuncusu nadir, $P(\text{NBA})$ küçük, Bayes hesabını çökertir.
:::
::: {.callout-note collapse="true" title="Soru 4: (Builder) Collider'a koşullanmak neden sahte korelasyon ve ML için ne demek?"}
**Cevap:** Explaining away. Veri collider'a koşullanarak toplandıysa (Berkson), gerçekte bağımsız özellikler korele görünür ve model bu sahte ilişkiyi öğrenir. **Çözüm:** collider'a koşullanmadan örnekle, veya nedensel grafik bilgisiyle düzelt.
:::
## Egzersizler {#sec-egzersizler}
**Egzersiz 1.** Fabrika: M1 (%50, %2 hatalı), M2 (%30, %3 hatalı), M3 (%20, %5 hatalı). Hatalı olma olasılığını LOTP ile bul.
**Egzersiz 2.** (Devam) Hatalı ürün bulundu. M3'ten gelme olasılığı? (Bayes.)
**Egzersiz 3.** Kendi "explaining away" örneğini kur — bağımsız iki neden, ortak sonuç.
**Egzersiz 4.** *(Python — hastalık testi simülasyon)*
```{python}
#| label: ex-hastalik
#| code-fold: false
import random
random.seed(0)
N = 1_000_000
hasta_ve_poz = poz = 0
for _ in range(N):
hasta = random.random() < 0.01
test_poz = random.random() < (0.95 if hasta else 0.05)
if test_poz:
poz += 1
if hasta:
hasta_ve_poz += 1
print(f"P(D | T) ≈ {hasta_ve_poz / poz:.4f} (Bayes beklenti: ~0.1610)")
```
**Egzersiz 5.** *(Sonraki ders)* Monty Hall: 3 kapı, biri arabaya. Bir kapı seç, sunucu boş bir kapıyı açar, değiştirme şansı verir. Değiştirmeli misin? Önce sezgini yaz.
## Sonraki Ders İçin Hazırlık {#sec-sonraki}
**Ders 6: Monty Hall ve Simpson Paradoksu**
İki ünlü paradoks. **Monty Hall**: değiştirmek kazanma olasılığını $1/3$'ten $2/3$'e çıkarır. **Simpson paradoksu**: gruplar tek tek bir yönde, birleştirilince ters yönde sonuç verebilir.
::: {.callout-warning title="Ders 6 öncesi yapılacak"}
- Egzersizleri çöz — özellikle 4 (simülasyon) ve 5 (Monty Hall sezgisi).
- "Bayes paydası her zaman LOTP" refleksini pekiştir.
- Ana cümleyi tekrar oku: *"LOTP karmaşık bir olayı parçalara böler…"*
:::
## Anahtar Kavramlar (Cheat Sheet) {#sec-cheat-sheet}
| Kavram | Tanım | Blitzstein'de |
|--------|-------|---------------|
| **LOTP** | $P(B) = \sum_i P(B \mid A_i)P(A_i)$ | 6m00 |
| **Partition** | Ayrık + birleşim $S$ | 5m15 |
| **İki kart paradoksu** | $1/33$ vs $1/17$ | 15m43 |
| **Hastalık testi** | %95 test + %1 base → $\approx \%16$ | 26m15 |
| **Bayes + LOTP** | Bayes paydası LOTP ile açılır | 24m45 |
| **Savcı yanılgısı** | $P(A \mid B) \ne P(B \mid A)$ | 32m45 |
| **Prior vs posterior** | $P(A) \ne P(A \mid B)$; $P(A \mid A) = 1$ | 39m48 |
| **Koşullu bağımsızlık** | $P(A \cap B \mid C) = P(A \mid C)P(B \mid C)$ | 41m14 |
| **Explaining away** | Bağımsız nedenler, collider'a koşullu → bağımlı | 48m01 |
## ML Bağlantıları Özeti {#sec-ml-baglantilar}
::: {.callout-tip title="7 köprü"}
1. **LOTP** → marjinalleştirme; mixture, latent değişken, EM, HMM.
2. **Hastalık testi** → **precision vs recall**; dengesiz veride accuracy yanıltır.
3. **Savcı yanılgısı** → likelihood $\ne$ posterior; prior olmadan çıkarım yok.
4. **Prior ↔ posterior** → Bayesian ML'in tanımı.
5. **Koşullu bağımsızlık** → **Bayesian ağlar (PGM)**, naive Bayes faktörizasyonu.
6. **Explaining away (collider)** → **selection bias**, Berkson paradoksu.
7. **Kanıt belirliliği** → "belirli mi, varoluşsal mı"; prompt/koşul tasarımı.
:::
::: {.callout-important title="Tek bir şey alıp gideceksen"}
Zor bir olasılığı, ayrık durumlara koşullayıp birleştirerek (LOTP) parçala. Üç tuzaktan sakın: **$P(A \mid B) \ne P(B \mid A)$, prior $\ne$ posterior, bağımsızlık koşula göre belirip kaybolur.** Koşullamanın yönü ve neye koşullandığın **her şeyi** değiştirir.
:::