Makine Öğrenmesi Yol Haritası · 0 → Pro

MAKİNE ÖĞRENMESİ ROADMAP

Model kurmak değil — problem çözme + matematik + kod + iş mantığı. Bu dört ayak eş zamanlı gelişir. Birini atlayan eksik kalır.

0
AŞAMA
0
ALGORİTMA
0
PROJE
ZİHNİYET
%70
Veri + ProblemTemizleme, analiz, anlama
%20
Analiz + EDAİstatistik, görselleştirme
%10
Model KurmaSadece bu kadar!
Projeye DökHer öğrendiğin → kod
0
ZİHİNSET
1
PYTHON
2
MATEMATİK
3
EDA
4
TEMEL ML
5
DEĞERLENDİRME
6
PROJELER
7
İLERİ ML
8
DERİN ÖĞR.
9
UZMANLIK
10+
MLOPS
1
// AŞAMA 1 — PYTHON TEMELİ
Python + NumPy + Pandas + Görselleştirme
Syntax · OOP · Comprehension · NumPy · Pandas · Matplotlib · Seaborn
VariablesOOPList CompLambdaNumPyPandasMatplotlibSeabornCSV/JSON
# ML için kritik Python becerileri import numpy as np import pandas as pd # NumPy — matris işlemleri ML'in kalbi X = np.random.randn(1000, 10) # 1000 örnek, 10 özellik W = np.random.randn(10, 1) # ağırlık matrisi y_pred = np.dot(X, W) # matris çarpımı # Pandas — veri manipülasyonu df = pd.read_csv("data.csv") df.info() # genel bakış df.describe() # istatistik özeti df.groupby("kategori")["fiyat"].agg(["mean","std","count"]) # List comprehension — Pythonic kareler = [x**2 for x in range(10)] pivot = pd.pivot_table(df, values="satis", index="ay", aggfunc="sum")
💡 Tavsiye: NumPy'yi gerçekten anlamadan ML öğrenmek kör gitmek demektir. Gradient descent, neural network ağırlıkları, PCA — hepsi matris operasyonu. np.dot() komutunu rüyanda görmeden geçme.
Hedef: CSV okuyup, temizleyip, analiz edip, 3 farklı grafik çizebilmek. Bunları ezberden yapabilmek.
2
// AŞAMA 2 — MATEMATİK (ML'NİN KALBİ)
Lineer Cebir + Olasılık + Calculus
Vektör · Matris · Gradient · Bayes · Normal Dağılım · Optimizasyon
𝐀
Lineer Cebir
Vektör, matris çarpımı, transpoz, determinant, eigenvalue/eigenvector
PCA · Neural Net Weights
P
Olasılık & İstatistik
Koşullu olasılık, Bayes teoremi, Normal/Bernoulli dağılımlar, CLT, hipotez testi
Naive Bayes · MLE
Türev & Gradyan
Kısmi türev, zincir kuralı, gradient descent — kayıp fonksiyonunu minimize et
Backprop · Optimizer
Σ
Optimizasyon
Konveks vs non-konveks, SGD, Adam, learning rate schedules, momentum
Tüm DL eğitimi
Not: Formülleri ezberlemene gerek yok. "Gradient neden hesaplıyoruz?", "Neden matris çarpıyoruz?" sorularını yanıtlayabilmek yeterli. Anlayış > ezber.
3
// AŞAMA 3 — VERİ ANALİZİ (EDA)
Data Cleaning + Feature Engineering + Görselleştirme
Missing data · Outlier · Encoding · Scaling · EDA · Korelasyon
⚠️ Gerçek Dünya: Sektörde zamanın %70'i burada geçer. Kirli veri → yanlış model. "Garbage in, garbage out" — temiz veri yazmak model kurmaktan önemlidir.
# Eksiksiz EDA akışı import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler, LabelEncoder # 1. Genel tanıma df.shape, df.dtypes eksik = (df.isnull().sum() / len(df)) * 100 # 2. Outlier — IQR yöntemi Q1, Q3 = df["fiyat"].quantile([.25, .75]) IQR = Q3 - Q1 df_temiz = df[(df["fiyat"] >= Q1-1.5*IQR) & (df["fiyat"] <= Q3+1.5*IQR)] # 3. Doldurma stratejileri df["yas"].fillna(df["yas"].median(), inplace=True) # sayısal df["sehir"].fillna(df["sehir"].mode()[0], inplace=True) # kategorik # 4. Feature engineering — yeni özellik yarat df["gelir_yas_oran"] = df["gelir"] / df["yas"] df["ay"] = pd.to_datetime(df["tarih"]).dt.month # 5. Encoding + Scaling df_enc = pd.get_dummies(df, columns=["sehir"], drop_first=True) scaler = StandardScaler() X_scaled = scaler.fit_transform(X_train) # FİT SADECE TRAIN'E!
Korelasyon Analizi
heatmap ile feature ilişkileri. r > 0.9 → multicollinearity riski. Hedef ile korelasyon en önemli.
Feature Importance
Random Forest / XGBoost feature_importances_. SHAP değerleri ile açıklanabilir AI.
Data Leakage
Test verisinden bilgi sızmaz. Scaler fit sadece train'e. Future data kullanma. En ölümcül hata.
4
// AŞAMA 4 — TEMEL MAKİNE ÖĞRENMESİ
Supervised + Unsupervised + Scikit-learn
Linear Reg · Logistic · KNN · Decision Tree · Random Forest · K-Means · PCA
SUPERVISED · REG
Linear Regression
y = Xw+b · MSE minimize · gradient descent
EV FİYAT
SUPERVISED · CLF
Logistic Regression
Sigmoid · binary · multi-class (OvR)
SPAM/HAM
SUPERVISED · DIST
KNN
K komşu · mesafe · scaling zorunlu
TAVSİYE
SUPERVISED · TREE
Decision Tree
Gini impurity · yorumlanabilir · overfit riski
KURAL
ENSEMBLE · 🔥 GÜÇLÜ
Random Forest
N ağaç → oylama · feature importance · baseline
HER YERDE
UNSUPERVISED
K-Means + PCA
Kümeleme · boyut azaltma · elbow method
SEGMENT
# Scikit-learn Pipeline — veri sızıntısı önleme from sklearn.pipeline import Pipeline from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split, StratifiedKFold, cross_val_score from sklearn.preprocessing import StandardScaler pipe = Pipeline([ ("scaler", StandardScaler()), ("model", RandomForestClassifier(n_estimators=200, random_state=42, n_jobs=-1)) ]) X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=.2, stratify=y, random_state=42) pipe.fit(X_tr, y_tr) # Stratified K-Fold — güvenilir değerlendirme cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) scores = cross_val_score(pipe, X, y, cv=cv, scoring="f1_weighted") print(f"F1: {scores.mean():.3f} ± {scores.std():.3f}")
Overfitting Alarm: Train F1: 0.99, Test F1: 0.72 görürsen → overfitting. Çözüm: Daha az özellik, daha az derinlik, regularization (L1/L2), daha fazla veri, dropout (DL için).
5
// AŞAMA 5 — MODEL DEĞERLENDİRME
Metrikler + Karşılaştırma + Hata Analizi
Accuracy · Precision · Recall · F1 · ROC-AUC · Confusion Matrix · Calibration
METRİKFORMÜLNE ZAMAN KULLANDİKKAT
Accuracy(TP+TN)/NDengeli sınıf dağılımıDengesiz veriyle yanıltıcı!
PrecisionTP/(TP+FP)False positive pahalıysa (spam)Recall azalır
RecallTP/(TP+FN)False negative tehlikeliyse (kanser)Precision azalır
F1 Score2×P×R/(P+R)Dengesiz veri, her ikisi de önemliHarmonic mean
ROC-AUCEğri altı alanThreshold bağımsız değerlendirme0.5 = random, 1.0 = mükemmel
RMSE√(Σ(y-ŷ)²/n)Regresyon, büyük hata cezasıOutlier'a duyarlı
# Kapsamlı değerlendirme from sklearn.metrics import (classification_report, confusion_matrix, roc_auc_score, roc_curve, RocCurveDisplay) import matplotlib.pyplot as plt y_pred = pipe.predict(X_te) y_prob = pipe.predict_proba(X_te)[:, 1] print(classification_report(y_te, y_pred, digits=3)) print(f"ROC-AUC: {roc_auc_score(y_te, y_prob):.4f}") # Confusion matrix görselleştirme sns.heatmap(confusion_matrix(y_te, y_pred), annot=True, fmt="d", cmap="Reds") # Hata analizi — neyi yanlış sınıflandırıyor? yanlislar = X_te[y_pred != y_te] yanlislar.describe() # kalıp var mı?
💡 Ekstra Tavsiye — Model Kalibrasyonu: predict_proba() %80 diyorsa gerçekten %80 mi olmalı? Calibration curve ile kontrol et. sklearn.calibration.calibration_curve + CalibratedClassifierCV ile düzelt. Sektörde çok göz ardı edilen ama kritik detay.
6
// AŞAMA 6 — PROJE YAP (EN KRİTİK NOKTA)
Başlangıç → Orta → İleri Projeler
Ev Fiyat · Spam · Churn · Tavsiye · Fraud · Stock
⭐ EN KRİTİK KISIM: Tutorial izlemek = öğrenmek değil. Bir problemi başından sonuna çözmek öğrenmek. Her projede: veri temizle → EDA yap → model kur → değerlendir → yorumla → GitHub'a yükle.
🟢 BAŞLANGIÇ
🏠 Ev Fiyat Tahmini — Regression + feature eng.
📧 Spam Sınıflandırma — NLP + Naive Bayes/LR
📉 Müşteri Terk (Churn) — Binary clf + imbalanced
🟡 ORTA SEVİYE
🎬 Tavsiye Sistemi — Collaborative filtering
💳 Fraud Detection — Dengesiz sınıf, SMOTE
📈 Hisse Tahmini — Time series + LSTM
🔴 İLERİ
🔬 End-to-End ML Pipeline — Airflow + MLflow
🤖 Sentiment Analysis API — BERT + FastAPI
👁️ Görüntü Sınıflandırma — CNN + transfer learning
💡 Proje Yapım Şablonu: README.md + Problem tanımı + Veri kaynağı + EDA notebook + Model karşılaştırma tablosu + Sonuç yorumu + requirements.txt. Bu formata uyan proje CV'den kopya-paste edilir.
7
// AŞAMA 7 — İLERİ MAKİNE ÖĞRENMESİ
Gradient Boosting + XGBoost + Hyperparameter Tuning
XGBoost · LightGBM · CatBoost · Grid Search · Optuna · SHAP · Stacking
# XGBoost — Kaggle'ın favorisi, sektörün standarTı import xgboost as xgb from lightgbm import LGBMClassifier import optuna xgb_model = xgb.XGBClassifier( n_estimators=1000, learning_rate=0.05, max_depth=6, subsample=0.8, colsample_bytree=0.8, reg_alpha=0.1, # L1 reg_lambda=1.0, early_stopping_rounds=50, eval_metric="auc", random_state=42 ) # Optuna — Bayesian hyperparameter optimizasyonu def objective(trial): params = { "max_depth": trial.suggest_int("max_depth", 3, 9), "learning_rate": trial.suggest_float("lr", 0.01, 0.3, log=True), "n_estimators": trial.suggest_int("n_est", 100, 1000), } model = xgb.XGBClassifier(**params) score = cross_val_score(model, X_tr, y_tr, cv=5, scoring="roc_auc") return score.mean() study = optuna.create_study(direction="maximize") study.optimize(objective, n_trials=100, n_jobs=-1) # SHAP — açıklanabilir AI import shap explainer = shap.TreeExplainer(xgb_model) shap_values = explainer.shap_values(X_te) shap.summary_plot(shap_values, X_te) # hangi özellik neden önemli?
LightGBM vs XGBoost
LightGBM: leaf-wise büyüme → daha hızlı, büyük veri. XGBoost: level-wise → daha stabil. Deney yap, hangisi kazanır bak.
Stacking Ensemble
Level-1: XGB+LGB+RF → Level-2: LogReg. Kaggle'da son %1-2 kazanç buradan gelir. OOF (out-of-fold) ile uygula.
8
// AŞAMA 8 — DERİN ÖĞRENME
Neural Networks + CNN + RNN/LSTM + Transformer
PyTorch · TensorFlow · Backprop · Activation · Regularization · Fine-tuning
# PyTorch — modern standart import torch import torch.nn as nn import torch.optim as optim class MLPClassifier(nn.Module): def __init__(self, in_dim: int, n_classes: int): super().__init__() self.net = nn.Sequential( nn.Linear(in_dim, 512), nn.BatchNorm1d(512), nn.ReLU(), nn.Dropout(0.3), nn.Linear(512, 256), nn.BatchNorm1d(256), nn.GELU(), nn.Dropout(0.2), nn.Linear(256, 128), nn.BatchNorm1d(128), nn.GELU(), nn.Linear(128, n_classes) ) def forward(self, x): return self.net(x) model = MLPClassifier(in_dim=20, n_classes=2) optimizer = optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4) scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=50) criterion = nn.CrossEntropyLoss() # HuggingFace Transformers — fine-tuning from transformers import AutoModelForSequenceClassification, Trainer model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2) trainer = Trainer(model=model, train_dataset=train_ds, eval_dataset=val_ds) trainer.train()
CNN (Görüntü)
Conv2d → BatchNorm → ReLU → MaxPool → Flatten → FC. Transfer learning: ResNet/EfficientNet/CLIP ile başla.
LSTM (Zaman Serisi)
Sekans verisi → hidden state. Vanishing gradient problemi → LSTM/GRU ile çöz. Bidirectional opsiyonu.
Transformer
Self-attention mekanizması. BERT (anlama) vs GPT (üretme). Fine-tuning ile az veriyle güçlü sonuç.
9+
// AŞAMA 9–11 — UZMANLIK + MLOPS + PORTFOLIO
Alan Seç + Deployment + GitHub Portfolio
NLP · CV · Time Series · FastAPI · Docker · MLflow · Kaggle
🔹 NLP (Metin)
Tokenization → embedding → transformer. Ürün: sentiment analyzer, chatbot, özetleyici. HuggingFace ile başla.
🔹 Computer Vision
Object detection (YOLO), segmentation (SAM), classification. PyTorch + timm + albumentations.
🔹 Time Series
Prophet, ARIMA, LSTM, Temporal Fusion Transformer. Finans, talep tahmini, anomali tespiti.
# MLOps — production ML import mlflow from fastapi import FastAPI import joblib # MLflow — deney takibi with mlflow.start_run(): mlflow.log_params({"n_estimators": 200, "max_depth": 6}) mlflow.log_metric("roc_auc", 0.947) mlflow.sklearn.log_model(pipe, "model") # FastAPI — model servisi app = FastAPI(title="Churn Prediction") model = joblib.load("model.pkl") @app.post("/predict") async def predict(data: dict): X = pd.DataFrame([data]) prob = model.predict_proba(X)[0,1] return {"churn_probability": round(float(prob),4), "high_risk": bool(prob > 0.7)}
🏠 Ev Fiyat Tahmini
📧 Spam Sınıflandırma
📉 Churn Prediction
🎬 Tavsiye Sistemi
💳 Fraud Detection
🤖 NLP Sentiment API

Her öğrendiğin
şeyi
projeye dök.

Video izlemek ≠ öğrenmek. Tutorial bağımlılığından kaç. "Ben bunu nerede kullanırım?" sorusunu her adımda sor. GitHub dolu portföy, 100 video izlemekten değerlidir.

↑ Başa Dön Kaggle →
1
0–3 Ay: Python + Matematik + EDA
NumPy, Pandas, istatistik, veri temizleme — temeli sağlam kur
2
3–6 Ay: ML Algoritmaları + Projeler
Scikit-learn, cross-val, metrikler. Paralel proje yap.
3
6–9 Ay: İleri ML + Deep Learning
XGBoost, Optuna, SHAP. PyTorch ile ilk sinir ağı.
4
9–12 Ay: Uzmanlaşma + MLOps
Alan seç (NLP/CV/TS). Docker + FastAPI + MLflow ile deploy et.
5
GitHub: 5–10 güçlü proje
Her proje: README + EDA notebook + model + deployment
6
Kaggle + Blog yaz
Bronze madalya hedefle. Yazmak öğrenmeyi pekiştirir.