📚 সমস্ত অধ্যায় দেখুন
অধ্যায়/ফেজ 3 · Phase 3 · Advanced ML
3.4১৮ মিনিট পড়া23 / 68

Cross Validation — সঠিক evaluation

Cross Validation

K-fold, stratified, leave-one-out।

Hook — এক পরীক্ষায় বিচার নয়

একটা পরীক্ষায় ভালো করলে বুদ্ধিমান বলে দেওয়া যায় না। বিভিন্ন পরীক্ষায় repeatedly ভালো করলে তবেই বলা যায়। Cross Validation model এর সাথে ঠিক এটাই করে।

Why CV — Train/Test এর সীমাবদ্ধতা

Single train/test split এ score ভাগ্যের উপর নির্ভর করে। লাকি split এ ভালো, আনলাকি split এ খারাপ — তাই multiple fold দরকার।

CV_score = (1/K) Σ_{k=1}^{K} score(fold_k)

Important Variants

  • K-Fold — সাধারণ, K সাধারণত 5 বা 10।
  • Stratified K-Fold — class distribution preserve, imbalanced classification এ আবশ্যক।
  • Leave-One-Out — N fold, ছোট dataset এর জন্য।
  • Group K-Fold — একই group এর row যেন একই fold এ থাকে (medical patient, user)।
  • TimeSeriesSplit — সময় এর ক্রম রক্ষা, future leakage prevent।

Code — Stratified ও TimeSeries

cv_demo.py
from sklearn.model_selection import StratifiedKFold, cross_val_score, TimeSeriesSplit
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
import numpy as np

X, y = load_breast_cancer(return_X_y=True)

skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
scores = cross_val_score(LogisticRegression(max_iter=5000), X, y, cv=skf)
print("Stratified CV:", scores.mean(), "±", scores.std())

# Time series example
ts = TimeSeriesSplit(n_splits=5)
for tr, te in ts.split(np.arange(100)):
    print("train:", tr[:5], "... test:", te[:5])

Common Mistakes

Data Leakage

Whole dataset এ scaler/PCA fit করে তারপর CV — ভয়াবহ leakage। সবসময় Pipeline এর ভিতরে preprocessing রাখো।

  • Imbalanced data এ plain KFold ব্যবহার।
  • Time series এ shuffle করে CV।
  • Same patient/user এর row দুই fold এ থাকা।

Mini Project — Pipeline + CV

একটা Pipeline বানাও: Imputer → Scaler → Logistic Regression। Stratified 10-fold CV চালিয়ে mean ± std accuracy report করো।

Summary

এক নজরে

CV = trust-worthy model evaluation। Pipeline + Stratified KFold = সোনার combo।