IlmHamroh
Data Science va sun'iy intellekt/ML asoslari1/10-dars17 daqiqa
Mundarija (22)

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

text
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 xatlar

Machine 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

text
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

text
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

text
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

text
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'qitish

Bu — 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

text
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

python
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 marta

ML 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 emas

4. Batafsil misollar

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

Misol 1 — Qoidalar va o'rganish

python
"""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:

text
=== 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'rganadi

Nima ko'rsatdi: 2.1, 2.3-bo'limlar.

Misol 2 — Uch tur vazifa

python
"""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:

text
=== 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 belgilaydi

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

Misol 3 — Yodlash va umumlashtirish

python
"""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:

text
=== 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

python
"""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:

text
=== 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

python
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

python
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

python
model = RandomForestClassifier().fit(X, y)   # "vaqt > 35 min"    # ⚠️
kechikdi = vaqt > 35                                              # ✅

4. Sababiy savolga model

python
# "chegirma bersak ketmaydimi?" — churn modelidan                 # ⚠️
# A/B test 11.10-bob                                                # ✅

5. Nishonni belgilar ichida qoldirish

python
X = df.drop(columns=["narx"]).assign(narx_log=np.log(df["narx"]))  # ⚠️
X = df.drop(columns=["narx", "narx_log"])                          # ✅

6. Giperparametrni test bilan tanlash

python
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

python
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

  1. Avval savolni aniqlang (nishon nima?).

  2. ML kerakmi — tekshiring.

  3. Baza modeldan boshlang.

  4. Test to'plamini oxirigacha saqlang.

  5. random_state bilan takrorlanuvchan.

  6. Umumlashtirishga qarab baholang.

  7. Sababiy savollarga eksperiment.

  8. Modelning ijtimoiy ta'sirini o'ylang.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
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
  1. Ma'lumotdan bashorat qoidalarini o'rganish
  2. Qoidalar yoziladi / o'rganiladi
  3. Regressiya va klassifikatsiya
  4. Son
  5. Sinf
  6. Nazoratsiz
  7. O'rganiladi / biz tanlaymiz
  8. Umumlashtirish
  9. Natijani solishtirish uchun
  10. Oxirida, bir marta
  11. Yo'q
  12. Baza bilan solishtirish kerak

Vazifa 2: Xatolarni tuzating

python
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 bor
Javoblar
python
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:

  1. Beshta biznes savoli
  2. Har biri uchun: ML kerakmi?
  3. Kerak bo'lsa — qaysi tur (regressiya/klassifikatsiya/nazoratsiz)
  4. Nishon va belgilar

Vazifa 4: Birinchi model

Modellang:

  1. Uy ma'lumoti
  2. Train/test ajratish
  3. Baza va chiziqli regressiya
  4. Natijalarni solishtirish

Vazifa 5: Yodlash

Modellang:

  1. Kichik ma'lumot (n = 100)
  2. 1-qo'shni va 20-qo'shni
  3. O'quv va test natijalari
  4. Xulosa

Vazifa 6: Integratsiya

Modellang:

  1. EDA (8-qism)
  2. Train/test (8.8 g'oyasi)
  3. Regressiya (10.6)
  4. 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

  1. Qanday qaror qabul qilinadi va u bashoratdan qanday foydalanadi?
  2. Oddiy qoida yoki statistik hisob yetarli emasmi?
  3. Ma'lumot bormi, sifatlimi, kelajakda ham bo'ladimi?
  4. Xato narxi qancha? Kim javobgar?
  5. Model qaroriga ta'sir qiladigan odamlarga tushuntirish kerakmi?
  6. 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

  1. ML — vosita, maqsad emas
  2. Oddiy yechim — ko'pincha to'g'ri yechim
  3. Yashirin narx: monitoring, drift, tushuntirish
  4. 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:

  1. 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.

  2. 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.

  3. 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.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
12.1-dars: Machine Learning nima — IlmHamroh