Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Xatoning uch qismi
- 2.2. Intuitiv ma'no
- 2.3. Murakkablik bilan bog'liqlik
- 2.4. Simulyatsiya bilan o'lchash
- 2.5. Dispersiyani kamaytirish
- 2.6. Siljishni kamaytirish
- 2.7. Bias-variance tuzoqlari
- 2.8. Bias-variance — xatoning tarkibi
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Bias va dispersiyani o'lchash
- Misol 2 — Modellar: barqarorlik va aniqlik
- Misol 3 — Ma'lumot hajmi ta'siri
- Misol 4 — Real ma'lumotda tashxis
- 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
12.5-dars: Bias-variance yoyilmasi
12-QISM — MACHINE LEARNING ASOSLARI · 5-dars
1. Kirish va motivatsiya
12.4-darsda overfitting va underfittingni kuzatdik: o'quv va validatsiya ballari orasidagi tafovut. Endi shu hodisaning nazariy tushuntirishiga o'tamiz — bias-variance yoyilmasi. U bashorat xatosini uch qismga ajratadi: siljish (bias — model noto'g'ri faraz qilmoqda), dispersiya (variance — model o'quv ma'lumotiga juda sezgir) va qaytarilmas shovqin (irreducible error — hech qanday model yo'qota olmaydi).
Bu yoyilma amaliy ahamiyatga ega: u "model yomon — nima qilish kerak?" savoliga yo'nalish beradi. Siljish katta bo'lsa — murakkabroq model yoki boyroq belgilar kerak; dispersiya katta bo'lsa — regularizatsiya, ko'proq ma'lumot yoki ansambl kerak. Ikkalasi ham noldan farqli bo'lsa (deyarli har doim), muvozanat qidiriladi.
Real vaziyat. Ikki jamoa bir xil vazifani hal qiladi. Birinchisi chiziqli regressiya ishlatadi: har safar (turli o'quv namunalarida) natija deyarli bir xil, lekin xato katta — yuqori siljish, past dispersiya. Ikkinchisi cheklanmagan qaror daraxti: har namunada model butunlay boshqacha, ba'zan juda yaxshi, ba'zan juda yomon — past siljish, yuqori dispersiya. Yechim uchinchi jamoada: daraxtlar ansambli (Random Forest) — past siljishni saqlab, dispersiyani o'rtachalash orqali kamaytiradi.
Bu darsda bias-variance yoyilmasini o'rganamiz.
Bu darsda:
- Xatoning uch qismi
- Siljish va dispersiya: intuitiv ma'no
- Murakkablik bilan bog'liqlik
- Simulyatsiya bilan o'lchash
- Dispersiyani kamaytirish usullari (ansambl, regularizatsiya)
- Siljishni kamaytirish usullari
- Bias-variance tuzoqlari
- Amaliy: modelni tashxis qilish
ℹ Misollar real numpy/sklearn bilan (Python 3.14).
2. Nazariya — chuqur tushuntirish
2.1. Xatoning uch qismi
Bir nuqtadagi kutilgan kvadratik xato (turli o'quv namunalari bo'yicha):
E[(y - f_hat(x))^2] = BIAS^2 + VARIANCE + SHOVQIN
BIAS = E[f_hat(x)] - f(x) — o'rtacha bashorat haqiqiydan qanchalik uzoq
VARIANCE = E[(f_hat(x) - E[f_hat(x)])^2] — bashoratning namunadan namunaga tebranishi
SHOVQIN = Var(epsilon) — qaytarilmas (o'lchov xatosi, hisobga olinmagan omillar)Yoyilma xatoni uch manbaga ajratadi. Siljish — modelning tizimli xatosi (noto'g'ri faraz: masalan, to'g'ri chiziq bilan egri bog'lanishni modellash). Dispersiya — o'quv namunasiga sezgirlik (boshqa namuna — boshqa model). Shovqin — ma'lumotdagi tasodifiylik: uni hech qanday model yo'qota olmaydi 9.8-bob, shuning uchun u xatoning pastki chegarasi.
2.2. Intuitiv ma'no
Nishon otish metaforasi:
past bias, past variance — o'qlar markazda va zich (ideal)
past bias, yuqori variance — markaz atrofida, lekin tarqoq (overfitting)
yuqori bias, past variance — bir joyda zich, lekin chetda (underfitting)
yuqori bias, yuqori variance — tarqoq va chetda (eng yomon)
Amaliy tarjima:
yuqori bias → model o'quv ma'lumotida ham yomon
yuqori variance → turli namunalarda natija juda farq qiladiSiljish — tizimli xato (model sinfi yetarli emas); dispersiya — tasodifiy xato (model shovqinga moslashadi). Dispersiyani ko'rish uchun bitta model yetarli emas: turli o'quv namunalarida bir necha model o'qitib, ularning bashoratlari tarqoqligiga qarash kerak 2.4-bob.
2.3. Murakkablik bilan bog'liqlik
xato
│ \ /
│ \ BIAS^2 / VARIANCE
│ \ /
│ \___ ___/
│ \_____________ ___/
│ jami xato \_/ ← optimal murakkablik
│ ─────────────────────── shovqin (qaytarilmas)
└────────────────────────────────→ murakkablik
Murakkablik ↑ → bias ↓, variance ↑
Ma'lumot hajmi ↑ → variance ↓ (bias o'zgarmaydi)Klassik muvozanat: murakkablikni oshirish siljishni kamaytiradi, lekin dispersiyani oshiradi. Optimal nuqta — ikkalasining yig'indisi minimal bo'lgan joy (12.4 dagi validatsiya minimumi). Muhim farq: ma'lumot hajmini oshirish dispersiyani kamaytiradi, lekin siljishga ta'sir qilmaydi — shuning uchun "ko'proq ma'lumot" har doim ham yordam bermaydi (12.4, learning curve).
2.4. Simulyatsiya bilan o'lchash
1. Haqiqiy funksiyani biling (simulyatsiyada mumkin): y = f(x) + shovqin
2. B marta: yangi o'quv namunasi yarating → model o'qiting → test nuqtalarida bashorat
3. Har test nuqtasida:
bias^2 = (bashoratlar o'rtachasi - f(x))^2
variance = bashoratlar dispersiyasi
4. O'rtachalang
Real ma'lumotda f(x) noma'lum — lekin dispersiyani bootstrap 11.8-bob bilan baholash mumkinBias va dispersiyani aniq o'lchash faqat simulyatsiyada mumkin (haqiqiy funksiya ma'lum bo'lganda). Real loyihada ularning belgilarini ko'ramiz: o'quv ballining o'zi past — yuqori siljish; CV bo'laklari orasida katta tarqoqlik yoki o'quv/validatsiya tafovuti — yuqori dispersiya. Bu — tashxis uchun yetarli.
2.5. Dispersiyani kamaytirish
ANSAMBL (bagging): ko'p modelni turli namunalarda o'qitib, o'rtachalash
Var(o'rtacha) = Var(bitta) / B (mustaqil bo'lsa; 9.6)
→ Random Forest: chuqur daraxtlar (past bias) + o'rtachalash (past variance)
REGULARIZATSIYA: model erkinligini cheklash (Ridge, Lasso, max_depth — 12.4)
KO'PROQ MA'LUMOT: SE ~ 1/sqrt(n) 9.6-bob
BELGILARNI KAMAYTIRISH: kam parametr — kam tebranish
ERTA TO'XTATISH: iterativ modellardaAnsambl — dispersiyani kamaytirishning eng kuchli usuli: mustaqil modellarning o'rtachasi bitta modelga qaraganda ancha barqaror (9.6 dagi SE = SD/sqrt(n) g'oyasi). Random Forest aynan shu printsipga asoslangan: har daraxt chuqur (past siljish, yuqori dispersiya), lekin 100 ta daraxtning o'rtachasi — barqaror. Boosting esa aksincha — siljishni kamaytirishga qaratilgan (keyingi qismlarda).
2.6. Siljishni kamaytirish
Siljish katta bo'lsa (model o'quv ma'lumotida ham yomon): murakkabroq model (chiziqlidan daraxtga, polinom darajasi, chuqurroq tarmoq); boyroq belgilar (o'zaro ta'sirlar, nochiziqli o'zgartirishlar — log, kvadrat; domen bilimi); regularizatsiyani kamaytirish (alpha ni pasaytirish); uzoqroq o'qitish (iterativ modellarda); boosting (ketma-ket modellar oldingisining xatosini tuzatadi). Diqqat: siljishni kamaytirish odatda dispersiyani oshiradi — validatsiya bilan tekshiring.
2.7. Bias-variance tuzoqlari
Asosiy tuzoqlar: shovqinni model xatosi deb hisoblash (qaytarilmas qism — chegara); dispersiyani bitta model bilan baholash (bir necha namuna yoki CV bo'laklari kerak); "ko'proq ma'lumot hamma narsani hal qiladi" (siljishga ta'sir qilmaydi); ansamblni har doim yechim deb bilish (siljish katta bo'lsa yordam bermaydi); tashxissiz davolash (nima muammo ekanini bilmay parametr o'zgartirish); CV SD sini e'tiborsiz qoldirish (dispersiya belgisi); klassifikatsiyada yoyilmani to'g'ridan-to'g'ri qo'llash (kvadratik xato uchun aniq, 0-1 xato uchun taxminiy).
2.8. Bias-variance — xatoning tarkibi
Bashorat xatosi uch qismdan: siljish^2 (tizimli — model sinfi yetarli emas), dispersiya (o'quv namunasiga sezgirlik), qaytarilmas shovqin (chegara). Murakkablik oshgani sari siljish kamayadi, dispersiya o'sadi — optimal nuqta ikkalasining yig'indisi minimal bo'lgan joyda. Ma'lumot hajmi dispersiyani kamaytiradi, siljishni emas. Davolash: yuqori dispersiyada — ansambl, regularizatsiya, ko'proq ma'lumot; yuqori siljishda — murakkabroq model, boyroq belgilar. Keyingi dars — birinchi to'liq model: sklearn bilan amaliy ish oqimi.
3. Tez ma'lumotnoma
import numpy as np
from sklearn.model_selection import cross_validate
# TASHXIS (real ma'lumotda)
r = cross_validate(model, X, y, cv=5, return_train_score=True, scoring="neg_mean_squared_error")
train_mse = -r["train_score"].mean()
cv_mse = -r["test_score"].mean()
# train_mse katta → yuqori siljish
# cv_mse >> train_mse → yuqori dispersiya
# CV bo'laklari SD katta → yuqori dispersiya
# SIMULYATSIYA (bias/variance ni aniq o'lchash)
bashoratlar = np.array([model.fit(*yangi_namuna()).predict(X_test) for _ in range(B)])
bias2 = ((bashoratlar.mean(axis=0) - f_haqiqiy(X_test)) ** 2).mean()
variance = bashoratlar.var(axis=0).mean()
QOIDA: avval tashxis, keyin davolash · ansambl — dispersiya · belgilar — siljishBias-variance xulosasi
Xato = bias^2 + variance + shovqin (qaytarilmas chegara)
Bias — tizimli xato (model yetarli emas); variance — namunaga sezgirlik
Murakkablik ↑: bias ↓, variance ↑; ma'lumot ↑: variance ↓
Yuqori variance: ansambl, regularizatsiya, ko'proq ma'lumot
Yuqori bias: murakkabroq model, boyroq belgilar, boosting4. Batafsil misollar
Misollar real numpy/sklearn bilan (Python 3.14).
Misol 1 — Bias va dispersiyani o'lchash
"""Simulyatsiya: turli murakkablikda bias^2, variance va jami xato (real numpy/sklearn)."""
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures
def haqiqiy(x: np.ndarray) -> np.ndarray:
return np.sin(1.5 * x) + 0.3 * x
def main() -> None:
rng = np.random.default_rng(0)
SHOVQIN_SD, n, B = 0.4, 40, 300
x_test = np.linspace(-3, 3, 60)
X_test = x_test.reshape(-1, 1)
f_test = haqiqiy(x_test)
print("=== Daraja bo'yicha yoyilma (shovqin dispersiyasi = 0.160) ===")
print(f" {'daraja':>7} {'bias^2':>9} {'variance':>10} {'jami':>9}")
for d in [1, 2, 3, 5, 9, 14]:
bashoratlar = np.empty((B, len(x_test)))
for b in range(B):
xb = rng.uniform(-3, 3, n)
yb = haqiqiy(xb) + rng.normal(0, SHOVQIN_SD, n)
model = make_pipeline(PolynomialFeatures(d), LinearRegression())
model.fit(xb.reshape(-1, 1), yb)
bashoratlar[b] = model.predict(X_test)
bias2 = ((bashoratlar.mean(axis=0) - f_test) ** 2).mean()
var = bashoratlar.var(axis=0).mean()
print(f" {d:>7} {bias2:>9.4f} {var:>10.4f} {bias2 + var + SHOVQIN_SD ** 2:>9.4f}")
print("\n daraja 1-2: bias katta (underfitting)")
print(" daraja 9-14: variance katta (overfitting)")
print(" ⭐ Optimal — bias^2 + variance yig'indisi minimal joyda")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== Daraja bo'yicha yoyilma (shovqin dispersiyasi = 0.160) ===
daraja bias^2 variance jami
1 0.4862 0.0370 0.6831
2 0.4883 0.0645 0.7128
3 0.0800 0.0397 0.2797
5 0.0031 0.0469 0.2100
9 0.0242 6.8686 7.0527
14 85.0482 2257.3784 2342.5867
daraja 1-2: bias katta (underfitting)
daraja 9-14: variance katta (overfitting)
⭐ Optimal — bias^2 + variance yig'indisi minimal joydaNima ko'rsatdi: 2.1, 2.3, 2.4-bo'limlar.
Misol 2 — Modellar: barqarorlik va aniqlik
"""Turli modellarning namunadan namunaga tebranishi (real numpy/sklearn)."""
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
def haqiqiy(X: np.ndarray) -> np.ndarray:
return 2 * X[:, 0] + X[:, 1] ** 2 - 1.5 * X[:, 0] * X[:, 1]
def main() -> None:
rng = np.random.default_rng(1)
n, B = 150, 60
X_test = rng.normal(size=(200, 2))
f_test = haqiqiy(X_test)
modellar = {
"chiziqli": lambda: LinearRegression(),
"daraxt (cheksiz)": lambda: DecisionTreeRegressor(random_state=0),
"daraxt (chuqurlik 3)": lambda: DecisionTreeRegressor(max_depth=3, random_state=0),
"o'rmon (100 daraxt)": lambda: RandomForestRegressor(n_estimators=100, random_state=0),
}
print(f" {'model':<22} {'bias^2':>9} {'variance':>10} {'jami':>9}")
for nom, yasa in modellar.items():
bashoratlar = np.empty((B, len(X_test)))
for b in range(B):
Xb = rng.normal(size=(n, 2))
yb = haqiqiy(Xb) + rng.normal(0, 1.0, n)
bashoratlar[b] = yasa().fit(Xb, yb).predict(X_test)
bias2 = ((bashoratlar.mean(axis=0) - f_test) ** 2).mean()
var = bashoratlar.var(axis=0).mean()
print(f" {nom:<22} {bias2:>9.3f} {var:>10.3f} {bias2 + var:>9.3f}")
print("\n chiziqli: bias katta (nochiziqlilikni ushlay olmaydi), variance kichik")
print(" cheksiz daraxt: bias kichik, variance katta")
print(" o'rmon: bias kichik, variance ancha kichik (o'rtachalash)")
print(" ⭐ Ansambl — dispersiyani kamaytirish vositasi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
model bias^2 variance jami
chiziqli 5.609 0.210 5.819
daraxt (cheksiz) 0.960 1.770 2.730
daraxt (chuqurlik 3) 1.933 1.895 3.828
o'rmon (100 daraxt) 1.495 0.494 1.989
chiziqli: bias katta (nochiziqlilikni ushlay olmaydi), variance kichik
cheksiz daraxt: bias kichik, variance katta
o'rmon: bias kichik, variance ancha kichik (o'rtachalash)
⭐ Ansambl — dispersiyani kamaytirish vositasiNima ko'rsatdi: 2.2, 2.5-bo'limlar.
Misol 3 — Ma'lumot hajmi ta'siri
"""Ma'lumot hajmi dispersiyani kamaytiradi, siljishni emas (real numpy/sklearn)."""
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures
def haqiqiy(x: np.ndarray) -> np.ndarray:
return np.sin(1.5 * x) + 0.3 * x
def yoyilma(daraja: int, n: int, B: int, rng) -> tuple[float, float]:
x_test = np.linspace(-3, 3, 60)
f_test = haqiqiy(x_test)
bashoratlar = np.empty((B, len(x_test)))
for b in range(B):
xb = rng.uniform(-3, 3, n)
yb = haqiqiy(xb) + rng.normal(0, 0.4, n)
m = make_pipeline(PolynomialFeatures(daraja), LinearRegression())
m.fit(xb.reshape(-1, 1), yb)
bashoratlar[b] = m.predict(x_test.reshape(-1, 1))
bias2 = ((bashoratlar.mean(axis=0) - f_test) ** 2).mean()
return float(bias2), float(bashoratlar.var(axis=0).mean())
def main() -> None:
rng = np.random.default_rng(2)
print("=== 1. Sodda model (daraja 2) — bias hukmron ===")
for n in [30, 100, 400, 1600]:
b2, v = yoyilma(2, n, 150, rng)
print(f" n={n:>5}: bias^2 {b2:.4f}, variance {v:.4f}")
print("\n=== 2. Murakkab model (daraja 9) — variance hukmron ===")
for n in [30, 100, 400, 1600]:
b2, v = yoyilma(9, n, 150, rng)
print(f" n={n:>5}: bias^2 {b2:.4f}, variance {v:.4f}")
print("\n=== 3. Xulosa ===")
print(" ma'lumot oshsa: variance kamayadi, bias deyarli o'zgarmaydi")
print(" ⭐ Yuqori siljishda ko'proq ma'lumot yordam bermaydi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Sodda model (daraja 2) — bias hukmron ===
n= 30: bias^2 0.4896, variance 0.1148
n= 100: bias^2 0.4858, variance 0.0223
n= 400: bias^2 0.4855, variance 0.0044
n= 1600: bias^2 0.4852, variance 0.0012
=== 2. Murakkab model (daraja 9) — variance hukmron ===
n= 30: bias^2 0.5388, variance 57.7904
n= 100: bias^2 0.0004, variance 0.0340
n= 400: bias^2 0.0000, variance 0.0052
n= 1600: bias^2 0.0000, variance 0.0011
=== 3. Xulosa ===
ma'lumot oshsa: variance kamayadi, bias deyarli o'zgarmaydi
⭐ Yuqori siljishda ko'proq ma'lumot yordam bermaydiNima ko'rsatdi: 2.3, 2.6-bo'limlar.
Misol 4 — Real ma'lumotda tashxis
"""Haqiqiy funksiya noma'lum: CV bilan siljish/dispersiya belgilarini o'qish (real numpy/sklearn)."""
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import Ridge
from sklearn.model_selection import cross_validate
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures, StandardScaler
from sklearn.tree import DecisionTreeRegressor
def main() -> None:
rng = np.random.default_rng(3)
n = 600
X = rng.normal(size=(n, 3))
y = (2 * X[:, 0] + X[:, 1] ** 2 - 1.5 * X[:, 0] * X[:, 2] + rng.normal(0, 1.0, n))
modellar = {
"chiziqli": make_pipeline(StandardScaler(), Ridge(alpha=1.0)),
"polinom-2": make_pipeline(PolynomialFeatures(2), StandardScaler(), Ridge(alpha=1.0)),
"daraxt (cheksiz)": DecisionTreeRegressor(random_state=0),
"o'rmon": RandomForestRegressor(n_estimators=150, random_state=0),
}
print(f" {'model':<18} {"o'quv MSE":>11} {'CV MSE':>9} {'CV SD':>8} tashxis")
for nom, m in modellar.items():
r = cross_validate(m, X, y, cv=5, scoring="neg_mean_squared_error",
return_train_score=True)
tr = -r["train_score"].mean()
cv = -r["test_score"].mean()
sd = r["test_score"].std()
if tr > 2.0:
tashxis = "yuqori siljish"
elif cv > 1.8 * tr:
tashxis = "yuqori dispersiya"
else:
tashxis = "muvozanat"
print(f" {nom:<18} {tr:>11.3f} {cv:>9.3f} {sd:>8.3f} {tashxis}")
print("\n shovqin dispersiyasi = 1.0 — MSE uchun pastki chegara")
print(" ⭐ Tashxis: o'quv xatosi (siljish) va tafovut (dispersiya)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
model o'quv MSE CV MSE CV SD tashxis
chiziqli 4.853 5.004 0.983 yuqori siljish
polinom-2 1.023 1.060 0.056 muvozanat
daraxt (cheksiz) -0.000 2.924 0.515 yuqori dispersiya
o'rmon 0.224 1.608 0.415 yuqori dispersiya
shovqin dispersiyasi = 1.0 — MSE uchun pastki chegara
⭐ Tashxis: o'quv xatosi (siljish) va tafovut (dispersiya)Nima ko'rsatdi: 2.4, 2.7-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Xatoni nolga tushirish mumkin" | Shovqin — qaytarilmas |
| "Ko'proq ma'lumot — har doim yordam" | Faqat dispersiyaga |
| "Ansambl — universal yechim" | Siljishda yordam bermaydi |
| "Bias va variance — bir xil narsa" | Tizimli va tasodifiy xato |
| "Dispersiyani bitta modeldan ko'rish mumkin" | Bir necha namuna kerak |
| "Murakkab model — kam xato" | Dispersiya o'sadi |
| "CV SD muhim emas" | Dispersiya belgisi |
| "Yoyilma — faqat nazariya" | Tashxis va davolash yo'nalishi |
6. Keng tarqalgan xatolar va yechimlari
1. Tashxissiz davolash
model = RandomForestRegressor(n_estimators=500) # "yaxshiroq bo'lsin" # ⚠️
# avval o'quv/CV xatosini ko'ring, keyin qaror qiling # ✅2. Yuqori siljishda ma'lumot yig'ish
# o'quv MSE katta → "ko'proq ma'lumot kerak" # ⚠️
# murakkabroq model yoki boyroq belgilar # ✅3. CV SD ni e'tiborsiz qoldirish
print(-scores.mean()) # ⚠️
print(f"{-scores.mean():.3f} ± {scores.std():.3f}") # ✅4. Ansamblni hamma joyda
RandomForest(...) # chiziqli bog'lanish, kam ma'lumot # ⚠️
Ridge(...) # sodda va barqaror # ✅5. Shovqinni unutish
# "MSE 1.05 — model yomon" (shovqin dispersiyasi 1.0) # ⚠️
# nazariy chegara bilan solishtiring # ✅6. Bitta namunada dispersiya
# bitta o'qitishdan "model beqaror" xulosasi # ⚠️
# CV bo'laklari yoki bootstrap bilan 11.8-bob # ✅7. Klassifikatsiyada aniq yoyilma
# 0-1 xato uchun bias^2 + variance formulasini aniq deb # ⚠️
# taxminiy talqin; log-loss yoki Brier bilan ishlash 9.9-bob # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 12.4-dars (o'tilgan): Overfitting/underfitting tashxisi
- 9.6-dars (o'tilgan): Dispersiya va o'rtachalash
- 13-qism (keyingi): Ridge regularizatsiyasi
- Ansambllar qismi: Bagging va boosting
- Model baholash qismi: Giperparametr sozlash
8. Eng yaxshi amaliyotlar
Avval tashxis (o'quv xatosi va tafovut).
Shovqin chegarasini baholang.
CV SD ni ko'ring.
Yuqori dispersiyada — ansambl/regularizatsiya.
Yuqori siljishda — model va belgilar.
Ma'lumot yig'ishdan oldin learning curve.
Oddiy modeldan boshlang.
Har o'zgarishni validatsiyada tekshiring.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # xatoning uch qismi?
2. # bias nima?
3. # variance nima?
4. # shovqin nima?
5. # murakkablik oshsa bias?
6. # murakkablik oshsa variance?
7. # ma'lumot oshsa variance?
8. # ma'lumot oshsa bias?
9. # ansambl nimani kamaytiradi?
10. # boosting nimani kamaytiradi?
11. # o'quv xatosi katta — tashxis?
12. # CV >> o'quv — tashxis?Javoblar
- bias^2, variance, shovqin
- Tizimli xato (model yetarli emas)
- Namunaga sezgirlik
- Qaytarilmas tasodifiylik
- Kamayadi
- Oshadi
- Kamayadi
- O'zgarmaydi
- Dispersiyani
- Siljishni
- Yuqori siljish
- Yuqori dispersiya
Vazifa 2: Xatolarni tuzating
1. # o'quv MSE katta → ko'proq ma'lumot yig'amiz
2. print("CV MSE:", -scores.mean())
3. RandomForestRegressor(n_estimators=1000) # chiziqli bog'lanish, n=80
4. # "MSE 1.02 — model yomon" (shovqin SD = 1.0)
5. # bitta o'qitish natijasidan "beqaror model" xulosasiJavoblar
1. # murakkabroq model yoki boyroq belgilar
2. print(f"{-scores.mean():.3f} ± {scores.std():.3f}")
3. Ridge(alpha=1.0) # sodda va barqaror
4. # shovqin chegarasi bilan solishtiring
5. # CV bo'laklari yoki bootstrap bilan baholangVazifa 3: Yoyilma simulyatsiyasi
Modellang:
- Haqiqiy funksiya (nochiziqli)
- Turli murakkablik
- bias^2 va variance
- Optimal murakkablik
Vazifa 4: Modellarni solishtirish
Modellang:
- Chiziqli, daraxt, o'rmon
- Bias/variance
- CV natijalari
- Tavsiya
Vazifa 5: Ma'lumot hajmi
Modellang:
- n = 50..5000
- Sodda va murakkab model
- bias va variance dinamikasi
- "Ma'lumot kerakmi?" xulosasi
Vazifa 6: Integratsiya
Modellang:
- CV (12.3)
- Overfitting tashxisi (12.4)
- Ridge (13-qism)
- Ansambl g'oyasi
Vazifa 7: O'ylash
Bias-variance yoyilmasi 1990-yillardan beri ML darsliklarining markazida turadi, lekin zamonaviy chuqur o'rganish modellari unga "bo'ysunmaydi" (12.4 dagi double descent). Yoyilma bugun ham foydalimi? U qanday hollarda yo'l ko'rsatadi va qachon chalg'itadi?
Javob
Qisqa javob: yoyilma tushuntirish ramkasi sifatida foydali bo'lib qolmoqda — ayniqsa jadval ma'lumoti va klassik modellarda. U "muammo qayerda?" degan savolga yo'nalish beradi. Lekin uni qat'iy qonun deb olish xato: zamonaviy katta modellarda murakkablik va dispersiya munosabati boshqacha.
1. Qayerda foydali
| Holat | Yordam |
|---|---|
| Jadval ma'lumoti, klassik modellar | To'g'ri tashxis va davolash |
| Kichik/o'rta n | Muvozanat aniq ko'rinadi |
| Ansambl tanlash | Dispersiya kamayishi tushunarli |
| Belgi muhandisligi | Siljishni kamaytirish yo'li |
2. Qayerda chalg'itadi
- Parametrlar soni murakkablik o'lchovi deb olinsa
- Juda katta modellarda (double descent)
- Regularizatsiya turlari aralash bo'lganda
- Klassifikatsiyada (0-1 xato uchun yoyilma aniq emas)
3. Amaliy yondashuv
- Tashxisni kuzatuvdan boshlang (o'quv/CV ballari, SD)
- Yoyilmani yo'nalish sifatida ishlating, qonun sifatida emas
- Har gipotezani validatsiyada sinab ko'ring
- Model turiga mos vositalarni tanlang
4. Data Scientist qanday
- "Siljishmi yoki dispersiyami?" savolini beradi
- Davolashni shu javobga qarab tanlaydi
- Natijani o'lchaydi (taxmin bilan cheklanmaydi)
5. Xulosa
- Yoyilma — kuchli tushuntirish ramkasi
- U tashxis va davolash yo'nalishini beradi
- Zamonaviy katta modellarda to'liq emas
- Yakuniy hakam — validatsiya natijasi
Nimani mustahkamlaydi: 2.3, 2.7-bo'limlar.
Xulosa
Bu darsda bias-variance yoyilmasini o'rgandik.
Eng muhim uch fikr:
Xato = bias^2 + variance + shovqin. Siljish — tizimli xato (model sinfi yetarli emas); dispersiya — o'quv namunasiga sezgirlik; shovqin — qaytarilmas chegara (hech qanday model undan pastga tusha olmaydi).
Murakkablik va ma'lumot. Murakkablik oshgani sari siljish kamayadi, dispersiya o'sadi — optimal nuqta yig'indi minimalida. Ma'lumot hajmi faqat dispersiyani kamaytiradi: yuqori siljishda ko'proq ma'lumot yig'ish foyda bermaydi (12.4, learning curve).
Tashxis va davolash. Real ma'lumotda belgilarni o'qiymiz: o'quv xatosining o'zi katta — siljish; CV xatosi o'quvdan ancha katta yoki CV SD katta — dispersiya. Yuqori dispersiyada: ansambl (o'rtachalash), regularizatsiya, ko'proq ma'lumot; yuqori siljishda: murakkabroq model, boyroq belgilar, boosting.
Keyingi darsda birinchi to'liq modelni quramiz: sklearn bilan uchdan-oxirigacha ish oqimi — ajratish, pipeline, o'qitish, baholash va natijani talqin qilish.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!