Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Shartli ehtimollik ta'rifi
- 2.2. P(A | B) ≠ P(B | A)
- 2.3. Ko'paytirish qoidasi (zanjir)
- 2.4. Mustaqillik va uni tekshirish
- 2.5. To'liq ehtimollik formulasi
- 2.6. Pandas'da shartli ehtimollik
- 2.7. Shartli ehtimollik tuzoqlari
- 2.8. Shartli ehtimollik — ma'lumot bilan yangilanish
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Jadvaldan shartli ehtimollik
- Misol 2 — P(A | B) ≠ P(B | A): mobil xatosi
- Misol 3 — Voronka (zanjir qoidasi)
- Misol 4 — Mustaqillik va to'liq ehtimollik
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
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
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)
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.09Ko'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
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.1175To'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
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'rsatShartli 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'rtachasi4. Batafsil misollar
Misollar real pandas/numpy bilan (Python 3.14).
Misol 1 — Jadvaldan shartli ehtimollik
"""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:
=== 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
"""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:
=== 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 savolNima ko'rsatdi: 2.2, 2.6-bo'limlar.
Misol 3 — Voronka (zanjir qoidasi)
"""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:
=== 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
"""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:
=== 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'rtachasiNima 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
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
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
df.groupby("shahar")["xarid"].mean() # ⚠️
df.groupby("shahar")["xarid"].agg(["mean", "count"]) # ✅4. Mustaqillikni faraz qilish
p_ikkalasi = p_a * p_b # bog'liq bo'lsa xato # ⚠️
p_ikkalasi = (df["a"] & df["b"]).mean() # ma'lumotdan # ✅5. Voronkada qo'shish
umumiy = p1 + p2 + p3 # ⚠️
umumiy = p1 * p2 * p3 # ✅6. Tarkibni e'tiborsiz qoldirish
# "konversiya 12% dan 11% ga tushdi — sayt yomonlashdi" # ⚠️
# segment bo'yicha ham ko'ring (groupby) — tarkib o'zgarganmi? # ✅7. Bo'sh shart
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
Shart qaysi tomonda — aniq yozing.
crosstab normalize ni tekshiring.
Segmentda n ni ko'rsating.
Mustaqillikni tekshiring, faraz qilmang.
Voronka — zanjir (ko'paytma).
Umumiy o'zgarishni tarkib va segmentga ajrating.
Kesishmaydi ≠ mustaqil.
Bo'sh shartni tekshiring.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
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
- P(A VA B) / P(B)
- Yo'q
- P(xarid | savatcha)
- P(A | B) = P(A)
- Yo'q — bog'liq
- 0.05
- Qator sharti: P(ustun | qator)
- Ustun sharti: P(qator | ustun)
- Segmentlarning vaznli o'rtachasi
- O'zgaradi (segmentlar o'zgarmasa ham)
- 4/52 × 3/51
- P(sinf | belgilar)
Vazifa 2: Xatolarni tuzating
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'qJavoblar
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:
- 4 bosqichli voronka ma'lumoti
- Har bosqich shartli konversiyasi
- Zanjir bilan umumiy konversiya
- Eng zaif bosqichni 10% yaxshilash ta'siri
Vazifa 4: Mustaqillik
Modellang:
- Uchta juft o'zgaruvchi
- P(A | B) va P(A) solishtirish
- P(A VA B) va P(A) × P(B)
- Qaysilari mustaqil
Vazifa 5: Tarkib ta'siri
Modellang:
- Ikki oy, ikki segment
- Segment ichida konversiya o'sdi
- Umumiy konversiya tushdi (tarkib)
- To'liq ehtimollik bilan tushuntirish
Vazifa 6: Integratsiya
Modellang:
- crosstab (3-qism)
- Segmentlar (8.7)
- Simpson paradoksi
- 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
- Qaysi shartli ehtimol kerakligini aniq yozadi
- Asosiy ulushni (base rate) so'raydi
- Kutilgan sonlar jadvalini tuzadi (1 mln mijozda nechta)
- Precision'ni (P(firibgar | signal)) alohida o'lchaydi
5. Xulosa
- P(dalil | aybsiz) ≠ P(aybsiz | dalil)
- Asosiy ulush hal qiluvchi — kam uchraydigan hodisada ayniqsa
- Firibgarlik, anomaliya, spam — xuddi shu xato xavfi
- 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:
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).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.
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.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!