IlmHamroh
Data Science va sun'iy intellekt/Ehtimollik3/10-dars16 daqiqa
Mundarija (22)

9.3-dars: Shartli ehtimollik

9-QISM — EHTIMOLLIK · 3-dars


1. Kirish va motivatsiya

"Mijozning xarid qilish ehtimoli qancha?" — 12%. "Savatchaga mahsulot qo'shgan mijozning xarid qilish ehtimoli qancha?" — 45%. Ikkinchi savol — shartli ehtimollik: qo'shimcha ma'lumot (shart) ma'lum bo'lganda ehtimol qanday o'zgaradi. Belgilanishi: P(xarid | savatcha) — "savatcha berilganda xarid ehtimoli".

Data Science'ning deyarli hamma savoli — shartli: "bu belgilar berilganda mijoz ketish ehtimoli" (churn modeli), "bu so'zlar berilganda spam ehtimoli", "test musbat bo'lsa kasallik ehtimoli". Klassifikator aslida P(sinf | belgilar) ni baholaydi. Shartli ehtimollikni tushunmaslik — eng keng tarqalgan statistik xatolarning manbai: P(A | B) va P(B | A) ni adashtirish, mustaqillikni noto'g'ri faraz qilish, Simpson paradoksi.

Real vaziyat. Marketing jamoasi: "Xarid qilganlarning 80% i mobil ilovadan kirgan — demak, mobil ilova foydalanuvchilari juda ko'p xarid qiladi!". Tahlilchi tekshiradi: P(mobil | xarid) = 0.80, lekin savol P(xarid | mobil) haqida. Ma'lumotda: barcha tashrifning 85% i mobil, P(xarid | mobil) = 0.11, P(xarid | kompyuter) = 0.16 — kompyuter foydalanuvchilari ko'proq xarid qiladi! Mobil ulushi katta, chunki mobil tashrif ko'p. Shartli ehtimollikni to'g'ri o'qish — marketing byudjetini to'g'ri yo'naltirdi.

Bu darsda shartli ehtimollikni o'rganamiz.

Bu darsda:

  • Shartli ehtimollik ta'rifi
  • P(A | B) ≠ P(B | A)
  • Ko'paytirish qoidasi (zanjir)
  • Mustaqillik va uni tekshirish
  • To'liq ehtimollik formulasi
  • Pandas'da shartli ehtimollik (crosstab)
  • Shartli ehtimollik tuzoqlari
  • Amaliy: konversiya tahlili

ℹ Misollar real pandas/numpy bilan (Python 3.14).


2. Nazariya — chuqur tushuntirish

2.1. Shartli ehtimollik ta'rifi

text
P(A | B) = P(A VA B) / P(B)          (P(B) > 0)

Ma'nosi: B ro'y berdi — dunyo B gacha "toraydi";
         shu tor dunyoda A ning ulushi.

Jadvalda (1000 tashrif):
                 xarid   xarid emas   jami
  savatcha         90        110       200
  savatchasiz      30        770       800
  jami            120        880      1000

  P(xarid)             = 120 / 1000 = 0.12
  P(xarid | savatcha)  =  90 / 200  = 0.45

Shartli ehtimollik — B ma'lum bo'lganda A ning ehtimoli: B ro'y bergan holatlar orasida A ham ro'y berganlar ulushi. Jadvalda: qatorni tanlab (savatcha — 200 ta), shu qator ichida ulushni hisoblash (90 / 200). Shart natijalar fazosini toraytiradi: endi "jami" — 1000 emas, 200. Pandas'da: df[df["savatcha"]]["xarid"].mean() yoki pd.crosstab(..., normalize="index").

2.2. P(A | B) ≠ P(B | A)

Eng keng tarqalgan xato — shartni aylantirish: P(A | B) va P(B | A) — boshqa-boshqa son. P(mobil | xarid) = "xaridorlarning qancha qismi mobil" 0.80-bob; P(xarid | mobil) = "mobil foydalanuvchilarning qancha qismi xarid qiladi" 0.11-bob. Yana misollar: P(isitma | gripp) yuqori, P(gripp | isitma) — pastroq (isitmaning boshqa sabablari ko'p); P(odam | 2 oyoqli) ≠ P(2 oyoqli | odam). Ular orasidagi bog'lanish — Bayes teoremasi 9.4-bob: P(A | B) = P(B | A) × P(A) / P(B). Maxrajdagi asosiy ulush (P(A), P(B)) — aylantirishda hal qiluvchi.

2.3. Ko'paytirish qoidasi (zanjir)

text
P(A VA B) = P(A) × P(B | A) = P(B) × P(A | B)

Zanjir: P(A VA B VA C) = P(A) × P(B | A) × P(C | A VA B)

Voronka: tashrif → savatcha → to'lov → xarid
  P(savatcha) = 0.20, P(to'lov | savatcha) = 0.60, P(xarid | to'lov) = 0.75
  P(xarid) = 0.20 × 0.60 × 0.75 = 0.09

Ko'paytirish qoidasi — shartli ta'rifdan kelib chiqadi: "A va B" = "avval A" × "A bo'lsa B". Zanjir qoidasi — ketma-ket bosqichlar: sotuv voronkasi, qaytarmasdan karta olish (1-karta tuz: 4/52, 2-si ham tuz: 3/51). Voronka tahlilida har bosqich konversiyasi — shartli ehtimol, umumiy konversiya — ularning ko'paytmasi; eng past bosqich — optimallashtirish nuqtasi.

2.4. Mustaqillik va uni tekshirish

Mustaqillik: A va B mustaqil, agar P(A | B) = P(A) (B ni bilish A haqida hech narsa bermaydi), teng kuchli: P(A VA B) = P(A) × P(B). Mustaqil: ikki tanga, ikki zar, turli mijozlar (odatda). Bog'liq: savatcha va xarid, yosh va daromad. Real ma'lumotda tekshiruv: shartli va shartsiz ehtimolni solishtirish (P(xarid | savatcha) = 0.45 vs P(xarid) = 0.12 — kuchli bog'liq); statistik test — xi-kvadrat (11-qism). Diqqat: "kesishmaydi" ≠ "mustaqil"! Kesishmaydigan hodisalar (bir vaqtda ro'y bermaydi) — kuchli bog'liq: biri ro'y bersa, ikkinchisi aniq ro'y bermaydi.

2.5. To'liq ehtimollik formulasi

text
B1, B2, ..., Bk — S ni bo'laklarga ajratadi (kesishmaydi, birgalikda — hammasi)

P(A) = P(A | B1) × P(B1) + P(A | B2) × P(B2) + ... + P(A | Bk) × P(Bk)

Qurilma bo'yicha:
  P(xarid) = P(xarid | mobil) × P(mobil) + P(xarid | kompyuter) × P(kompyuter)
           = 0.11 × 0.85 + 0.16 × 0.15 = 0.1175

To'liq ehtimollik — umumiy ehtimol = segmentlardagi shartli ehtimollarning vaznli o'rtachasi (vazn — segment ulushi). Amaliy ma'nosi: umumiy konversiya o'zgarsa — sabab ikki xil bo'lishi mumkin: (1) segment ichidagi konversiya o'zgardi, (2) segmentlar tarkibi o'zgardi (masalan, mobil tashrif ulushi oshdi). Bu Simpson paradoksining 8.7-bob matematik asosi. Bayes teoremasi maxraji — aynan shu formula 9.4-bob.

2.6. Pandas'da shartli ehtimollik

Pandas vositalari: filtr + mean (df[df["qurilma"] == "mobil"]["xarid"].mean() — P(xarid | mobil)), groupby (df.groupby("qurilma")["xarid"].mean() — hamma segment uchun), crosstab (pd.crosstab(df["qurilma"], df["xarid"], normalize="index") — qator bo'yicha: P(xarid | qurilma); normalize="columns" — P(qurilma | xarid)). normalize parametri — qaysi shartli ehtimol ekanini belgilaydi; adashtirish = P(A | B) va P(B | A) ni adashtirish.

2.7. Shartli ehtimollik tuzoqlari

Asosiy tuzoqlar: shartni aylantirish (P(A | B) = P(B | A) deb o'ylash — prokuror xatosi, marketing xatosi); asosiy ulushni e'tiborsiz qoldirish (kam uchraydigan hodisada yuqori P(B | A) ham past P(A | B) beradi — 9.4); kesishmaydi = mustaqil (aksincha — bog'liq); mustaqillikni ko'r-ko'rona faraz qilish (bir oiladagi mijozlar, ketma-ket kunlar — bog'liq); kichik segment (P(xarid | shart) 5 ta kuzatuvdan — ishonchsiz; n ni ko'rsating); Simpson paradoksi (umumiy va segment ichidagi yo'nalish qarama-qarshi — tarkib ta'siri, 8.7); crosstab normalize ni adashtirish.

2.8. Shartli ehtimollik — ma'lumot bilan yangilanish

Shartli ehtimollik: P(A | B) = P(A VA B) / P(B) — shart dunyoni toraytiradi; P(A | B) ≠ P(B | A) (eng keng tarqalgan xato); ko'paytirish/zanjir qoidasi (voronka); mustaqillik — P(A | B) = P(A) (kesishmaydi ≠ mustaqil); to'liq ehtimollik — segmentlarning vaznli o'rtachasi (tarkib ta'siri, Simpson); pandas — groupby, crosstab (normalize = qaysi shart). ML klassifikatorlari P(sinf | belgilar) ni baholaydi — shartli ehtimollik ML'ning asosiy tili. Keyingi dars — Bayes teoremasi: P(B | A) dan P(A | B) ga qanday o'tish.


3. Tez ma'lumotnoma

python
import pandas as pd

# P(xarid | mobil)
df[df["qurilma"] == "mobil"]["xarid"].mean()

# Hamma segment: P(xarid | qurilma)
df.groupby("qurilma")["xarid"].mean()

# Jadval
pd.crosstab(df["qurilma"], df["xarid"])                         # soni
pd.crosstab(df["qurilma"], df["xarid"], normalize="index")      # P(xarid | qurilma)
pd.crosstab(df["qurilma"], df["xarid"], normalize="columns")    # P(qurilma | xarid)

# Mustaqillik tekshiruvi
p_a = df["xarid"].mean()
p_a_b = df[df["savatcha"]]["xarid"].mean()      # p_a ga yaqinmi?

# To'liq ehtimollik
ulush = df["qurilma"].value_counts(normalize=True)
shartli = df.groupby("qurilma")["xarid"].mean()
(ulush * shartli).sum()                         # = df["xarid"].mean()
QOIDA: shart — qaysi tomonda? · normalize="index" = qator sharti · n ni ko'rsat

Shartli ehtimollik xulosasi

P(A | B) = P(A VA B) / P(B) — shart dunyoni toraytiradi
P(A | B) ≠ P(B | A) — aylantirish uchun Bayes (9.4)
Zanjir — P(A) × P(B | A) × ... (voronka)
Mustaqil — P(A | B) = P(A); kesishmaydi ≠ mustaqil
To'liq ehtimollik — segmentlarning vaznli o'rtachasi

4. Batafsil misollar

Misollar real pandas/numpy bilan (Python 3.14).

Misol 1 — Jadvaldan shartli ehtimollik

python
"""Shartli ehtimollik: jadval va crosstab (real pandas)."""

import pandas as pd


def main() -> None:
    df = pd.DataFrame({
        "savatcha": [True] * 200 + [False] * 800,
        "xarid": [True] * 90 + [False] * 110 + [True] * 30 + [False] * 770,
    })

    print("=== 1. Jadval (soni) ===")
    print(pd.crosstab(df["savatcha"], df["xarid"], margins=True, margins_name="jami"))

    print("\n=== 2. Shartsiz va shartli ===")
    print(f"  P(xarid)            = {df['xarid'].mean():.2f}")
    print(f"  P(xarid | savatcha) = {df[df['savatcha']]['xarid'].mean():.2f}")
    print(f"  P(xarid | savatchasiz) = {df[~df['savatcha']]['xarid'].mean():.4f}")

    print("\n=== 3. Ta'rif bo'yicha ===")
    p_ab = (df["savatcha"] & df["xarid"]).mean()
    p_b = df["savatcha"].mean()
    print(f"  P(xarid VA savatcha) / P(savatcha) = {p_ab:.3f} / {p_b:.2f} = {p_ab / p_b:.2f}")
    print("  ⭐ Shart dunyoni toraytiradi (1000 → 200)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Jadval (soni) ===
xarid     False  True  jami
savatcha
False       770    30   800
True        110    90   200
jami        880   120  1000

=== 2. Shartsiz va shartli ===
  P(xarid)            = 0.12
  P(xarid | savatcha) = 0.45
  P(xarid | savatchasiz) = 0.0375

=== 3. Ta'rif bo'yicha ===
  P(xarid VA savatcha) / P(savatcha) = 0.090 / 0.20 = 0.45
  ⭐ Shart dunyoni toraytiradi (1000 → 200)

Nima ko'rsatdi: 2.1-bo'lim.

Misol 2 — P(A | B) ≠ P(B | A): mobil xatosi

python
"""Shartni aylantirish xatosi: P(mobil | xarid) vs P(xarid | mobil) (real pandas/numpy)."""

import numpy as np
import pandas as pd


def main() -> None:
    rng = np.random.default_rng(0)
    n = 20_000
    qurilma = rng.choice(["mobil", "kompyuter"], n, p=[0.85, 0.15])
    p = np.where(qurilma == "mobil", 0.11, 0.16)
    df = pd.DataFrame({"qurilma": qurilma, "xarid": rng.random(n) < p})

    print("=== 1. Marketing o'qigan son: P(qurilma | xarid) ===")
    print(pd.crosstab(df["qurilma"], df["xarid"], normalize="columns")[True].round(2).to_dict())

    print("\n=== 2. Kerakli son: P(xarid | qurilma) ===")
    print(pd.crosstab(df["qurilma"], df["xarid"], normalize="index")[True].round(3).to_dict())

    print("\n=== 3. Xulosa ===")
    print("  xaridorlarning ko'pi mobil — chunki tashrifning ko'pi mobil")
    print("  kompyuter foydalanuvchisi ko'proq xarid qiladi")
    print("  ⭐ normalize='index' vs 'columns' — boshqa savol")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Marketing o'qigan son: P(qurilma | xarid) ===
{'kompyuter': 0.2, 'mobil': 0.8}

=== 2. Kerakli son: P(xarid | qurilma) ===
{'kompyuter': 0.158, 'mobil': 0.113}

=== 3. Xulosa ===
  xaridorlarning ko'pi mobil — chunki tashrifning ko'pi mobil
  kompyuter foydalanuvchisi ko'proq xarid qiladi
  ⭐ normalize='index' vs 'columns' — boshqa savol

Nima ko'rsatdi: 2.2, 2.6-bo'limlar.

Misol 3 — Voronka (zanjir qoidasi)

python
"""Sotuv voronkasi: zanjir qoidasi (real pandas/numpy)."""

import numpy as np
import pandas as pd


def main() -> None:
    rng = np.random.default_rng(1)
    n = 50_000
    savatcha = rng.random(n) < 0.20
    tolov = savatcha & (rng.random(n) < 0.60)
    xarid = tolov & (rng.random(n) < 0.75)
    df = pd.DataFrame({"savatcha": savatcha, "tolov": tolov, "xarid": xarid})

    print("=== 1. Bosqich konversiyalari (shartli) ===")
    p1 = df["savatcha"].mean()
    p2 = df[df["savatcha"]]["tolov"].mean()
    p3 = df[df["tolov"]]["xarid"].mean()
    print(f"  P(savatcha)            = {p1:.3f}")
    print(f"  P(to'lov | savatcha)   = {p2:.3f}")
    print(f"  P(xarid | to'lov)      = {p3:.3f}")

    print("\n=== 2. Zanjir ===")
    print(f"  ko'paytma: {p1 * p2 * p3:.4f}")
    print(f"  to'g'ridan: P(xarid) = {df['xarid'].mean():.4f}")

    print("\n=== 3. Eng zaif bosqich ===")
    bosqichlar = {"tashrif→savatcha": p1, "savatcha→to'lov": p2, "to'lov→xarid": p3}
    print(f"  {min(bosqichlar, key=bosqichlar.get)}")
    print("  ⭐ P(A VA B VA C) = P(A) × P(B|A) × P(C|A,B)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Bosqich konversiyalari (shartli) ===
  P(savatcha)            = 0.199
  P(to'lov | savatcha)   = 0.600
  P(xarid | to'lov)      = 0.750

=== 2. Zanjir ===
  ko'paytma: 0.0896
  to'g'ridan: P(xarid) = 0.0896

=== 3. Eng zaif bosqich ===
  tashrif→savatcha
  ⭐ P(A VA B VA C) = P(A) × P(B|A) × P(C|A,B)

Nima ko'rsatdi: 2.3-bo'lim.

Misol 4 — Mustaqillik va to'liq ehtimollik

python
"""Mustaqillik tekshiruvi va to'liq ehtimollik formulasi (real pandas/numpy)."""

import numpy as np
import pandas as pd


def main() -> None:
    rng = np.random.default_rng(2)
    n = 30_000
    df = pd.DataFrame({
        "qurilma": rng.choice(["mobil", "kompyuter"], n, p=[0.85, 0.15]),
        "hafta_kuni": rng.choice(["ish kuni", "dam olish"], n, p=[0.7, 0.3]),
    })
    df["xarid"] = rng.random(n) < np.where(df["qurilma"] == "mobil", 0.11, 0.16)

    print("=== 1. Mustaqillik: xarid va hafta kuni ===")
    print(f"  P(xarid) = {df['xarid'].mean():.3f}")
    print(f"  P(xarid | dam olish) = {df[df['hafta_kuni'] == 'dam olish']['xarid'].mean():.3f}  (yaqin — mustaqil)")

    print("\n=== 2. Bog'liqlik: xarid va qurilma ===")
    print(df.groupby("qurilma")["xarid"].mean().round(3).to_dict())

    print("\n=== 3. To'liq ehtimollik ===")
    ulush = df["qurilma"].value_counts(normalize=True)
    shartli = df.groupby("qurilma")["xarid"].mean()
    print(f"  sum(P(xarid|q) × P(q)) = {(ulush * shartli).sum():.4f}")
    print(f"  P(xarid)               = {df['xarid'].mean():.4f}")

    print("\n=== 4. Tarkib o'zgarsa (mobil 95%) ===")
    yangi = 0.95 * shartli["mobil"] + 0.05 * shartli["kompyuter"]
    print(f"  umumiy konversiya: {yangi:.4f}  (segmentlar o'zgarmasa ham tushdi)")
    print("  ⭐ Umumiy = segmentlarning vaznli o'rtachasi")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Mustaqillik: xarid va hafta kuni ===
  P(xarid) = 0.115
  P(xarid | dam olish) = 0.115  (yaqin — mustaqil)

=== 2. Bog'liqlik: xarid va qurilma ===
{'kompyuter': 0.137, 'mobil': 0.111}

=== 3. To'liq ehtimollik ===
  sum(P(xarid|q) × P(q)) = 0.1153
  P(xarid)               = 0.1153

=== 4. Tarkib o'zgarsa (mobil 95%) ===
  umumiy konversiya: 0.1127  (segmentlar o'zgarmasa ham tushdi)
  ⭐ Umumiy = segmentlarning vaznli o'rtachasi

Nima ko'rsatdi: 2.4, 2.5-bo'limlar.


5. To'g'ri va noto'g'ri tushunishlar

Noto'g'ri fikr To'g'risi
"P(A | B) = P(B | A)" Umuman boshqa son (Bayes)
"Xaridorlarning 80% mobil → mobil yaxshi" P(xarid | mobil) ni ko'ring
"Kesishmaydi = mustaqil" Kesishmaydi = kuchli bog'liq
"Konversiya tushdi → segment yomonlashdi" Tarkib o'zgargan bo'lishi mumkin
"Shartli ehtimol kichik segmentda ham aniq" n kichik — ishonchsiz
"normalize farqsiz" index = qator sharti, columns = ustun sharti
"Mustaqillik — standart faraz" Tekshirish kerak
"Voronka konversiyalari qo'shiladi" Ko'paytiriladi (zanjir)

6. Keng tarqalgan xatolar va yechimlari

1. Shartni aylantirish

python
pd.crosstab(df["qurilma"], df["xarid"], normalize="columns")   # P(q | xarid)  # ⚠️
pd.crosstab(df["qurilma"], df["xarid"], normalize="index")     # P(xarid | q)  # ✅

2. Ta'rifda noto'g'ri maxraj

python
p = (df["savatcha"] & df["xarid"]).sum() / len(df)    # bu P(A VA B)  # ⚠️
p = (df["savatcha"] & df["xarid"]).sum() / df["savatcha"].sum()      # ✅

3. Kichik segment

python
df.groupby("shahar")["xarid"].mean()                               # ⚠️
df.groupby("shahar")["xarid"].agg(["mean", "count"])               # ✅

4. Mustaqillikni faraz qilish

python
p_ikkalasi = p_a * p_b            # bog'liq bo'lsa xato              # ⚠️
p_ikkalasi = (df["a"] & df["b"]).mean()   # ma'lumotdan              # ✅

5. Voronkada qo'shish

python
umumiy = p1 + p2 + p3                                              # ⚠️
umumiy = p1 * p2 * p3                                              # ✅

6. Tarkibni e'tiborsiz qoldirish

python
# "konversiya 12% dan 11% ga tushdi — sayt yomonlashdi"           # ⚠️
# segment bo'yicha ham ko'ring (groupby) — tarkib o'zgarganmi?     # ✅

7. Bo'sh shart

python
df[df["shahar"] == "Nukus"]["xarid"].mean()   # 0 qator → NaN       # ⚠️
# avval: (df["shahar"] == "Nukus").sum() > 0                        # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 4.11-dars (o'tilgan): Shartli ehtimol g'oyasi
  • 8.7-dars (o'tilgan): Segmentlar, Simpson paradoksi
  • 9.4-dars: Bayes teoremasi (P(B | A) → P(A | B))
  • 11-qism (reja): Xi-kvadrat mustaqillik testi
  • ML qismlari: Klassifikator = P(sinf | belgilar)

8. Eng yaxshi amaliyotlar

  1. Shart qaysi tomonda — aniq yozing.

  2. crosstab normalize ni tekshiring.

  3. Segmentda n ni ko'rsating.

  4. Mustaqillikni tekshiring, faraz qilmang.

  5. Voronka — zanjir (ko'paytma).

  6. Umumiy o'zgarishni tarkib va segmentga ajrating.

  7. Kesishmaydi ≠ mustaqil.

  8. Bo'sh shartni tekshiring.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # P(A | B) formulasi?
2.  # P(A | B) = P(B | A)?
3.  # jadvalda 90/200 — qaysi shart?
4.  # mustaqillik ta'rifi?
5.  # kesishmaydi = mustaqil?
6.  # voronka: 0.2 × 0.5 × 0.5?
7.  # normalize="index"?
8.  # normalize="columns"?
9.  # to'liq ehtimollik nima?
10. # tarkib o'zgarsa umumiy konversiya?
11. # 1-karta tuz, 2-si ham (qaytarmasdan)?
12. # klassifikator nimani baholaydi?
Javoblar
  1. P(A VA B) / P(B)
  2. Yo'q
  3. P(xarid | savatcha)
  4. P(A | B) = P(A)
  5. Yo'q — bog'liq
  6. 0.05
  7. Qator sharti: P(ustun | qator)
  8. Ustun sharti: P(qator | ustun)
  9. Segmentlarning vaznli o'rtachasi
  10. O'zgaradi (segmentlar o'zgarmasa ham)
  11. 4/52 × 3/51
  12. P(sinf | belgilar)

Vazifa 2: Xatolarni tuzating

python
1.  pd.crosstab(df["q"], df["xarid"], normalize="columns")   # P(xarid | q) kerak

2.  p = (df["a"] & df["b"]).sum() / len(df)   # P(a | b) kerak

3.  umumiy = p1 + p2 + p3   # voronka

4.  p_ikkalasi = p_a * p_b   # a va b bog'liq

5.  df.groupby("shahar")["xarid"].mean()   # n yo'q
Javoblar
python
1.  pd.crosstab(df["q"], df["xarid"], normalize="index")

2.  p = (df["a"] & df["b"]).sum() / df["b"].sum()

3.  umumiy = p1 * p2 * p3

4.  p_ikkalasi = (df["a"] & df["b"]).mean()

5.  df.groupby("shahar")["xarid"].agg(["mean", "count"])

Vazifa 3: Voronka

Modellang:

  1. 4 bosqichli voronka ma'lumoti
  2. Har bosqich shartli konversiyasi
  3. Zanjir bilan umumiy konversiya
  4. Eng zaif bosqichni 10% yaxshilash ta'siri

Vazifa 4: Mustaqillik

Modellang:

  1. Uchta juft o'zgaruvchi
  2. P(A | B) va P(A) solishtirish
  3. P(A VA B) va P(A) × P(B)
  4. Qaysilari mustaqil

Vazifa 5: Tarkib ta'siri

Modellang:

  1. Ikki oy, ikki segment
  2. Segment ichida konversiya o'sdi
  3. Umumiy konversiya tushdi (tarkib)
  4. To'liq ehtimollik bilan tushuntirish

Vazifa 6: Integratsiya

Modellang:

  1. crosstab (3-qism)
  2. Segmentlar (8.7)
  3. Simpson paradoksi
  4. Bayes'ga ko'prik (9.4)

Vazifa 7: O'ylash

Sudda prokuror aytadi: "Agar ayblanuvchi aybsiz bo'lsa, uning DNK si jinoyat joyidagi DNK ga mos kelish ehtimoli milliondan bir. Demak, u aybsiz bo'lish ehtimoli milliondan bir." Bu mulohazada qanday xato bor ("prokuror xatosi")? Xuddi shu xato Data Science'da — masalan, firibgarlik aniqlash yoki anomaliya tizimlarida — qanday ko'rinishda uchraydi?

Javob

Qisqa javob: prokuror P(moslik | aybsiz) ni P(aybsiz | moslik) bilan adashtirdi. Agar shaharda 5 million odam bo'lsa, milliondan bir ehtimol bilan ~5 ta aybsiz odam ham mos keladi. Faqat DNK dalili bo'lsa, ayblanuvchi 6 ta mos keluvchidan biri — aybsiz bo'lish ehtimoli ~5/6 bo'lishi mumkin!

1. Xato qayerda

  • Ma'lum: P(moslik | aybsiz) = 1/1 000 000
  • Kerak: P(aybsiz | moslik)
  • Bog'lovchi: asosiy ulush — aholida aybsizlar juda ko'p (Bayes, 9.4)

2. Hisob (5 mln aholi, 1 aybdor)

Guruh Soni Mos keladi
Aybdor 1 1
Aybsiz 4 999 999 ~5
Jami mos ~6

P(aybdor | moslik) ≈ 1/6.

3. Data Science'da

  • Firibgarlik: "Tizim firibgarlikni 99% aniqlaydi" = P(signal | firibgar). Lekin firibgarlik 0.1% bo'lsa, signallarning ko'pi — halol mijozlar
  • Anomaliya: "Bu nuqta normal bo'lsa, bunday qiymat ehtimoli 0.1%" — million nuqtada 1000 ta normal nuqta ham shunday
  • Model talqini: "Spamlarning 90% ida 'bepul' so'zi bor" ≠ "'bepul' bo'lsa 90% spam"

4. Data Scientist qanday

  1. Qaysi shartli ehtimol kerakligini aniq yozadi
  2. Asosiy ulushni (base rate) so'raydi
  3. Kutilgan sonlar jadvalini tuzadi (1 mln mijozda nechta)
  4. Precision'ni (P(firibgar | signal)) alohida o'lchaydi

5. Xulosa

  1. P(dalil | aybsiz) ≠ P(aybsiz | dalil)
  2. Asosiy ulush hal qiluvchi — kam uchraydigan hodisada ayniqsa
  3. Firibgarlik, anomaliya, spam — xuddi shu xato xavfi
  4. Sonlar jadvali — intuitiv va xatosiz yo'l (Bayes, 9.4)

Nimani mustahkamlaydi: 2.2, 2.7-bo'limlar.


Xulosa

Bu darsda shartli ehtimollikni o'rgandik.

Eng muhim uch fikr:

  1. Shart dunyoni toraytiradi. P(A | B) = P(A VA B) / P(B) — B ro'y bergan holatlar ichida A ning ulushi. Pandas: filtr + mean, groupby, crosstab(normalize="index") (qator sharti).

  2. P(A | B) ≠ P(B | A). Eng keng tarqalgan xato: "xaridorlarning 80% i mobil" ≠ "mobil foydalanuvchi ko'p xarid qiladi"; prokuror xatosi. Bog'lovchi — asosiy ulush va Bayes teoremasi 9.4-bob.

  3. Zanjir, mustaqillik, to'liq ehtimollik. Voronka — shartli ehtimollar ko'paytmasi; mustaqillik — P(A | B) = P(A) (kesishmaydi ≠ mustaqil; faraz emas, tekshiruv); umumiy ehtimol — segmentlarning vaznli o'rtachasi (tarkib o'zgarishi — Simpson paradoksi).

Keyingi darsda Bayes teoremasini o'rganamiz: P(B | A) dan P(A | B) ga o'tish, oldingi (prior) va keyingi (posterior) ehtimol, tibbiy test paradoksi va spam filtri — ma'lumot kelganda ishonchni yangilash.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
9.3-dars: Shartli ehtimollik — IlmHamroh