Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. ML ta'rifi
- 2.2. ML turlari
- 2.3. Asosiy tushunchalar
- 2.4. Qachon ML kerak, qachon kerak emas
- 2.5. ML ish oqimi
- 2.6. Statistika va ML farqi
- 2.7. ML haqidagi noto'g'ri tasavvurlar
- 2.8. ML — ma'lumotdan qoidalar
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Qoidalar va o'rganish
- Misol 2 — Uch tur vazifa
- Misol 3 — Yodlash va umumlashtirish
- Misol 4 — Baza model bilan solishtirish
- 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.1-dars: Machine Learning nima
12-QISM — MACHINE LEARNING ASOSLARI · 1-dars
1. Kirish va motivatsiya
Shu paytgacha ma'lumotni tushunish bilan shug'ullandik: tozalash, EDA, statistika, gipoteza testlari. Endi yangi savolga o'tamiz: "Yangi kuzatuv uchun natijani bashorat qila olamizmi?". Yangi uy narxi qancha bo'ladi? Bu mijoz keyingi oy ketadimi? Bu tranzaksiya firibgarlikmi? Bu rasmda nima bor?
Machine Learning — qoidalarni qo'lda yozish o'rniga, ularni ma'lumotdan o'rganish. Klassik dasturlashda: kirish + qoidalar → natija. ML da: kirish + natija (misollar) → qoidalar (model). Bu farq katta: spam filtri uchun 10 000 ta "agar" yozish o'rniga, 100 000 ta belgilangan xat berasiz va model o'zi naqshlarni topadi.
Real vaziyat. Bank qarz berish qarorini avtomatlashtirmoqchi. Birinchi yondashuv — ekspert qoidalari: "daromad > 5 mln VA yosh > 25 VA ish staji > 1 yil". Qoidalar soni o'sib ketdi (200 dan ortiq), ular bir-biriga zid bo'la boshladi, yangi mahsulotlar uchun qayta yozish kerak edi. ML yondashuvi: oxirgi 3 yildagi 80 000 kredit tarixini olish (kim qaytardi, kim yo'q) va model o'qitish. Natija: aniqroq bashorat, yangi ma'lumot kelganda qayta o'qitish oson. Lekin yangi savollar paydo bo'ldi: model qaror sababini tushuntira oladimi? U adolatlimi? Ma'lumot eskirsa nima bo'ladi?
Bu darsda Machine Learning nima ekanini o'rganamiz.
Bu darsda:
- ML ta'rifi: qoidalarni o'rganish
- ML turlari: nazoratli, nazoratsiz, mustahkamlovchi
- Asosiy tushunchalar: belgi, nishon, model, o'qitish
- Qachon ML kerak, qachon kerak emas
- ML ish oqimi (CRISP-DM bilan bog'liqlik)
- Statistika va ML farqi
- ML haqidagi noto'g'ri tasavvurlar
- Amaliy: birinchi model (uch qatorda)
ℹ Misollar real numpy/pandas/sklearn bilan (Python 3.14, scikit-learn 1.9).
2. Nazariya — chuqur tushuntirish
2.1. ML ta'rifi
KLASSIK DASTURLASH: ML:
kirish ─┐ kirish ─┐
├→ natija ├→ QOIDALAR (model)
qoidalar ┘ natija ─┘
Keyin: yangi kirish + model → bashorat
Tom Mitchell ta'rifi (1997):
Dastur T vazifasini bajarishda, P o'lchovi bo'yicha, E tajribasidan
o'rganadi — agar E ortgani sari P yaxshilansa.
T — spam aniqlash, P — to'g'ri tasniflangan xatlar ulushi, E — belgilangan xatlarMachine Learning — ma'lumotdagi naqshlardan foydalanib, yangi kuzatuvlar uchun bashorat qiladigan model qurish. Kalit so'z — yangi: modelning maqsadi o'quv ma'lumotini yodlash emas, umumlashtirish (generalization). Shuning uchun uni har doim ko'rmagan ma'lumotda baholaymiz (12.3 — train/test, 8.8 dagi mustaqil tekshiruv g'oyasining davomi).
2.2. ML turlari
NAZORATLI (supervised) — javob (nishon) ma'lum
REGRESSIYA: nishon — son (uy narxi, talab, vaqt)
KLASSIFIKATSIYA: nishon — sinf (spam/spam emas, churn, kasallik)
NAZORATSIZ (unsupervised) — javob yo'q, tuzilma qidiriladi
klasterlash (segmentlar), o'lchamni kamaytirish (PCA — 10.9), anomaliya
MUSTAHKAMLOVCHI (reinforcement) — muhit bilan o'zaro ta'sir, mukofot
o'yinlar, robototexnika, tavsiya siyosati
YARIM NAZORATLI / O'ZI NAZORAT QILUVCHI — kam belgilangan yoki belgisiz ma'lumot
(zamonaviy til modellari — o'zi nazorat qiluvchi o'qitish)Amaliyotda nazoratli o'qitish ustunlik qiladi — chunki biznes savollari odatda "bashorat qil" shaklida bo'ladi va tarixiy natijalar mavjud. Nazoratsiz usullar — kashfiyot va tayyorgarlik uchun (segmentlar, anomaliya, belgilarni siqish). Bu qismda asosan nazoratli o'qitishga e'tibor qaratamiz.
2.3. Asosiy tushunchalar
X — belgilar matritsasi (n × p): qatorlar — kuzatuvlar, ustunlar — belgilar 10.3-bob
y — nishon vektori (n): bashorat qilinadigan qiymat
model.fit(X, y) — o'qitish (parametrlarni ma'lumotga moslash)
model.predict(X_yangi) — bashorat
model.score(X, y) — baholash (standart metrika)
Atamalar: belgi (feature, prediktor), nishon (target, label), namuna (sample),
parametr (model ichidagi og'irliklar), giperparametr (biz tanlaymiz)Parametr va giperparametr farqi muhim: parametrlar o'qitishda ma'lumotdan o'rganiladi (regressiya koeffitsiyentlari — 10.6); giperparametrlar oldindan beriladi va o'qitishni boshqaradi (Ridge alpha, daraxt chuqurligi, qo'shnilar soni). Giperparametrlar validatsiya bilan tanlanadi 12.3-bob, test to'plamida emas.
2.4. Qachon ML kerak, qachon kerak emas
ML MOS KELADI:
naqsh bor, lekin uni qo'lda yozish qiyin (rasm, matn, murakkab o'zaro ta'sir)
yetarli va sifatli ma'lumot bor
xato narxi ma'lum va chidasa bo'ladi
vazifa takrorlanadigan (kuniga minglab qaror)
ML KERAK EMAS:
oddiy qoida yetarli ("35 daqiqadan oshsa — ogohlantirish")
ma'lumot kam yoki sifatsiz
har qaror uchun to'liq tushuntirish shart (ba'zi huquqiy holatlar)
jarayon tez-tez butunlay o'zgaradi (model eskiradi)
sababiy savol ("narxni oshirsak nima bo'ladi?" — eksperiment kerak, 4.10)Eng ko'p uchraydigan xato — ML ni keraksiz joyda ishlatish: oddiy qoida yoki SQL so'rovi yetarli bo'lgan joyda model qurish. Ikkinchi xato — sababiy savolga bashorat modeli bilan javob berish: model "kim ketadi" ni bashorat qiladi, lekin "chegirma bersak ketmaydimi" degan savolga javob bermaydi (buning uchun eksperiment kerak, 11.10).
2.5. ML ish oqimi
1. SAVOL → bashorat vazifasi (nishon nima? qanday qaror qabul qilinadi?)
2. MA'LUMOT → yig'ish, tozalash (6-7-qismlar), EDA (8-qism)
3. AJRATISH → train / validation / test 12.3-bob
4. BELGILAR → tayyorlash, kodlash, masshtablash 12.9-bob
5. MODEL → baza modeldan boshlash, keyin murakkabroq
6. BAHOLASH → metrika tanlash (12.7-12.8), validatsiya
7. SOZLASH → giperparametrlar (validatsiyada)
8. YAKUNIY BAHO → test to'plamida BIR MARTA
9. ISHGA TUSHIRISH → monitoring, qayta o'qitishBu — 1.4-darsdagi CRISP-DM ning ML qismidagi konkretlashuvi. Muhim tartib: test to'plami oxirgi qadamgacha tegilmaydi (8.8 — mustaqil tekshiruv); giperparametr tanlash faqat validatsiya ma'lumotida. Va har doim baza model (oddiy qoida yoki o'rtacha) bilan solishtiriladi — murakkab model undan yaxshi bo'lishi shart.
2.6. Statistika va ML farqi
STATISTIKA (11-qism) ML (12+ qismlar)
maqsad: tushunish, xulosa maqsad: bashorat aniqligi
"koeffitsiyent nolga tengmi?" "yangi ma'lumotda xato qancha?"
model farazlari muhim empirik baholash muhim
kam belgi, talqin qilinadi ko'p belgi, murakkab modellar
p-qiymat, ishonch oralig'i test xatosi, cross-validation
Amalda chegara xira: ikkalasi ham kerak (regressiya — ikkalasida ham)Farq — maqsadda: statistika "nima rost?" (xulosa), ML "qanchalik aniq bashorat qilamiz?". Shuning uchun ML da model tanlash mezonining o'zi boshqacha: farazlar emas, ko'rmagan ma'lumotdagi xato. Data Scientist ikkalasini ham biladi: A/B test — statistika 11.10-bob, churn bashorati — ML.
2.7. ML haqidagi noto'g'ri tasavvurlar
Keng tarqalgan noto'g'ri tasavvurlar: "ko'p ma'lumot — yaxshi model" (sifatsiz yoki nomuvofiq ma'lumot foyda bermaydi); "murakkab model — aniqroq" (ko'pincha oddiy model yetarli va barqarorroq); "model sababni tushuntiradi" (bashorat ≠ sabab, 4.10); "aniqlik 95% — ajoyib" (imbalanced ma'lumotda ma'nosiz — 12.7); "model bir marta quriladi" (ma'lumot va dunyo o'zgaradi — monitoring, qayta o'qitish); "ML sehr" (kirish sifatiga bog'liq); "model obyektiv" (ma'lumotdagi tarafkashlikni o'rganadi va kuchaytiradi).
2.8. ML — ma'lumotdan qoidalar
Machine Learning — misollardan umumlashtiriladigan qoidalar (model) qurish: X (belgilar) va y (nishon) dan fit, keyin yangi ma'lumotda predict. Turlari: nazoratli (regressiya, klassifikatsiya), nazoratsiz (klasterlash, o'lcham kamaytirish, anomaliya), mustahkamlovchi. Asosiy tushunchalar: belgi, nishon, parametr va giperparametr. ML kerak bo'lgan va kerak bo'lmagan holatlar; ish oqimi (ajratish → belgilar → baza model → baholash → sozlash → yakuniy test). Statistikadan farqi — maqsad: bashorat aniqligi. Keyingi dars — nazoratli o'qitish turlari va vazifani to'g'ri qo'yish.
3. Tez ma'lumotnoma
import numpy as np
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.dummy import DummyClassifier, DummyRegressor
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=0)
model = LinearRegression().fit(X_tr, y_tr) # o'qitish
y_hat = model.predict(X_te) # bashorat
model.score(X_te, y_te) # R^2 (regressiya)
clf = LogisticRegression(max_iter=1000).fit(X_tr, y_tr)
clf.predict_proba(X_te)[:, 1] # ehtimol (9.9)
# BAZA MODEL — har doim solishtiring
DummyRegressor(strategy="mean").fit(X_tr, y_tr).score(X_te, y_te)
DummyClassifier(strategy="most_frequent").fit(X_tr, y_tr).score(X_te, y_te)
QOIDA: fit faqat o'quvda · baza model bilan solishtir · test — oxirida bir martaML asoslari xulosasi
ML — ma'lumotdan qoidalar (model); maqsad — umumlashtirish
Nazoratli: regressiya (son), klassifikatsiya (sinf)
Nazoratsiz: klaster, o'lcham kamaytirish, anomaliya
Parametr — o'rganiladi; giperparametr — biz tanlaymiz (validatsiyada)
Ish oqimi: ajratish → belgilar → baza → baholash → sozlash → test
ML ≠ sabab; ML ≠ sehr; oddiy qoida yetarli bo'lsa — ML kerak emas4. Batafsil misollar
Misollar real numpy/pandas/sklearn bilan (Python 3.14).
Misol 1 — Qoidalar va o'rganish
"""Qo'lda qoida va o'rganilgan model: bir xil vazifa, ikki yondashuv (real numpy/sklearn)."""
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
def qoida(X: np.ndarray) -> np.ndarray:
"""Ekspert qoidasi: daromad > 5 mln va staj > 12 oy."""
return ((X[:, 0] > 5.0) & (X[:, 1] > 12)).astype(int)
def main() -> None:
rng = np.random.default_rng(0)
n = 4000
daromad = rng.lognormal(np.log(5), 0.5, n) # mln so'm
staj = rng.integers(0, 120, n).astype(float) # oy
qarz_yuki = rng.uniform(0, 0.6, n) # daromadga nisbatan
# haqiqiy qoida: murakkab o'zaro ta'sir
ball = 1.2 * np.log(daromad) + 0.012 * staj - 4.0 * qarz_yuki - 1.0
qaytardi = (rng.random(n) < 1 / (1 + np.exp(-ball))).astype(int)
X = np.column_stack([daromad, staj, qarz_yuki])
X_tr, X_te, y_tr, y_te = train_test_split(X, qaytardi, test_size=0.3, random_state=0)
print("=== 1. Ekspert qoidasi (o'rganmaydi) ===")
print(f" aniqlik: {accuracy_score(y_te, qoida(X_te)):.3f}")
print("\n=== 2. O'rganilgan model ===")
model = LogisticRegression(max_iter=1000).fit(X_tr, y_tr)
print(f" aniqlik: {accuracy_score(y_te, model.predict(X_te)):.3f}")
print(f" koeffitsiyentlar: {np.round(model.coef_[0], 3)}")
print("\n=== 3. Model nimani o'rgandi ===")
print(" daromad musbat, staj musbat, qarz yuki manfiy — kutilganday")
print("\n=== 4. Baza: 'hamma qaytaradi' ===")
print(f" aniqlik: {accuracy_score(y_te, np.ones_like(y_te)):.3f}")
print(" ⭐ ML — qoidani ma'lumotdan o'rganadi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Ekspert qoidasi (o'rganmaydi) ===
aniqlik: 0.599
=== 2. O'rganilgan model ===
aniqlik: 0.688
koeffitsiyentlar: [ 0.207 0.012 -3.882]
=== 3. Model nimani o'rgandi ===
daromad musbat, staj musbat, qarz yuki manfiy — kutilganday
=== 4. Baza: 'hamma qaytaradi' ===
aniqlik: 0.590
⭐ ML — qoidani ma'lumotdan o'rganadiNima ko'rsatdi: 2.1, 2.3-bo'limlar.
Misol 2 — Uch tur vazifa
"""Regressiya, klassifikatsiya va klasterlash — uch xil savol (real numpy/sklearn)."""
import numpy as np
from sklearn.cluster import KMeans
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.model_selection import train_test_split
def main() -> None:
rng = np.random.default_rng(1)
n = 1500
maydon = rng.normal(70, 20, n).clip(25, 200)
xona = np.clip((maydon / 25).round(), 1, 6)
narx = 20 + 1.6 * maydon + 6 * xona + rng.normal(0, 12, n)
qimmat = (narx > np.median(narx)).astype(int)
X = np.column_stack([maydon, xona])
print("=== 1. REGRESSIYA: narx qancha? ===")
X_tr, X_te, y_tr, y_te = train_test_split(X, narx, test_size=0.3, random_state=0)
reg = LinearRegression().fit(X_tr, y_tr)
print(f" test R^2 = {reg.score(X_te, y_te):.3f}")
print(f" bashorat (70 m2, 3 xona): {reg.predict([[70, 3]])[0]:.1f} ming $")
print("\n=== 2. KLASSIFIKATSIYA: qimmat uymi? ===")
X_tr, X_te, y_tr, y_te = train_test_split(X, qimmat, test_size=0.3, random_state=0)
clf = LogisticRegression(max_iter=1000).fit(X_tr, y_tr)
print(f" test aniqlik = {clf.score(X_te, y_te):.3f}")
print(f" P(qimmat | 70 m2, 3 xona) = {clf.predict_proba([[70, 3]])[0, 1]:.3f}")
print("\n=== 3. NAZORATSIZ: qanday segmentlar bor? ===")
km = KMeans(n_clusters=3, n_init=10, random_state=0).fit(X)
for k in range(3):
m = km.labels_ == k
print(f" klaster {k}: {m.sum():>4} uy, o'rtacha maydon {maydon[m].mean():.0f} m2, "
f"narx {narx[m].mean():.0f}")
print("\n=== 4. Farqi ===")
print(" regressiya — son; klassifikatsiya — sinf; klasterlash — nishonsiz tuzilma")
print(" ⭐ Savol turi model turini belgilaydi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. REGRESSIYA: narx qancha? ===
test R^2 = 0.904
bashorat (70 m2, 3 xona): 150.3 ming $
=== 2. KLASSIFIKATSIYA: qimmat uymi? ===
test aniqlik = 0.907
P(qimmat | 70 m2, 3 xona) = 0.530
=== 3. NAZORATSIZ: qanday segmentlar bor? ===
klaster 0: 407 uy, o'rtacha maydon 45 m2, narx 104
klaster 1: 656 uy, o'rtacha maydon 69 m2, narx 147
klaster 2: 437 uy, o'rtacha maydon 93 m2, narx 190
=== 4. Farqi ===
regressiya — son; klassifikatsiya — sinf; klasterlash — nishonsiz tuzilma
⭐ Savol turi model turini belgilaydiNima ko'rsatdi: 2.2, 2.3-bo'limlar.
Misol 3 — Yodlash va umumlashtirish
"""Model o'quv ma'lumotini yodlashi mumkin — bu o'rganish emas (real numpy/sklearn)."""
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor
from sklearn.tree import DecisionTreeRegressor
def main() -> None:
rng = np.random.default_rng(2)
n = 300
x = rng.uniform(0, 10, n)
y = 2 * x + rng.normal(0, 3, n) # shovqinli chiziqli bog'liqlik
X = x.reshape(-1, 1)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.3, random_state=0)
print("=== 1. 1-qo'shni (yodlash mashinasi) ===")
knn1 = KNeighborsRegressor(n_neighbors=1).fit(X_tr, y_tr)
print(f" o'quv R^2 = {knn1.score(X_tr, y_tr):.3f} ← mukammal (yodlab oldi)")
print(f" test R^2 = {knn1.score(X_te, y_te):.3f}")
print("\n=== 2. 15 qo'shni ===")
knn15 = KNeighborsRegressor(n_neighbors=15).fit(X_tr, y_tr)
print(f" o'quv R^2 = {knn15.score(X_tr, y_tr):.3f}, test R^2 = {knn15.score(X_te, y_te):.3f}")
print("\n=== 3. To'liq o'sgan daraxt va cheklangan daraxt ===")
for nom, model in [("cheksiz", DecisionTreeRegressor(random_state=0)),
("chuqurlik 3", DecisionTreeRegressor(max_depth=3, random_state=0))]:
model.fit(X_tr, y_tr)
print(f" {nom:<12}: o'quv {model.score(X_tr, y_tr):.3f}, test {model.score(X_te, y_te):.3f}")
print("\n=== 4. Xulosa ===")
print(" o'quv ma'lumotidagi mukammal natija — yaxshi model belgisi EMAS")
print(" ⭐ Maqsad — umumlashtirish 12.4-bob")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. 1-qo'shni (yodlash mashinasi) ===
o'quv R^2 = 1.000 ← mukammal (yodlab oldi)
test R^2 = 0.677
=== 2. 15 qo'shni ===
o'quv R^2 = 0.807, test R^2 = 0.775
=== 3. To'liq o'sgan daraxt va cheklangan daraxt ===
cheksiz : o'quv 1.000, test 0.677
chuqurlik 3 : o'quv 0.822, test 0.782
=== 4. Xulosa ===
o'quv ma'lumotidagi mukammal natija — yaxshi model belgisi EMAS
⭐ Maqsad — umumlashtirish (12.4)Nima ko'rsatdi: 2.1, 2.5-bo'limlar.
Misol 4 — Baza model bilan solishtirish
"""Har doim baza modeldan boshlang: dummy va oddiy qoida (real numpy/sklearn)."""
import numpy as np
from sklearn.dummy import DummyClassifier, DummyRegressor
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.metrics import accuracy_score, mean_absolute_error
from sklearn.model_selection import train_test_split
def main() -> None:
rng = np.random.default_rng(3)
n = 3000
maydon = rng.normal(70, 20, n).clip(25, 200)
narx = 20 + 1.6 * maydon + rng.normal(0, 15, n)
X = maydon.reshape(-1, 1)
X_tr, X_te, y_tr, y_te = train_test_split(X, narx, test_size=0.3, random_state=0)
print("=== 1. Regressiya: baza va model ===")
baza = DummyRegressor(strategy="mean").fit(X_tr, y_tr)
model = LinearRegression().fit(X_tr, y_tr)
for nom, m in [("o'rtacha (baza)", baza), ("chiziqli regressiya", model)]:
mae = mean_absolute_error(y_te, m.predict(X_te))
print(f" {nom:<22}: MAE = {mae:6.2f}, R^2 = {m.score(X_te, y_te):6.3f}")
print("\n=== 2. Klassifikatsiya: nomutanosib sinflar ===")
firibgar = (rng.random(n) < 0.02).astype(int) # 2%
summa = rng.lognormal(10, 1, n) * (1 + 2 * firibgar)
Xc = summa.reshape(-1, 1)
Xc_tr, Xc_te, yc_tr, yc_te = train_test_split(Xc, firibgar, test_size=0.3, random_state=0)
dummy = DummyClassifier(strategy="most_frequent").fit(Xc_tr, yc_tr)
clf = LogisticRegression(max_iter=1000).fit(Xc_tr, yc_tr)
for nom, m in [("'hech kim firibgar emas'", dummy), ("logistik regressiya", clf)]:
acc = accuracy_score(yc_te, m.predict(Xc_te))
print(f" {nom:<26}: aniqlik = {acc:.3f}")
print(f" test to'plamida firibgarlar: {yc_te.mean():.1%}")
print("\n=== 3. Aniqlik aldashi mumkin ===")
print(" 98% aniqlik — 'hech kim firibgar emas' degan model bilan ham chiqadi")
print(" ⭐ Baza model — har qanday natijaning o'lchovi 12.7-bob")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Regressiya: baza va model ===
o'rtacha (baza) : MAE = 28.20, R^2 = -0.000
chiziqli regressiya : MAE = 12.06, R^2 = 0.819
=== 2. Klassifikatsiya: nomutanosib sinflar ===
'hech kim firibgar emas' : aniqlik = 0.986
logistik regressiya : aniqlik = 0.986
test to'plamida firibgarlar: 1.4%
=== 3. Aniqlik aldashi mumkin ===
98% aniqlik — 'hech kim firibgar emas' degan model bilan ham chiqadi
⭐ Baza model — har qanday natijaning o'lchovi (12.7)Nima ko'rsatdi: 2.5, 2.7-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "ML — har muammoning yechimi" | Oddiy qoida ko'pincha yetarli |
| "Model sababni tushuntiradi" | Bashorat ≠ sabab (4.10) |
| "O'quvda 100% — ajoyib" | Yodlash (12.4) |
| "Ko'p ma'lumot — yaxshi model" | Sifat va mosligi muhim |
| "Murakkab model — aniqroq" | Ko'pincha yo'q |
| "95% aniqlik — yaxshi" | Baza bilan solishtiring |
| "Model obyektiv" | Ma'lumot tarafkashligini o'rganadi |
| "Bir marta o'qitib qo'yamiz" | Monitoring va qayta o'qitish |
6. Keng tarqalgan xatolar va yechimlari
1. Baza modelsiz
print("aniqlik:", model.score(X_te, y_te)) # ⚠️
print("baza:", DummyClassifier().fit(X_tr, y_tr).score(X_te, y_te)) # ✅2. O'quv ma'lumotida baholash
model.fit(X, y); print(model.score(X, y)) # ⚠️
model.fit(X_tr, y_tr); print(model.score(X_te, y_te)) # ✅3. ML kerak bo'lmagan joyda
model = RandomForestClassifier().fit(X, y) # "vaqt > 35 min" # ⚠️
kechikdi = vaqt > 35 # ✅4. Sababiy savolga model
# "chegirma bersak ketmaydimi?" — churn modelidan # ⚠️
# A/B test 11.10-bob # ✅5. Nishonni belgilar ichida qoldirish
X = df.drop(columns=["narx"]).assign(narx_log=np.log(df["narx"])) # ⚠️
X = df.drop(columns=["narx", "narx_log"]) # ✅6. Giperparametrni test bilan tanlash
for k in [1, 5, 10]: print(k, knn(k).fit(X_tr, y_tr).score(X_te, y_te)) # ⚠️
# validatsiya yoki CV bilan 12.3-bob # ✅7. random_state yo'q
train_test_split(X, y, test_size=0.2) # ⚠️
train_test_split(X, y, test_size=0.2, random_state=0) # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 1.4-dars (o'tilgan): CRISP-DM ish oqimi
- 8.8-dars (o'tilgan): Mustaqil tekshiruv g'oyasi
- 10.6-dars (o'tilgan): Chiziqli regressiya matematikasi
- 12.3-12.5-darslar: Train/test, overfitting, bias-variance
- Keyingi qismlar: Regressiya, klassifikatsiya, ansambllar
8. Eng yaxshi amaliyotlar
Avval savolni aniqlang (nishon nima?).
ML kerakmi — tekshiring.
Baza modeldan boshlang.
Test to'plamini oxirigacha saqlang.
random_state bilan takrorlanuvchan.
Umumlashtirishga qarab baholang.
Sababiy savollarga eksperiment.
Modelning ijtimoiy ta'sirini o'ylang.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # ML ta'rifi (bir gapda)?
2. # klassik dasturlash va ML farqi?
3. # nazoratli o'qitish turlari?
4. # regressiya nishon turi?
5. # klassifikatsiya nishon turi?
6. # klasterlash — qaysi tur?
7. # parametr va giperparametr farqi?
8. # model nimani maqsad qiladi?
9. # baza model nima uchun?
10. # test to'plami qachon ishlatiladi?
11. # ML sababni ko'rsatadimi?
12. # 98% aniqlik yaxshimi?Javoblar
- Ma'lumotdan bashorat qoidalarini o'rganish
- Qoidalar yoziladi / o'rganiladi
- Regressiya va klassifikatsiya
- Son
- Sinf
- Nazoratsiz
- O'rganiladi / biz tanlaymiz
- Umumlashtirish
- Natijani solishtirish uchun
- Oxirida, bir marta
- Yo'q
- Baza bilan solishtirish kerak
Vazifa 2: Xatolarni tuzating
1. model.fit(X, y); print(model.score(X, y))
2. # "chegirma ketishni kamaytiradimi?" — churn modeli koeffitsiyenti
3. print("aniqlik 0.97") # 3% sinf
4. for d in [2, 5, 10]: print(d, tree(d).fit(X_tr, y_tr).score(X_te, y_te))
5. X = df.drop(columns=["churn"]) # df da "churn_sabab" ustuni borJavoblar
1. model.fit(X_tr, y_tr); print(model.score(X_te, y_te))
2. # A/B test (11.10)
3. print("baza:", DummyClassifier(strategy="most_frequent")...)
4. # validatsiya to'plami yoki cross-validation (12.3)
5. X = df.drop(columns=["churn", "churn_sabab"])Vazifa 3: Vazifani aniqlash
Modellang:
- Beshta biznes savoli
- Har biri uchun: ML kerakmi?
- Kerak bo'lsa — qaysi tur (regressiya/klassifikatsiya/nazoratsiz)
- Nishon va belgilar
Vazifa 4: Birinchi model
Modellang:
- Uy ma'lumoti
- Train/test ajratish
- Baza va chiziqli regressiya
- Natijalarni solishtirish
Vazifa 5: Yodlash
Modellang:
- Kichik ma'lumot (n = 100)
- 1-qo'shni va 20-qo'shni
- O'quv va test natijalari
- Xulosa
Vazifa 6: Integratsiya
Modellang:
- EDA (8-qism)
- Train/test (8.8 g'oyasi)
- Regressiya (10.6)
- Baza model
Vazifa 7: O'ylash
So'nggi yillarda ML "hamma joyda" ishlatila boshladi — ba'zan oddiy qoida yoki SQL so'rovi yetarli bo'lgan joyda ham. Nima uchun bu "ML bilan hal qilamiz" refleksi xavfli, va loyihani boshlashdan oldin qanday savollar berish kerak?
Javob
Qisqa javob: ML tizimi qimmat: ma'lumot infratuzilmasi, monitoring, qayta o'qitish, tushuntirish, xatolarni boshqarish. Oddiy qoida bir necha soatda yoziladi va tushunarli bo'ladi. ML faqat naqsh murakkab va qo'lda yozib bo'lmaydigan bo'lsa oqlanadi.
1. ML ning yashirin narxi
| Bosqich | Narx |
|---|---|
| Ma'lumot | Yig'ish, tozalash, saqlash |
| O'qitish | Tajribalar, hisoblash |
| Ishga tushirish | Servis, monitoring, versiyalash |
| Qo'llab-quvvatlash | Drift, qayta o'qitish, tushuntirish |
2. Loyihadan oldingi savollar
- Qanday qaror qabul qilinadi va u bashoratdan qanday foydalanadi?
- Oddiy qoida yoki statistik hisob yetarli emasmi?
- Ma'lumot bormi, sifatlimi, kelajakda ham bo'ladimi?
- Xato narxi qancha? Kim javobgar?
- Model qaroriga ta'sir qiladigan odamlarga tushuntirish kerakmi?
- Muvaffaqiyat qanday o'lchanadi (biznes metrikasi)?
3. Bosqichma-bosqich yondashuv
- Bosqich 0: qoida yoki statistik baza (ko'pincha shu yetarli)
- Bosqich 1: oddiy model (chiziqli/logistik) + monitoring
- Bosqich 2: murakkabroq model (agar o'lchanadigan foyda bersa)
4. Data Scientist qanday
- "ML kerakmi?" savolini birinchi beradi
- Baza modelni jiddiy quradi (12.7)
- Foydani biznes metrikasida ko'rsatadi
- Qo'llab-quvvatlash narxini oldindan aytadi
5. Xulosa
- ML — vosita, maqsad emas
- Oddiy yechim — ko'pincha to'g'ri yechim
- Yashirin narx: monitoring, drift, tushuntirish
- Loyiha qaror bilan boshlanadi, model bilan emas
Nimani mustahkamlaydi: 2.4, 2.7-bo'limlar.
Xulosa
Bu darsda Machine Learning nima ekanini o'rgandik.
Eng muhim uch fikr:
Qoidalarni o'rganish. Klassik dasturlashda qoidalar yoziladi; ML da ular ma'lumotdan o'rganiladi (X, y → model). Maqsad — o'quv ma'lumotini yodlash emas, umumlashtirish: yangi kuzatuvda yaxshi ishlash.
Turlari va tushunchalari. Nazoratli (regressiya — son; klassifikatsiya — sinf), nazoratsiz (klasterlash, o'lcham kamaytirish, anomaliya), mustahkamlovchi. Parametr o'rganiladi, giperparametr biz tomonidan tanlanadi (validatsiyada, test emas). sklearn API:
fit/predict/score.Qachon va qanday. ML naqsh murakkab va ma'lumot yetarli bo'lganda oqlanadi; oddiy qoida yoki sababiy savol (eksperiment) bo'lsa — kerak emas. Ish oqimi: savol → ma'lumot → ajratish → belgilar → baza model → baholash → sozlash → test (bir marta) → monitoring.
Keyingi darsda nazoratli o'qitishni chuqurroq ko'ramiz: vazifani to'g'ri qo'yish, nishonni aniqlash, regressiya va klassifikatsiya farqi hamda sklearn API bilan birinchi to'liq model.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!