5  Koşullu Olasılık

İstatistiğin ruhu: bağımsızlık, Bayes, zincir kuralı

NotBölüm bilgisi

5.1 Bu Derste Ne Var?

Bu ders kursun kalbi. Önce bağımsızlığı tanımlıyoruz, sonra Blitzstein’in “istatistiğin ruhu” dediği kavrama geçiyoruz: koşullu olasılık — yeni kanıt geldikçe inançları nasıl güncelleriz.

  1. Bağımsızlık: \(P(A \cap B) = P(A)P(B)\). “Bağımsız = çarp” — ayrıklıkla karıştırma (felaket bir hata).
  2. Koşullu olasılık: \(P(A \mid B) = P(A \cap B) / P(B)\) — öğrenmenin matematiği.
  3. Üç teorem: çarpım, zincir kuralı, Bayes — ispatları tek satır, sonuçları bir bilim dalı.

“conditioning is the soul of statistics.” — Blitzstein, 33:13

İpucuBuilder Notu — ML Köprüleri
  • Koşullu olasılık = öğrenme. Bir modelin yaptığı her şey koşulludur: sınıflandırıcı \(p(y \mid x)\), dil modeli \(p(\text{token} \mid \text{bağlam})\), Bayesian posterior \(p(\theta \mid \text{veri})\).
  • Zincir kuralıautoregressive dil modelinin matematiği. \(n!\) farklı sıralama → any-order / XLNet.
  • Bağımsız = çarpnaive Bayes’in çekirdeği.
  • İkili ≠ karşılıklı bağımsız (XOR) → tek katmanlı perceptron neden XOR öğrenemez.
  • Çakıl dünyası (yeniden normalleştirme)masked / causal softmax attention.
  • Bayes kuralı → tüm Bayesian çıkarımın, generative↔︎discriminative ilişkisinin ve diffusion ters sürecinin temeli.

5.2 Bağımsızlık: Tanım ve Ayrıklıkla Karıştırma

A ve B bağımsızdır ancak ve ancak:

\[ P(A \cap B) = P(A)\,P(B) \]

Kısa slogan: bağımsız = çarp.

KRİTİK UYARI: bağımsızlık ile ayrıklık (disjoint) bambaşka şeylerdir.

“this is completely different from disjointness … a terrible, disastrous blunder.” — Blitzstein, 12:06

  • Ayrık: \(A\) olursa \(B\) olamaz (\(P(A \cap B) = 0\)). Biri diğeri hakkında çok şey söyler.
  • Bağımsız: \(A\) olması \(B\) hakkında hiçbir şey söylemez.

(Olasılıkları pozitif) ayrık olaylar asla bağımsız olamaz.

from matplotlib.patches import Circle, Rectangle
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 2, figsize=(10, 4))

# Sol: bağımsız
ax = axes[0]
ax.add_patch(Rectangle((-2.5, -1.5), 5, 3, facecolor='#f3f4f6', edgecolor='#1f2937', linewidth=1.5))
ax.add_patch(Circle((-0.7, 0), 1.0, facecolor='#DD6B20', alpha=0.5, edgecolor='#9a3412', linewidth=2))
ax.add_patch(Circle((0.7, 0), 1.0, facecolor='#2C5282', alpha=0.5, edgecolor='#1e3a5f', linewidth=2))
ax.text(-1.2, 1.2, '$A$', fontsize=18, color='#6B0E1B', weight='bold')
ax.text(1.2, 1.2, '$B$', fontsize=18, color='#1e3a5f', weight='bold')
ax.text(0, 0, '$A \\cap B$\n$P=P(A)P(B)$', ha='center', va='center', fontsize=10, color='white', weight='bold')
ax.text(-2.3, -1.3, '$S$', fontsize=14)
ax.set_xlim(-2.7, 2.7); ax.set_ylim(-1.7, 1.7); ax.set_aspect('equal')
ax.set_title('BAĞIMSIZ — kesişir, çarpım kuralı', fontsize=12)
ax.set_xticks([]); ax.set_yticks([])
for sp in ax.spines.values(): sp.set_visible(False)

# Sağ: ayrık
ax = axes[1]
ax.add_patch(Rectangle((-2.5, -1.5), 5, 3, facecolor='#f3f4f6', edgecolor='#1f2937', linewidth=1.5))
ax.add_patch(Circle((-1.2, 0), 0.9, facecolor='#DD6B20', alpha=0.5, edgecolor='#9a3412', linewidth=2))
ax.add_patch(Circle((1.2, 0), 0.9, facecolor='#2C5282', alpha=0.5, edgecolor='#1e3a5f', linewidth=2))
ax.text(-1.2, 1.2, '$A$', fontsize=18, color='#6B0E1B', weight='bold', ha='center')
ax.text(1.2, 1.2, '$B$', fontsize=18, color='#1e3a5f', weight='bold', ha='center')
ax.text(0, 0, '$A \\cap B = \\varnothing$', ha='center', va='center', fontsize=11, color='#A51C30', weight='bold')
ax.text(-2.3, -1.3, '$S$', fontsize=14)
ax.set_xlim(-2.7, 2.7); ax.set_ylim(-1.7, 1.7); ax.set_aspect('equal')
ax.set_title('AYRIK — kesişmez (P pozitifse asla bağımsız değil)', fontsize=12)
ax.set_xticks([]); ax.set_yticks([])
for sp in ax.spines.values(): sp.set_visible(False)

plt.tight_layout()
plt.show()
Şekil 5.1
İpucuBuilder Notu — Factorization

“Bağımsız = çarp” kuralı, olasılıksal modellerde çarpanlara ayırmanın (factorization) temelidir: bağımsız gürültü bileşenleri, köşegen kovaryanslı VAE prior’ı, naive Bayes’teki \(p(\text{özellikler} \mid \text{sınıf}) = \prod p(\text{özellik}_i \mid \text{sınıf})\). Bağımsızlık sayısız parametreyi birkaç çarpana indirir.

5.3 Çoklu Bağımsızlık: İkili ≠ Karşılıklı

Üç olay \(A, B, C\) için bağımsızlık ne demek? Önce her ikisi bağımsız olmalı. Ama bu yetmez. Bir denklem daha gerekir:

\[ P(A \cap B \cap C) = P(A)\,P(B)\,P(C) \]

Yalnızca ikili denklemler sağlanıyorsa ikili (pairwise) bağımsızlık denir — ve ikili bağımsızlık karşılıklı (mutual) bağımsızlığı gerektirmez.

ÖnemliBuilder Notu — XOR ve Gizli Katman

İkili-ama-karşılıklı-değil’in en güzel örneği XOR. \(A\) ve \(B\) bağımsız adil bit’ler, \(C = A \oplus B\). Her ikili bağımsızdır (C’yi tek başına \(A\) veya \(B\) belirlemez), ama üçü karşılıklı bağımsız değildir: \(A\) ile \(B\)’yi birlikte bilince C tamamen belli. Bu, tek katmanlı perceptron’un XOR’u neden öğrenemediğinin (Minsky-Papert) olasılıksal gölgesidir: ikili/marjinal istatistikler bilgisizdir, etiketi birlikte belirlerler — gizli katman gerekir.

5.4 Newton-Pepys Problemi (1693) + Binom Olasılığı

1693’te Samuel Pepys, Newton’a bir zar sorusu yazdı:

  • A: 6 zarda en az bir 6.
  • B: 12 zarda en az iki 6.
  • C: 18 zarda en az üç 6.

Çoğu kişi C der. Doğru cevap: A.

\[ P(A) = 1 - \left(\frac{5}{6}\right)^{6} \approx 0{,}665 \]

“Tam \(k\) tane 6” olasılığı — binom olasılığı:

\[ P_k = \binom{n}{k}\left(\frac{1}{6}\right)^{k}\left(\frac{5}{6}\right)^{n-k} \]

Tümleyenle: \(P(B) \approx 0{,}619\); \(P(C) \approx 0{,}597\).

import math
import numpy as np
import matplotlib.pyplot as plt

def p_en_az_k_alti(n, k, p_alti=1/6):
    return 1 - sum(math.comb(n, i) * p_alti**i * (1 - p_alti)**(n - i)
                   for i in range(k))

senaryolar = [(6, 1, 'A'), (12, 2, 'B'), (18, 3, 'C')]
sonuclar = [p_en_az_k_alti(n, k) for n, k, _ in senaryolar]
adlar = [f'{ad}\n{n} zar\nen az {k} 6' for n, k, ad in senaryolar]

fig, ax = plt.subplots(figsize=(10, 4.5))
renkler = ['#A51C30', '#DD6B20', '#2C5282']
bars = ax.bar(adlar, sonuclar, color=renkler, edgecolor='#1f2937', linewidth=1.5)
for bar, p in zip(bars, sonuclar):
    ax.text(bar.get_x() + bar.get_width() / 2, p + 0.01, f'{p:.4f}',
            ha='center', fontsize=12, weight='bold', color='#1f2937')

ax.axhline(0.5, color='#6B7280', linestyle=':', alpha=0.7)
ax.set_ylabel('olasılık', fontsize=12)
ax.set_ylim(0, 0.78)
ax.set_title('Newton-Pepys: A > B > C — Pepys C\'ye inanıyordu, yanıldı',
             fontsize=12)
ax.grid(True, axis='y', alpha=0.3)
plt.tight_layout()
plt.show()
Şekil 5.2

“in 1693 … you had to go to a genius, like Isaac Newton. Whereas now, all you have to do is take STAT 110.” — Blitzstein, 28:03

İpucuBuilder Notu — Stigler Sanity Check

İstatistikçi Stigler’in argümanı: bir yöntem, sonucun bağlı olduğu bir şeyi (zar olasılıkları) görmezden geliyorsa, bozuktur. Sanity check refleksi tam budur — önemli bir girdiye değişmez (invariant) kalan bir model, o girdiyi yakalamıyordur.

5.5 Koşullu Olasılık: İstatistiğin Ruhu

Asıl soru: elinde inançlar var ve yeni şeyler öğreniyorsun. Yeni kanıt geldikçe inançlarını nasıl güncellemelisin?

“Everything relates to conditioning in one way or another.” — Blitzstein, 33:34

Tanım:

\[ P(A \mid B) = \frac{P(A \cap B)}{P(B)}, \quad P(B) > 0 \]

Eğer \(A\) ile \(B\) bağımsızsa \(P(A \mid B) = P(A)\) — yani \(B\)’yi öğrenmek \(A\) hakkında hiçbir şey değiştirmez.

İpucuBuilder Notu — Öğrenmenin Adı

Koşullu olasılık ML’in yaptığı işin tanımıdır. Discriminative sınıflandırıcı doğrudan \(p(y \mid x)\) öğrenir. Bayesian çıkarımda posterior \(p(\theta \mid \text{veri})\), prior’ın kanıtla güncellenmesidir. Attention, bir sorguya koşullu ağırlık dağılımıdır.

5.6 İki Sezgi: Çakıl Dünyası ve Frekansçı Dünya

Sezgi 1 — Çakıl Dünyası. Örnek uzay \(S\)’yi toplam kütlesi \(1\) olan çakıllar gibi düşün; her çakıl bir sonuç, kütlesi olasılığı. “\(B\) verildi” demek: \(B\)’nin dışındaki çakıllar ilgisiz — onları sil. Kalanların kütlesi \(P(B)\), toplam \(1\) olsun diye yeniden normalleştir.

“renormalize to make total mass 1 again.” — Blitzstein, 40:33

Sezgi 2 — Frekansçı Dünya. Deneyi çok kez tekrarla. \(B\)’nin gerçekleştiği tekrarları işaretle, sonra yalnızca onların içinde \(A\)’nın oranını al.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle, Rectangle

np.random.seed(7)
N = 60
xs = np.random.uniform(0, 10, N)
ys = np.random.uniform(0, 5, N)

# B = sol kısım (x < 5), A = orta üst (4 < x < 7, y > 2)
b_mask = xs < 5.5
a_mask = (xs > 3.5) & (xs < 6.5) & (ys > 2)

fig, axes = plt.subplots(1, 3, figsize=(11, 4))

# Sol: tüm uzay
ax = axes[0]
for x, y, inA, inB in zip(xs, ys, a_mask, b_mask):
    renk = '#A51C30' if (inA and inB) else ('#2C5282' if inB else ('#DD6B20' if inA else '#9CA3AF'))
    ax.plot(x, y, 'o', markersize=10, markerfacecolor=renk, markeredgecolor='#1f2937', linewidth=0.5)
ax.add_patch(Rectangle((0, 0), 5.5, 5, fill=False, edgecolor='#2C5282', linewidth=2, linestyle='--'))
ax.add_patch(Rectangle((3.5, 2), 3, 3, fill=False, edgecolor='#DD6B20', linewidth=2, linestyle='--'))
ax.text(5, 5.3, '$A$', color='#DD6B20', fontsize=14, weight='bold', ha='center')
ax.text(2.5, 5.3, '$B$', color='#2C5282', fontsize=14, weight='bold', ha='center')
ax.set_xlim(-0.3, 10.3); ax.set_ylim(-0.3, 6); ax.set_aspect('equal')
ax.set_title(f'$S$ — tüm uzay (60 çakıl)', fontsize=11)
ax.set_xticks([]); ax.set_yticks([])
for sp in ax.spines.values(): sp.set_visible(False)

# Orta: B'ye koşullu — B dışı silindi
ax = axes[1]
for x, y, inA, inB in zip(xs, ys, a_mask, b_mask):
    if not inB:
        ax.plot(x, y, 'x', markersize=8, color='#D1D5DB', markeredgewidth=1.5)
    else:
        renk = '#A51C30' if inA else '#2C5282'
        ax.plot(x, y, 'o', markersize=10, markerfacecolor=renk, markeredgecolor='#1f2937', linewidth=0.5)
ax.add_patch(Rectangle((0, 0), 5.5, 5, fill=False, edgecolor='#2C5282', linewidth=2))
ax.text(2.5, 5.3, 'sadece $B$ kaldı', color='#2C5282', fontsize=11, weight='bold', ha='center')
ax.set_xlim(-0.3, 10.3); ax.set_ylim(-0.3, 6); ax.set_aspect('equal')
ax.set_title('B verildi → B dışı silindi', fontsize=11)
ax.set_xticks([]); ax.set_yticks([])
for sp in ax.spines.values(): sp.set_visible(False)

# Sağ: yeniden normalleştirme
ax = axes[2]
n_B = sum(b_mask); n_AB = sum(a_mask & b_mask)
ax.bar(['$P(A|B)$\n= n(A∩B)/n(B)'], [n_AB / n_B], color='#A51C30', edgecolor='#6B0E1B')
ax.text(0, n_AB/n_B + 0.02, f'{n_AB}/{n_B} = {n_AB/n_B:.2f}',
        ha='center', fontsize=12, weight='bold')
ax.set_ylim(0, 1)
ax.set_ylabel('olasılık', fontsize=11)
ax.set_title('Renormalize: A∩B / B', fontsize=11)
ax.grid(True, axis='y', alpha=0.3)

plt.tight_layout()
plt.show()
Şekil 5.3
İpucuBuilder Notu — Masked Softmax

Çakıl dünyasının yeniden normalleştirmesi doğrudan masked softmax’tır: izin verilmeyen seçenekleri maskele, kalanları toplamı \(1\) olacak şekilde normalleştir — bu birebir koşullamadır (causal attention, geçersiz token maskeleme). Frekansçı dünya ise Monte Carlo kestirimi: \(B\) sağlanan örnekleri süz, içlerinde \(A\)’nın oranını hesapla.

5.7 Üç Teorem: Çarpım, Zincir Kuralı, Bayes

Koşullu olasılığın tanımını yeniden düzenleyerek üç teoremi dakikalar içinde çıkarıyoruz.

Teorem 1 (çarpım kuralı):

\[ P(A \cap B) = P(B)\,P(A \mid B) = P(A)\,P(B \mid A) \]

Teorem 2 (zincir kuralı):

\[ P(A_1 \cap \cdots \cap A_n) = P(A_1)\,P(A_2 \mid A_1)\,P(A_3 \mid A_1 \cap A_2) \cdots P(A_n \mid A_1 \cap \cdots \cap A_{n-1}) \]

Bunu \(n!\) farklı sırayla yazabilirsin.

“this is not just one theorem, but n factorial theorems.” — Blitzstein, 47:47

Teorem 3 (Bayes kuralı):

\[ P(A \mid B) = \frac{P(B \mid A)\,P(A)}{P(B)} \]

İspat tek satır (sadece böldük), ama bu eşitlik koca bir bilim dalının temeli.

“The proof is completely obvious. … The implications are extremely deep.” — Blitzstein, 49:22

ÖnemliBuilder Notu — Autoregressive ve Diffusion

Zincir kuralı = autoregressive çarpanlama: dil modeli \(p(w_1,\ldots,w_n) = \prod p(w_i \mid w_{<i})\). \(n!\) sıralama özgürlüğü → any-order üretim (XLNet, diffusion dil modelleri). Bayes kuralı = posterior \(\propto\) olabilirlik \(\times\) prior; bir generative sınıflandırıcı \(p(x \mid y)p(y)\) modelleyip Bayes ile \(p(y \mid x)\)’e çevirir, ve diffusion’ın ters adımı bir Bayes güncellemesidir.

5.8 Bu Dersin Özeti

  1. Bağımsızlık: \(P(A \cap B) = P(A)P(B)\). “Bağımsız = çarp.”
  2. Bağımsızlık ≠ ayrıklık: Karıştırma felakettir.
  3. İkili ≠ karşılıklı bağımsızlık: Üçlü denklem ayrı gerekir (XOR).
  4. Newton-Pepys: 6 zarda en az bir 6 (\(\approx 0{,}665\)) > 12’de en az iki (\(\approx 0{,}619\)) > 18’de en az üç (\(\approx 0{,}597\)).
  5. Koşullu olasılık: \(P(A \mid B) = P(A \cap B)/P(B)\).
  6. İki sezgi: çakıl dünyası (kısıtla + normalleştir) ve frekansçı dünya.
  7. Üç teorem: çarpım, zincir, Bayes.
ÖnemliTek bir cümle

Koşullu olasılık \(P(A \mid B) = P(A \cap B)/P(B)\), yeni kanıtla inançları güncellemenin matematiğidir — “istatistiğin ruhu” — ve ondan tek satırlık cebirle çıkan Bayes kuralı, koca bir çıkarım biliminin temelini atar.

5.9 Kontrol Soruları

Cevap: \(P(\text{ilk çift}) = 1/2\). \(P(\text{toplam 7}) = 6/36 = 1/6\). Kesişim (ilk çift, toplam 7): \((2,5), (4,3), (6,1)\)\(3/36 = 1/12\). Çarpım: \((1/2)(1/6) = 1/12\). Eşit → bağımsız. Sezgiye aykırı ama doğru.

Cevap: Hayır. Ayrık → \(P(A \cap B) = 0\). Bağımsız olsalardı \(P(A)P(B) = 0{,}25\). \(0 \ne 0{,}25\) → bağımsız değil. Pozitif olasılıklı ayrık olaylar asla bağımsız olamaz.

Cevap: Bayes. \(P(+) = 0{,}99 \cdot 0{,}01 + 0{,}05 \cdot 0{,}99 = 0{,}0594\). \(P(\text{hasta} \mid +) = 0{,}99 \cdot 0{,}01 / 0{,}0594 \approx 0{,}167 = \%16{,}7\). Test iyi gibi ama düşük base rate yüzünden pozitiflerin çoğu yanlış pozitif. Ders 1’in base-rate neglect’inin Bayes hesabı.

Cevap: \(p(\text{kara, kedi}) = p(\text{kara}) \cdot p(\text{kedi} \mid \text{kara})\). Genelde \(p(w_1, \ldots, w_n) = \prod p(w_i \mid w_{<i})\). Model her adımda yalnızca bir sonraki token’ın koşullu dağılımını üretir; zincir kuralı tüm dizinin olasılığını yerel koşullulardan kurar.

5.10 Egzersizler

Egzersiz 1. 52 karttan tek kart. “Kupa” ile “Kız (Q)” bağımsız mı? Tanımla doğrula.

Egzersiz 2. Torba: 5 kırmızı, 3 mavi. Yerine koymadan 2 top. (a) İlk kırmızı verildiğinde ikincinin mavi olma olasılığı? (b) İkincinin mavi olma (koşulsuz) olasılığı?

Egzersiz 3. Üçü ikili bağımsız ama karşılıklı bağımsız olmayan üç olay kur. (İpucu: XOR.)

Egzersiz 4. (Python — Newton-Pepys Monte Carlo)

import random
random.seed(0)

def deney(n_zar, esik):
    altilar = sum(random.randint(1, 6) == 6 for _ in range(n_zar))
    return altilar >= esik

N = 100_000
for n_zar, esik, ad in [(6, 1, "A"), (12, 2, "B"), (18, 3, "C")]:
    p = sum(deney(n_zar, esik) for _ in range(N)) / N
    print(f"{ad}: P = {p:.4f}   (n={n_zar}, ≥{esik})")

Egzersiz 5. (Sonraki ders) Soru 3’teki hastalığı, yanlış pozitif %1 olsaydı yeniden hesapla. Paydadaki \(P(+) = P(+|H)P(H) + P(+|S)P(S)\) ifadesi toplam olasılık yasası (LOTP) — Ders 5’in ana konusu.

5.11 Sonraki Ders İçin Hazırlık

Ders 5: Koşullamaya Devam, Toplam Olasılık Yasası

Toplam olasılık yasası (LOTP) ile bir olayın olasılığını, ayrık durumlara koşullayıp birleştirerek hesaplamayı öğreneceğiz. Bayes paydasının kendisi.

UyarıDers 5 öncesi yapılacak
  • Egzersizleri çöz — özellikle 4 (Monte Carlo) ve 5 (LOTP keşfi).
  • “En az bir” refleksini pekiştir.
  • Ana cümleyi tekrar oku: “Koşullu olasılık, inançları güncellemenin matematiğidir.”

5.12 Anahtar Kavramlar (Cheat Sheet)

Kavram Tanım Blitzstein’de
Bağımsızlık \(P(A \cap B) = P(A)P(B)\) 11m25
Bağımsız ≠ ayrık Zıt kavramlar 12m06
İkili ≠ karşılıklı Üçlü denklem ayrı (XOR) 14m09
Newton-Pepys \(A \approx 0{,}665 > B \approx 0{,}619 > C \approx 0{,}597\) 28m03
Binom olasılığı \(\binom{n}{k}(1/6)^k(5/6)^{n-k}\) 26m45
Koşullu olasılık \(P(A \mid B) = P(A \cap B)/P(B)\) 34m08
Çakıl dünyası Kısıtla + \(P(B)\)’ye böl 36m11
Frekansçı dünya Uzun vadede oran 41m25
Çarpım kuralı \(P(A \cap B) = P(B)P(A \mid B)\) 45m00
Zincir kuralı \(\prod P(A_i \mid \text{öncekiler})\) 47m12
Bayes kuralı \(P(A \mid B) = P(B \mid A)P(A)/P(B)\) 49m02

5.13 ML Bağlantıları Özeti

İpucu7 köprü
  1. Koşullu olasılık → tüm öğrenme: \(p(y \mid x)\), posterior, attention.
  2. Zincir kuralı → autoregressive dil modeli; \(n!\) sıra → any-order (XLNet, diffusion LM).
  3. Bayes kuralı → posterior \(\propto\) olabilirlik \(\times\) prior; generative ↔︎ discriminative.
  4. Bağımsız = çarp → naive Bayes, faktörizasyon.
  5. İkili ≠ karşılıklı (XOR) → gizli katmanın gerekliliği.
  6. Çakıl yeniden normalleştirme → masked / causal softmax attention.
  7. Binom olasılığı → Binom dağılımı (Ders 8), sayım ve sınıflandırma.
ÖnemliTek bir şey alıp gideceksen

Koşullu olasılık \(P(A \mid B) = P(A \cap B)/P(B)\), öğrenmenin matematiğidir. Tek satırlık Bayes kuralı bu tanımdan doğar. “Conditioning is the soul of statistics.