Matematika asoslari
🎯 Maqsad
Bu bobni o'qib bo'lgach:
- ML kodida uchraydigan vektor, matritsa, gradient kabi tushunchalarni tushunasiz
- Algoritmlar nima uchun shunday ishlashini matematik nuqtai nazardan ko'ra olasiz
- Loss function, gradient descent kabi terminlar sizga "qora quti" bo'lmaydi
**Eslatma:**ML uchun matematika — bu universitet darajasidagi to'liq kurs emas. Sizga
intuition(sezgi) va asosiy operatsiyalarning ma'nosi yetadi. Chuqur teoremalarni o'rganishingiz shart emas.
Nimani o'rganish kerak
1. Linear Algebra (chiziqli algebra)
- Scalar, Vector, Matrix, Tensor — ML'da ma'lumotlar shu shaklda
- Vektor operatsiyalari — qo'shish, ko'paytirish, dot product (skalyar ko'paytma)
- Matritsa operatsiyalari — transpose, ko'paytma, inverse, determinant
- Identity matrix, Diagonal matrix — maxsus matritsalar
- Eigenvalues va Eigenvectors — PCA va SVD uchun
2. Calculus (matematik analiz)
- Function (funksiya) — input → output
- Derivative (hosila) — funksiya qanday tezlikda o'zgaradi
- Partial derivative (qisman hosila) — bir necha o'zgaruvchili funksiyada
- Gradient — barcha qisman hosilalardan iborat vektor
- Chain rule (zanjir qoidasi) — neural network'ning asosi (backpropagation)
- Optimization (optimizatsiya) — minimum/maximum qidirish
3. Statistics va Probability
- Mean, Median, Mode — markaziy tendensiya o'lchovlari
- Variance, Standard Deviation — tarqoqlik
- Normal distribution (Gaussian) — ML'dagi eng muhim taqsimot
- Probability distributions — Bernoulli, Binomial, Poisson, Uniform
- Bayes Theorem — shartli ehtimollik
- Correlationvs Causation — bog'liqlik vs sabab
- Hypothesis testing — A/B testlar uchun
Kutubxonalar
pip install numpy scipy sympy matplotlib
- NumPy — vektor/matritsa hisob-kitoblari
- SciPy — ilg'or matematik funksiyalar, statistika
- SymPy — simvolik matematika (formulalar bilan ishlash)
Muhim mavzular
Vector va Matrix ML'da
Har qanday ma'lumot ML uchun tensorshaklida bo'ladi:
- Skalyar(0-d tensor) — bitta son:
5 - Vektor(1-d tensor) — sonlar ro'yxati:
[1, 2, 3](masalan, bir o'quvchining 3 ta fan bahosi) - Matrix(2-d tensor) — jadval:
[[1,2,3], [4,5,6]](masalan, 2 ta o'quvchi × 3 fan) - Tensor(3+ d) — masalan, rasm:
[height, width, channels]
Gradient nima va nima uchun kerak?
Tasavvur qiling, siz tog'da turibsiz va eng pastki nuqtaga tushishingiz kerak. Gradientsizga aytadi: "qaysi tomon eng tik balanddir" — siz uning teskariyo'nalishida qadam tashlaysiz. Bu Gradient Descentalgoritmining mohiyati.
ML'da:
- Tog' = loss function(xatolik darajasi)
- Tushish = training(o'rgatish)
- Maqsad = loss'ni minimallashtirish
Normal distribution nima uchun muhim?
Real dunyodagi ko'p o'lchamlar (odamlar bo'yi, mahsulot narxi, IQ) normal taqsimotga ega. Bu Central Limit Theorem(markaziy chegara teoremasi)dan kelib chiqadi. ML algoritmlari ham ko'pincha shu taqsimotga moslashtirilgan.
Kod misollari
NumPy bilan vektor va matritsa
import numpy as np
# Vektor
v = np.array([1, 2, 3])
# Matrix (matritsa)
A = np.array([[1, 2], [3, 4]])
# Dot product (skalyar ko'paytma)
u = np.array([4, 5, 6])
result = np.dot(v, u) # 1*4 + 2*5 + 3*6 = 32
# Matritsa ko'paytmasi
B = np.array([[5, 6], [7, 8]])
C = A @ B # yoki np.matmul(A, B)
# Transpose
A_T = A.T
Gradient hisoblash (oddiy misol)
import numpy as np
# f(x) = x^2 funksiyasining hosilasi: f'(x) = 2x
def f(x):
return x ** 2
def gradient_f(x):
return 2 * x
# Gradient descent — minimumni topish
x = 10.0 # boshlang'ich nuqta
learning_rate = 0.1
for i in range(20):
grad = gradient_f(x)
x = x - learning_rate * grad # teskari yo'nalishda qadam
print(f"step {i}: x = {x:.4f}, f(x) = {f(x):.4f}")
# Natija: x → 0 ga yaqinlashadi (f(x) = x^2 ning minimumi)
Statistik o'lchovlar
import numpy as np
data = np.array([2, 4, 4, 4, 5, 5, 7, 9])
print(f"Mean: {np.mean(data)}") # 5.0
print(f"Median: {np.median(data)}") # 4.5
print(f"Std: {np.std(data):.2f}") # 2.00
print(f"Var: {np.var(data):.2f}") # 4.00
# Normal taqsimotdan tasodifiy son
sample = np.random.normal(loc=0, scale=1, size=1000)
print(f"Sample mean: {sample.mean():.3f}") # ~0 ga yaqin
print(f"Sample std: {sample.std():.3f}") # ~1 ga yaqin
Backend integratsiyasi
Backend dev sifatida sizga matematika quyidagi joylarda kerak bo'ladi:
- Analytics endpoints — Django'da
/api/stats/route —mean,median,percentilehisoblash uchun NumPy ishlatishingiz mumkin (Python'ning ichidagistatisticsmodulidan tez) - A/B testing backend — ikki versiya farqi statistik jihatdan ahamiyatlimi tekshirish (scipy.stats.ttest_ind)
- Anomaly detection — z-score yoki IQR usulida outlier'larni topish
- Rate limiting va load forecasting — Poisson distribution bilan request load'ni bashorat qilish
# FastAPI'da statistik endpoint misoli
from fastapi import FastAPI
import numpy as np
from scipy import stats
app = FastAPI()
@app.post("/api/stats/")
def calculate_stats(values: list[float]):
arr = np.array(values)
return {
"mean": float(arr.mean()),
"median": float(np.median(arr)),
"std": float(arr.std()),
"p95": float(np.percentile(arr, 95)),
"outliers_zscore": [
float(v) for v in arr if abs((v - arr.mean()) / arr.std()) > 3
],
}
Resurslar
Bepul
- 3Blue1Brown — "Essence of Linear Algebra"(YouTube playlist) — vizual tushuntirish, MUST WATCH(link)
- 3Blue1Brown — "Essence of Calculus"(YouTube playlist) — calculus uchun
- Khan Academy — Linear Algebra(link)
- StatQuest with Josh Starmer(YouTube) — statistika tushunchalarini soddalashtirish
- "Mathematics for Machine Learning" — Deisenroth, Faisal, Ong (bepul PDF: mml-book.com)
Pullik (ixtiyoriy)
- Coursera — Mathematics for Machine Learning Specialization(Imperial College London)
🏋️ Mashqlar
🟢 Easy
- NumPy bilan 5 ta tasodifiy son yarating, ularning
mean,median,stdni toping. - Ikki vektor
[1, 2, 3]va[4, 5, 6]ning dot product'ini qo'lda hisoblang, keyin NumPy bilan tekshiring. 3x3identity matrix yarating.
🟡 Medium
f(x) = (x-3)^2 + 5funksiyasining minimumini gradient descent bilan toping (learning rate'ni o'zgartirib ko'ring: 0.01, 0.1, 1.0).- 1000 ta tasodifiy normal sonlardan dataset yarating va histogram chizing (matplotlib bilan).
scipy.statsishlatib, ikki guruh natijalari uchun t-test o'tkazing va p-value'ni interpret qiling.
🔴 Hard
- FastAPI endpoint yozing: foydalanuvchi
[float]ro'yxat yuboradi, javob qilibmean,std,outliers (z-score > 3),normality test (Shapiro-Wilk)natijalarini qaytaring. Pydantic model'lar bilan to'liq type-safe qiling.
Capstone (oxirgi mashq)
notebooks/month-01/00_math_warmup.ipynb faylida quyidagilarni amalga oshiring:
- NumPy bilan 100×100 random matrix yarating
- Uning eigenvalues va eigenvectors'ini toping (
np.linalg.eig) - Matritsani SVD bilan dekompozitsiya qiling (
np.linalg.svd) - Singular values'larni vizualizatsiya qiling
✅ Tekshirish ro'yxati
- Vektor va matritsa farqini tushunaman
- Dot product nima ekanini, qachon ishlatilishini bilaman
- Gradient nima — bir gapda tushuntira olaman
- Gradient descent algoritmini kodda yozdim
- Mean, median, std orasidagi farqni bilaman
- Normal distribution nimaligini, nima uchun muhimligini tushunaman
- Bayes theorem'ning bir misolini ayta olaman
- NumPy'da matritsa amallarini bajarishni bilaman
Tayyor bo'lsangiz, NumPy bobiga o'ting.