ML-ийн суурь ойлголт, математик, алгоритм, үнэлгээ, код — нэг хуудсанд.
| Төрөл | Өгөгдөл | Даалгавар | Жишээ |
|---|---|---|---|
| Supervised (хяналттай) | Оролт X + зөв хариу y | Regression (тоо), Classification (ангилал) | Байрны үнэ таах, спам илрүүлэх |
| Unsupervised (хяналтгүй) | Зөвхөн X | Clustering, dimensionality reduction | Хэрэглэгч бүлэглэх |
| Reinforcement (бататгах) | Орчин + шагнал | Шагналыг хамгийн их болгох бодлого сурах | Тоглоом тоглох агент |
Орчин үеийн LLM-үүд: их хэмжээний текстэн дээр self-supervised (дараагийн token таах) аргаар сурч, дараа нь fine-tuning хийгддэг.
| Feature | Оролтын шинж (багана) |
| Label / target | Таах гэж буй утга |
| Parameter | Загвар өөрөө сурдаг (жин w, b) |
| Hyperparameter | Хүн тохируулдаг (learning rate, k, depth) |
| Loss | Алдааг хэмжих функц — багасгана |
| Epoch | Бүх train өгөгдлийг нэг удаа дамжих |
| Batch | Нэг алхамд ашиглах жишээнүүд |
| Inference | Сурсан загвараар шинэ өгөгдөл таах |
| Нэр | Томьёо | Хаана |
|---|---|---|
| MSE | (1/n) Σ (yᵢ − ŷᵢ)² | Regression |
| MAE | (1/n) Σ |yᵢ − ŷᵢ| | Outlier-т тэсвэртэй |
| Binary CE | −[y log p + (1−y) log(1−p)] | 2 ангилал |
| Cross-entropy | −Σ yₖ log pₖ | Олон ангилал |
| Sigmoid | σ(z) = 1/(1 + e⁻ᶻ) ∈ (0, 1) |
| Softmax | pₖ = ezₖ / Σⱼ ezⱼ |
| ReLU | max(0, z) |
| tanh | ∈ (−1, 1) |
| Алгоритм | Төрөл | Давуу тал | Анхаарах |
|---|---|---|---|
| Linear Regression | Regression | Хурдан, тайлбарлахад амар | Шугаман хамаарал таамагладаг |
| Logistic Regression | Classification | Сайн baseline, магадлал гаргана | Feature scaling |
| k-NN | Хоёулаа | Сургалт шаардахгүй | Scaling заавал, том өгөгдөлд удаан |
| Decision Tree | Хоёулаа | Ойлгомжтой, scaling хэрэггүй | Overfit хийхэд амархан |
| Random Forest | Хоёулаа | Олон модны дундаж → тогтвортой | Том, тайлбарлахад хэцүү |
| Gradient Boosting (XGBoost, LightGBM) | Хоёулаа | Хүснэгтэн өгөгдөлд ихэвчлэн хамгийн сайн | Hyperparameter олон |
| SVM | Хоёулаа | Жижиг, өндөр хэмжээст өгөгдөлд | Том өгөгдөлд удаан |
| k-Means | Clustering | Энгийн, хурдан | k-г урьдчилан сонгоно |
| PCA | Хэмжээс бууруулах | Дүрслэх, noise бууруулах | Шинэ тэнхлэг тайлбарлахад хэцүү |
| Neural Network | Хоёулаа | Зураг, текст, дуу | Их өгөгдөл, тооцоолол |
| Таасан + | Таасан − | |
|---|---|---|
| Бодит + | TP | FN |
| Бодит − | FP | TN |
Precision — «+ гэснээс хэд нь үнэхээр +». Recall — «бүх +-ээс хэдийг нь олсон».
| Нөхцөл | Хэмжүүр |
|---|---|
| Ангиллууд тэнцвэртэй | Accuracy |
| Тэнцвэргүй (fraud 1%) | F1, PR-AUC |
| FP үнэтэй (спам шүүлтүүр) | Precision |
| FN үнэтэй (өвчин илрүүлэх) | Recall |
| Босгоос үл хамаарах | ROC-AUC |
| Regression | MAE, RMSE, R² |
R² = 1 − Σ(y − ŷ)² / Σ(y − ȳ)²
| Train алдаа | Val алдаа | Засах | |
|---|---|---|---|
| Underfit (high bias) | Их | Их | Том загвар, илүү feature |
| Overfit (high variance) | Бага | Их | Регуляризаци, илүү өгөгдөл |
| Сайн | Бага | Бага | — |
import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
df = pd.read_csv("data.csv")
X, y = df.drop(columns="target"), df["target"]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y, random_state=42)
model = Pipeline([
("scale", StandardScaler()), # зөвхөн train дээр fit хийгдэнэ
("clf", LogisticRegression(max_iter=1000)),
])
print(cross_val_score(model, X_train, y_train, cv=5, scoring="f1").mean())
model.fit(X_train, y_train)
print(classification_report(y_test, model.predict(X_test)))
df.head(); df.info(); df.describe()
df.isna().sum() # дутуу утга
df["col"].value_counts()
df.groupby("city")["price"].mean()
df = df.dropna(subset=["price"])
df["age"] = df["age"].fillna(df["age"].median())
df = pd.get_dummies(df, columns=["city"])
import numpy as np a = np.array([[1, 2], [3, 4]]) a.shape # (2, 2) a @ a # матриц үржвэр a * a # элемент тус бүр a.T # транспонир a.mean(axis=0) # багана бүрийн дундаж np.linalg.inv(a)
for epoch in range(epochs):
model.train()
for xb, yb in loader:
optimizer.zero_grad()
loss = loss_fn(model(xb), yb)
loss.backward()
optimizer.step()
model.eval()
with torch.no_grad():
... # validation
Дараалал: zero_grad → forward → loss → backward → step.
| Scaler-ийг бүх өгөгдөл дээр fit хийгээд дараа нь хуваах | Эхлээд хуваа, Pipeline ашигла | data leakage |
| Target-аас гарсан feature оруулах | Таах мөчид мэдэгдэх feature-ийг л ашигла | target leakage |
| Test set дээр олон удаа тааруулах | Validation / CV-ээр тааруулж, test-ийг эцэст нь | хуурамч сайн оноо |
| 1% fraud өгөгдөлд 99% accuracy-д баярлах | F1, recall, PR-AUC хар | imbalance |
| Baseline-гүйгээр шууд deep learning | Logistic regression / boosting-оор эхэл | харьцуулалт |
| k-NN, SVM-д feature scaling хийхгүй | StandardScaler | зайн алгоритм |
| Time series-ийг санамсаргүй хуваах | Цаг хугацаагаар хуваа (TimeSeriesSplit) | ирээдүй харах |
| Train оноо өндөр → «загвар сайн» | Validation онооноос дүгнэ | overfit |
| Categorical-ыг 1, 2, 3 гэж кодлох (эрэмбэгүй) | One-hot эсвэл target encoding (CV дотор) | хуурамч эрэмбэ |
| random_state тогтоохгүй | Seed тогтоож давтагдах үр дүн | reproducibility |
| EDA-гүй шууд загварчлах | Тархалт, дутуу утга, outlier-ийг эхэлж хар | өгөгдөл ойлгох |
| Correlation-ыг шалтгаан гэж тайлбарлах | Causal дүгнэлтэд туршилт/causal арга хэрэгтэй | тайлбар |
| Англи нэр томьёоноос айж материал уншихгүй | Энэ хуудасны нэр томьёог цээжлээд эх хэлээр нь унш | сурах |
| Зөвхөн курс үзэж, төсөл хийхгүй | Өөрийн өгөгдөл дээр жижиг төсөл, GitHub-д байршуул | portfolio |
Энэ хуудас Zerotohero-ийн өөрийн боловсруулсан товч тойм. Сангуудын API хувилбар бүрт өөрчлөгдөж болох тул scikit-learn.org, pytorch.org-ийн албан ёсны баримт бичгийг шалгаарай.