Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Bayes formulasi
- 2.2. Prior, likelihood, posterior
- 2.3. Asosiy ulush xatosi (base rate fallacy)
- 2.4. Chastotalar jadvali (tabiiy chastota usuli)
- 2.5. Ketma-ket yangilanish
- 2.6. Bayes va spam filtri
- 2.7. Bayes tuzoqlari
- 2.8. Bayes — dalil bilan ishonchni yangilash
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Tibbiy test: formula, jadval, simulyatsiya
- Misol 2 — Asosiy ulush ta'siri (firibgarlik)
- Misol 3 — Ketma-ket yangilanish
- Misol 4 — Kichik spam filtri (Naive Bayes qo'lda)
- 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.4-dars: Bayes teoremasi
9-QISM — EHTIMOLLIK · 4-dars
1. Kirish va motivatsiya
9.3-darsda ko'rdik: P(A | B) ≠ P(B | A). Lekin ko'pincha bizga ma'lum bo'lgani — biri, kerak bo'lgani — ikkinchisi. Test ishlab chiqaruvchisi aytadi: "Kasal odamda test 99% musbat" — bu P(musbat | kasal). Bemor so'raydi: "Testim musbat — kasal bo'lish ehtimolim qancha?" — bu P(kasal | musbat). Bayes teoremasi — ular orasidagi ko'prik.
Bayes teoremasi — ehtimollikdagi eng muhim formulalardan biri va butun bir fikrlash usuli: oldingi ishonch (prior) + yangi dalil (likelihood) → yangilangan ishonch (posterior). Data Science'da: spam filtri (Naive Bayes — so'zlar berilganda spam ehtimoli), tibbiy diagnostika, firibgarlik aniqlash (signal berilganda firibgar ehtimoli), A/B test (Bayescha yondashuv), ML (Bayes optimal klassifikator, Bayescha optimallashtirish). Bayes'ni tushunmaslik — kam uchraydigan hodisalarda juda katta xatolarga olib keladi.
Real vaziyat. Bank firibgarlik tizimi: "Firibgar tranzaksiyalarning 99% ini aniqlaydi, halol tranzaksiyalarning faqat 2% ida xato signal beradi". Menejer: "Signal chiqsa — 99% firibgar, kartani bloklaymiz!". Data Scientist Bayes bilan hisoblaydi: firibgarlik — 0.1% tranzaksiya. P(firibgar | signal) = 0.99 × 0.001 / (0.99 × 0.001 + 0.02 × 0.999) ≈ 4.7%! Signallarning 95% dan ortig'i — halol mijozlar. Kartani avtomatik bloklash — minglab norozi mijoz. Yechim: signal → qo'shimcha tekshiruv (SMS tasdiq), bloklash emas.
Bu darsda Bayes teoremasini o'rganamiz.
Bu darsda:
- Bayes formulasi
- Prior, likelihood, posterior
- Asosiy ulush xatosi (base rate fallacy)
- Chastotalar jadvali (tabiiy chastota usuli)
- Ketma-ket yangilanish
- Bayes va spam filtri
- Bayes tuzoqlari
- Amaliy: diagnostika va firibgarlik
ℹ Misollar real numpy/pandas bilan (Python 3.14).
2. Nazariya — chuqur tushuntirish
2.1. Bayes formulasi
P(B | A) × P(A)
P(A | B) = -------------------
P(B)
P(B) = P(B | A) × P(A) + P(B | A emas) × P(A emas) (to'liq ehtimollik, 9.3)
Kelib chiqishi (ko'paytirish qoidasi, 9.3):
P(A VA B) = P(A | B) × P(B) = P(B | A) × P(A)
→ ikkinchi tenglikni P(B) ga bo'lamizBayes teoremasi — shartni "aylantiradi": P(B | A) (odatda ma'lum — test xususiyati, model aniqligi) va P(A) (asosiy ulush) dan P(A | B) ni (bizga kerak — dalil berilganda xulosa) hisoblaydi. Formula ko'paytirish qoidasining ikki ko'rinishidan to'g'ridan-to'g'ri chiqadi. Maxraj P(B) — to'liq ehtimollik formulasi 9.3-bob: dalil barcha yo'llar bilan qanchalik tez-tez uchraydi.
2.2. Prior, likelihood, posterior
posterior ~ likelihood × prior
P(A | B) P(B | A) P(A)
prior — dalilgacha ishonch (asosiy ulush: kasallik 1%)
likelihood — gipoteza to'g'ri bo'lsa, dalil qanchalik kutiladi (test sezgirligi 99%)
evidence — P(B), dalilning umumiy ehtimoli (normallashtiruvchi)
posterior — dalildan keyingi ishonchBayescha fikrlash: ishonch — o'zgaruvchan; har yangi dalil uni yangilaydi. Prior — boshlang'ich bilim (tarixiy ulush, ekspert fikri); likelihood — dalil gipotezaga qanchalik mos; posterior — yangilangan ishonch. Muhim: kuchli dalil (likelihood yuqori) ham juda past prior ni ko'p ko'tara olmaydi — va aksincha. Bu 9.1'da aytilgan "Bayescha ehtimollik" (ishonch darajasi) — chastotali yondashuvdan farqli.
2.3. Asosiy ulush xatosi (base rate fallacy)
Asosiy ulush xatosi — prior'ni e'tiborsiz qoldirib, faqat likelihood'ga qarash: "test 99% aniq → musbat bo'lsa 99% kasal". Kasallik kam uchrasa (1%), sog'lom odamlar juda ko'p — ularning kichik xato ulushi ham (masalan, 5%) kasallarning to'g'ri musbatlaridan ko'p bo'ladi. Natija: P(kasal | musbat) ≈ 17%. Qoida: hodisa qanchalik kam uchrasa, musbat natijaga shunchalik shubha bilan qarash kerak. ML'da: imbalanced klassifikatsiya (Klassifikatsiya qismi) — kam sinfda precision past bo'lishi aynan shu.
2.4. Chastotalar jadvali (tabiiy chastota usuli)
10 000 odam, kasallik 1%, sezgirlik 99%, xato musbat 5%:
kasal (100) sog'lom (9 900)
test musbat 99 495 → jami musbat 594
test manfiy 1 9 405
P(kasal | musbat) = 99 / 594 ≈ 0.167Tabiiy chastota usuli — ehtimollar o'rniga aniq sonlar bilan fikrlash (10 000 odam): formula o'rniga jadval, intuitiv va xatosiz. Tadqiqotlar ko'rsatadi: shifokorlar ham ehtimollar bilan adashadi, lekin "10 000 kishidan 99 + 495 musbat" ko'rinishida to'g'ri javob beradi. Hisobotda menejerga Bayes natijasini shu shaklda tushuntiring 8.9-bob.
2.5. Ketma-ket yangilanish
Ketma-ket yangilanish — birinchi dalildan keyingi posterior ikkinchi dalil uchun prior bo'ladi: 1-test musbat → 17%; 2-test (mustaqil) ham musbat → prior 0.17 bilan → ~80%; 3-test → ~99%. Shu sababli tibbiyotda musbat skrining natijasi qayta test bilan tasdiqlanadi. Shart: testlar shartli mustaqil bo'lishi kerak (bir xil xato sababi bo'lmasin). Naive Bayes klassifikatori (Klassifikatsiya qismi) — ko'p so'z (dalil) bilan ketma-ket yangilanish, so'zlar shartli mustaqil deb faraz qilinadi ("naive").
2.6. Bayes va spam filtri
Spam filtri (Bayes'ning klassik qo'llanilishi): prior — P(spam) (masalan, 40%); likelihood — P("bepul" | spam), P("bepul" | spam emas) (o'quv ma'lumotidan so'z chastotalari); posterior — P(spam | "bepul"). Ko'p so'zda — ko'paytmalar (shartli mustaqillik farazi); amalda log-ehtimollar yig'indisi (juda kichik sonlar ko'paytmasi 0 ga "tushib ketmasin" — underflow). Nol chastota muammosi — Laplace tekislash (har so'z soniga +1). Bu Klassifikatsiya qismidagi MultinomialNB ning asosi.
2.7. Bayes tuzoqlari
Asosiy tuzoqlar: asosiy ulushni e'tiborsiz qoldirish (eng keng tarqalgan — firibgarlik, kasallik, anomaliya); P(B | A) = P(A | B) (prokuror xatosi, 9.3); prior'ni noto'g'ri tanlash (boshqa populyatsiyaning ulushi — kasalxona bemorlari va umumiy aholi ulushi farq qiladi); bog'liq dalillarni mustaqil deb yangilash (bir xil laboratoriyada ikki marta test — ishonch sun'iy oshadi); nol prior (P(A) = 0 bo'lsa, hech qanday dalil uni o'zgartirmaydi — "hech qachon" demang); nol likelihood (spam filtrida yangi so'z — Laplace); kichik sonlar ko'paytmasi (underflow — log ishlating).
2.8. Bayes — dalil bilan ishonchni yangilash
Bayes teoremasi: P(A | B) = P(B | A) × P(A) / P(B) — shartni aylantirish; posterior ~ likelihood × prior; maxraj — to'liq ehtimollik; asosiy ulush hal qiluvchi (kam uchraydigan hodisada musbat dalil ham past posterior); tabiiy chastota (10 000 kishilik jadval) — intuitiv tushuntirish; ketma-ket yangilanish (posterior → yangi prior; shartli mustaqillik); spam filtri (Naive Bayes, log, Laplace). Bog'lanishlar: 9.3 (shartli ehtimollik), Klassifikatsiya qismi (Naive Bayes, imbalanced, precision), Gipoteza testlari qismi (Bayescha A/B test).
3. Tez ma'lumotnoma
def bayes(prior: float, sezgirlik: float, xato_musbat: float) -> float:
"""P(A | musbat) = P(musbat | A) × P(A) / P(musbat)."""
dalil = sezgirlik * prior + xato_musbat * (1 - prior)
return sezgirlik * prior / dalil
bayes(0.01, 0.99, 0.05) # ≈ 0.167 (tibbiy test)
bayes(0.001, 0.99, 0.02) # ≈ 0.047 (firibgarlik)
# Ketma-ket yangilanish
p = 0.01
for _ in range(3):
p = bayes(p, 0.99, 0.05) # posterior → yangi prior
# Tabiiy chastota
N = 10_000
kasal = N * 0.01; tp = kasal * 0.99; fp = (N - kasal) * 0.05
tp / (tp + fp)
# Log-ehtimollar (underflow oldini olish)
import math
math.log(0.4) + sum(math.log(p) for p in [0.05, 0.02, 0.1])
QOIDA: prior'ni so'ra · jadval bilan tekshir · kam hodisada musbatga shubha · log ishlatBayes teoremasi xulosasi
P(A | B) = P(B | A) × P(A) / P(B)
Posterior ~ likelihood × prior
Asosiy ulush — kam hodisada musbat dalil ham past posterior
Tabiiy chastota — 10 000 kishilik jadval (intuitiv)
Ketma-ket — posterior → yangi prior (mustaqil dalillar)
Spam — Naive Bayes, log-ehtimol, Laplace tekislash4. Batafsil misollar
Misollar real numpy/pandas bilan (Python 3.14).
Misol 1 — Tibbiy test: formula, jadval, simulyatsiya
"""Bayes: tibbiy test paradoksi uch usulda (real numpy)."""
import numpy as np
def bayes(prior: float, sezgirlik: float, xato_musbat: float) -> float:
dalil = sezgirlik * prior + xato_musbat * (1 - prior)
return sezgirlik * prior / dalil
def main() -> None:
prior, sez, xm = 0.01, 0.99, 0.05
print("=== 1. Formula ===")
print(f" P(kasal | musbat) = {bayes(prior, sez, xm):.3f}")
print("\n=== 2. Tabiiy chastota (10 000 kishi) ===")
N = 10_000
kasal = int(N * prior)
tp = round(kasal * sez)
fp = round((N - kasal) * xm)
print(f" kasal: {kasal}, to'g'ri musbat: {tp}")
print(f" sog'lom: {N - kasal}, xato musbat: {fp}")
print(f" P = {tp} / ({tp} + {fp}) = {tp / (tp + fp):.3f}")
print("\n=== 3. Simulyatsiya (1 000 000 kishi) ===")
rng = np.random.default_rng(0)
k = rng.random(1_000_000) < prior
musbat = np.where(k, rng.random(k.size) < sez, rng.random(k.size) < xm)
print(f" P(kasal | musbat) = {k[musbat].mean():.3f}")
print(" ⭐ Test 99% sezgir, lekin musbat natija ~17% kasallik")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Formula ===
P(kasal | musbat) = 0.167
=== 2. Tabiiy chastota (10 000 kishi) ===
kasal: 100, to'g'ri musbat: 99
sog'lom: 9900, xato musbat: 495
P = 99 / (99 + 495) = 0.167
=== 3. Simulyatsiya (1 000 000 kishi) ===
P(kasal | musbat) = 0.167
⭐ Test 99% sezgir, lekin musbat natija ~17% kasallikNima ko'rsatdi: 2.1, 2.3, 2.4-bo'limlar.
Misol 2 — Asosiy ulush ta'siri (firibgarlik)
"""Prior (asosiy ulush) posterior'ga qanday ta'sir qiladi (real Python)."""
def bayes(prior: float, sezgirlik: float, xato_musbat: float) -> float:
dalil = sezgirlik * prior + xato_musbat * (1 - prior)
return sezgirlik * prior / dalil
def main() -> None:
sez, xm = 0.99, 0.02
print("=== 1. Firibgarlik tizimi (sezgirlik 99%, xato signal 2%) ===")
for prior in [0.5, 0.1, 0.01, 0.001, 0.0001]:
print(f" firibgarlik ulushi {prior:>7.2%}: P(firibgar | signal) = {bayes(prior, sez, xm):.3f}")
print("\n=== 2. 1 000 000 tranzaksiyada (ulush 0.1%) ===")
N, ulush = 1_000_000, 0.001
tp = N * ulush * sez
fp = N * (1 - ulush) * xm
print(f" to'g'ri signal: {tp:,.0f}, xato signal: {fp:,.0f}")
print(f" signallarning {fp / (tp + fp):.1%} i — halol mijoz")
print("\n=== 3. Xato signalni kamaytirish ===")
for xm2 in [0.02, 0.005, 0.001]:
print(f" xato signal {xm2:.1%}: posterior {bayes(ulush, sez, xm2):.3f}")
print(" ⭐ Kam hodisada xato musbat ulushi hal qiluvchi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Firibgarlik tizimi (sezgirlik 99%, xato signal 2%) ===
firibgarlik ulushi 50.00%: P(firibgar | signal) = 0.980
firibgarlik ulushi 10.00%: P(firibgar | signal) = 0.846
firibgarlik ulushi 1.00%: P(firibgar | signal) = 0.333
firibgarlik ulushi 0.10%: P(firibgar | signal) = 0.047
firibgarlik ulushi 0.01%: P(firibgar | signal) = 0.005
=== 2. 1 000 000 tranzaksiyada (ulush 0.1%) ===
to'g'ri signal: 990, xato signal: 19,980
signallarning 95.3% i — halol mijoz
=== 3. Xato signalni kamaytirish ===
xato signal 2.0%: posterior 0.047
xato signal 0.5%: posterior 0.165
xato signal 0.1%: posterior 0.498
⭐ Kam hodisada xato musbat ulushi hal qiluvchiNima ko'rsatdi: 2.2, 2.3-bo'limlar.
Misol 3 — Ketma-ket yangilanish
"""Ketma-ket Bayes yangilanishi: posterior → yangi prior (real Python)."""
def bayes(prior: float, sezgirlik: float, xato_musbat: float) -> float:
dalil = sezgirlik * prior + xato_musbat * (1 - prior)
return sezgirlik * prior / dalil
def main() -> None:
print("=== 1. Uchta mustaqil musbat test ===")
p = 0.01
print(f" boshlang'ich prior: {p:.3f}")
for i in range(1, 4):
p = bayes(p, 0.99, 0.05)
print(f" {i}-test musbat → {p:.3f}")
print("\n=== 2. Musbat, keyin manfiy ===")
p = bayes(0.01, 0.99, 0.05)
# manfiy natija: P(manfiy | kasal) = 0.01, P(manfiy | sog'lom) = 0.95
p_manfiy = 0.01 * p / (0.01 * p + 0.95 * (1 - p))
print(f" musbat → {p:.3f}, keyin manfiy → {p_manfiy:.4f}")
print("\n=== 3. Nol prior — hech qachon o'zgarmaydi ===")
p = 0.0
for _ in range(5):
p = bayes(p, 0.99, 0.05)
print(f" 5 ta musbatdan keyin: {p}")
print(" ⭐ Posterior → keyingi dalil uchun prior")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Uchta mustaqil musbat test ===
boshlang'ich prior: 0.010
1-test musbat → 0.167
2-test musbat → 0.798
3-test musbat → 0.987
=== 2. Musbat, keyin manfiy ===
musbat → 0.167, keyin manfiy → 0.0021
=== 3. Nol prior — hech qachon o'zgarmaydi ===
5 ta musbatdan keyin: 0.0
⭐ Posterior → keyingi dalil uchun priorNima ko'rsatdi: 2.5, 2.7-bo'limlar.
Misol 4 — Kichik spam filtri (Naive Bayes qo'lda)
"""Naive Bayes spam filtri qo'lda: log-ehtimol va Laplace (real pandas/math)."""
import math
from collections import Counter
import pandas as pd
def main() -> None:
xatlar = pd.DataFrame({
"matn": ["bepul pul yut", "bepul chegirma bugun", "yut bepul sovg'a",
"ertaga uchrashuv", "hisobot ilova", "bugun uchrashuv vaqti",
"chegirma faqat bugun", "loyiha hisobot"],
"spam": [1, 1, 1, 0, 0, 0, 1, 0],
})
prior = xatlar["spam"].mean()
soz = {k: Counter(" ".join(xatlar[xatlar["spam"] == k]["matn"]).split()) for k in [0, 1]}
lugat = set(soz[0]) | set(soz[1])
jami = {k: sum(soz[k].values()) for k in [0, 1]}
def log_p(matn: str, k: int) -> float:
p = math.log(prior if k == 1 else 1 - prior)
for s in matn.split():
p += math.log((soz[k][s] + 1) / (jami[k] + len(lugat))) # Laplace
return p
print("=== 1. O'quv ma'lumoti ===")
print(f" P(spam) = {prior:.2f}, lug'at: {len(lugat)} so'z")
print("\n=== 2. Yangi xatlar ===")
for yangi in ["bepul chegirma", "hisobot uchrashuv", "bugun yut"]:
l1, l0 = log_p(yangi, 1), log_p(yangi, 0)
p_spam = 1 / (1 + math.exp(l0 - l1))
print(f" '{yangi}': P(spam) = {p_spam:.3f}")
print("\n=== 3. Nega log ===")
print(f" 0.001^200 = {0.001 ** 200} (underflow)")
print(f" 200 × log(0.001) = {200 * math.log(0.001):.1f}")
print(" ⭐ Naive Bayes = ko'p so'z bilan Bayes yangilanishi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. O'quv ma'lumoti ===
P(spam) = 0.50, lug'at: 13 so'z
=== 2. Yangi xatlar ===
'bepul chegirma': P(spam) = 0.903
'hisobot uchrashuv': P(spam) = 0.079
'bugun yut': P(spam) = 0.777
=== 3. Nega log ===
0.001^200 = 0.0 (underflow)
200 × log(0.001) = -1381.6
⭐ Naive Bayes = ko'p so'z bilan Bayes yangilanishiNima ko'rsatdi: 2.6-bo'lim.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Test 99% aniq → musbat = 99% kasal" | Prior'ga bog'liq (~17%) |
| "Prior — muhim emas" | Kam hodisada hal qiluvchi |
| "Signal = firibgar" | Ko'pi halol (asosiy ulush) |
| "Bir xil laboratoriyada 2 test — ikki dalil" | Bog'liq dalil — ishonch sun'iy |
| "P = 0 — xavfsiz baho" | Nol prior hech qachon o'zgarmaydi |
| "Ehtimollarni ko'paytiraman" | Log yig'indisi (underflow) |
| "Yangi so'z — ehtimol 0" | Laplace tekislash |
| "Bayes faqat nazariya" | Spam, diagnostika, firibgarlik |
6. Keng tarqalgan xatolar va yechimlari
1. Prior'siz xulosa
p_kasal = 0.99 # sezgirlik, posterior emas # ⚠️
p_kasal = bayes(0.01, 0.99, 0.05) # ≈ 0.167 # ✅2. Maxrajni unutish
p = 0.99 * 0.01 # bu P(musbat VA kasal) # ⚠️
p = 0.99 * 0.01 / (0.99 * 0.01 + 0.05 * 0.99) # ✅3. Underflow
p = math.prod(ehtimollar) # 0.0 bo'lib qoladi # ⚠️
log_p = sum(math.log(x) for x in ehtimollar) # ✅4. Nol chastota
p = soz[s] / jami # yangi so'z → 0 → log xato # ⚠️
p = (soz[s] + 1) / (jami + len(lugat)) # Laplace # ✅5. Noto'g'ri populyatsiya prior'i
prior = 0.30 # kasalxona bemorlari ulushi — skrining uchun # ⚠️
prior = 0.01 # tekshirilayotgan populyatsiya ulushi # ✅6. Bog'liq dalillar
p = bayes(bayes(0.01, 0.99, 0.05), 0.99, 0.05) # bir xil namuna # ⚠️
# ikkinchi test — mustaqil usul/namuna bilan # ✅7. Nol prior
prior = 0.0 # "bu hech qachon bo'lmaydi" # ⚠️
prior = 1e-6 # juda kichik, lekin nol emas # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 9.3-dars (o'tilgan): Shartli ehtimollik, to'liq ehtimollik
- 8.8-dars (o'tilgan): Gipoteza va dalil
- Klassifikatsiya qismi (reja): Naive Bayes, imbalanced, precision/recall
- Gipoteza testlari qismi (reja): Bayescha A/B test
- 8.9-dars (o'tilgan): Natijani tabiiy chastota bilan tushuntirish
8. Eng yaxshi amaliyotlar
Har doim prior'ni (asosiy ulushni) so'rang.
Natijani 10 000 kishilik jadval bilan tekshiring.
Kam hodisada musbat natijaga shubha qiling.
Musbat natija — qo'shimcha tekshiruv, avtomatik qaror emas.
Ketma-ket yangilashda mustaqillikni tekshiring.
Log-ehtimol ishlating.
Laplace tekislash — nol chastotaga qarshi.
Nol prior bermang.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # Bayes formulasi?
2. # prior nima?
3. # likelihood nima?
4. # posterior nima?
5. # maxraj P(B) qanday hisoblanadi?
6. # prior 1%, sezgirlik 99%, xato 5% → posterior?
7. # prior kamaysa posterior?
8. # 2-mustaqil musbat test → posterior?
9. # nol prior + dalil?
10. # nega log?
11. # Laplace nima?
12. # Naive Bayes'dagi "naive"?Javoblar
- P(A | B) = P(B | A) × P(A) / P(B)
- Dalilgacha ishonch
- P(dalil | gipoteza)
- Dalildan keyingi ishonch
- To'liq ehtimollik
- ~0.167
- Kamayadi
- ~0.8
- 0 qoladi
- Underflow
- Har soniga +1
- So'zlar shartli mustaqil deb faraz
Vazifa 2: Xatolarni tuzating
1. p_firibgar = 0.99 # sezgirlik
2. p = 0.99 * 0.001 # posterior sifatida
3. p = math.prod([0.001] * 300)
4. p = soz["yangi"] / jami
5. prior = 0.0Javoblar
1. p_firibgar = bayes(0.001, 0.99, 0.02)
2. p = 0.99 * 0.001 / (0.99 * 0.001 + 0.02 * 0.999)
3. log_p = 300 * math.log(0.001)
4. p = (soz["yangi"] + 1) / (jami + len(lugat))
5. prior = 1e-6Vazifa 3: Diagnostika
Modellang:
- Kasallik 0.5%, sezgirlik 95%, xato musbat 3%
- Formula bilan posterior
- 100 000 kishilik jadval
- Ikkinchi mustaqil test
Vazifa 4: Firibgarlik
Modellang:
- Ulush 0.2%, sezgirlik 98%
- Xato signal 1%, 0.5%, 0.1%
- Har holatda posterior
- Bloklash yoki SMS tasdiq qarori
Vazifa 5: Spam filtri
Modellang:
- 20 ta xat (spam/emas)
- So'z chastotalari
- Laplace bilan Naive Bayes
- 5 ta yangi xatni tasniflash
Vazifa 6: Integratsiya
Modellang:
- Shartli ehtimollik (9.3)
- To'liq ehtimollik (maxraj)
- Simulyatsiya (9.1)
- Hisobotda tabiiy chastota (8.9)
Vazifa 7: O'ylash
Bayescha fikrlash: "Kuchli da'vo — kuchli dalil talab qiladi". Yangi ML model "sotuvni 40% oshiradi" deb da'vo qilinmoqda, bitta pilot test yaxshi natija bergan. Bayes nuqtai nazaridan bu natijaga qanchalik ishonish kerak? Prior qayerdan olinadi va nima uchun "hayratli" natijalar ko'pincha takrorlanmaydi?
Javob
Qisqa javob: "40% o'sish" kabi natijalarning prior ehtimoli juda past (o'xshash loyihalarning ko'pi bir necha foiz beradi). Bitta test — cheklangan dalil; xato musbat natija ehtimoli (tasodif, p-hacking, xato) bilan solishtirganda, posterior hali past bo'lishi mumkin. Shuning uchun "hayratli" natijalar ko'pincha takrorlanmaydi — ular xato musbatlar orasidan "tanlangan".
1. Prior qayerdan
- O'xshash loyihalar tarixi (kompaniyadagi oldingi A/B testlar)
- Soha tajribasi (odatda o'sish 1-5%)
- Meta-tahlillar (ko'p tadqiqot natijalari)
2. Hisob g'oyasi
| Haqiqatan 40% | Haqiqatan yo'q | |
|---|---|---|
| Prior | 2% | 98% |
| Pilot "yaxshi" | 80% | 10% (tasodif, xato) |
| Jami | 1.6 | 9.8 |
P(haqiqiy | yaxshi pilot) ≈ 1.6 / 11.4 ≈ 14%.
3. Nega hayratli natijalar takrorlanmaydi
- Past prior + shovqinli dalil = past posterior
- Ko'p tajriba ichidan eng yaxshisi e'lon qilinadi (tanlov)
- Kichik namuna — katta tasodifiy og'ish (9.1)
- "Winner's curse" — tanlangan natija haqiqiydan kattaroq
4. Data Scientist qanday
- Prior'ni tarixiy ma'lumotdan baholaydi
- Mustaqil takroriy test talab qiladi (ketma-ket yangilanish)
- Ta'sir kattaligini ehtiyotkorlik bilan kichraytirib baholaydi
- Menejerga tabiiy chastota bilan tushuntiradi
5. Xulosa
- Kuchli da'vo — past prior; bitta dalil yetarli emas
- Posterior = prior × dalil kuchi
- Hayratli natijalar — ko'pincha tanlangan xato musbatlar
- Takroriy mustaqil test — ishonchning yagona yo'li
Nimani mustahkamlaydi: 2.2, 2.3, 2.5-bo'limlar.
Xulosa
Bu darsda Bayes teoremasini o'rgandik.
Eng muhim uch fikr:
Bayes formulasi. P(A | B) = P(B | A) × P(A) / P(B) — ma'lum P(dalil | gipoteza) dan kerakli P(gipoteza | dalil) ga o'tish; maxraj — to'liq ehtimollik 9.3-bob. Posterior ~ likelihood × prior.
Asosiy ulush hal qiluvchi. Kam uchraydigan hodisada (kasallik 1%, firibgarlik 0.1%) 99% sezgir test ham past posterior beradi (17%, 4.7%) — xato musbatlar ko'p. Tabiiy chastota jadvali (10 000 kishi) — intuitiv tekshiruv va menejerga tushuntirish usuli. Musbat signal — qo'shimcha tekshiruv, avtomatik qaror emas.
Ketma-ket yangilanish va spam filtri. Posterior → keyingi dalil uchun prior (mustaqil dalillar); nol prior hech qachon o'zgarmaydi. Naive Bayes — ko'p so'z bilan yangilanish: log-ehtimollar (underflow), Laplace tekislash (nol chastota).
Keyingi darsda tasodifiy o'zgaruvchini o'rganamiz: natijani songa aylantirish, diskret va uzluksiz o'zgaruvchilar, ehtimollik funksiyalari (PMF, PDF, CDF) va scipy.stats bilan ishlash.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!