Jab hamare paas ek dataset hota hai, toh hum ek dilemma face karte hain:
KYUN? Humein apne model ko aise data pe evaluate karna hai jo training ke dauran usne dekha nahi
PROBLEM: Agar hum testing ke liye bahut zyada data hold out karte hain (maan lo 50%), toh hum sirf aadhe data pe train kar rahe hain → worse model
PROBLEM: Agar hum bahut kam hold out karte hain (maan lo 10%), toh hamara performance estimate high variance wala hoga → ek lucky/unlucky split hume mislead kar sakta hai
K-fold cross-validation iss problem ko solve karta hai har ek data point ko training AUR testing dono ke liye use karke (lekin kabhi ek saath nahi).
HUMEIN KYA CHAHIYE: Generalization error E[error] ka ek estimate jo haara sara data efficiently use kare.
HUMEIN KAISE MILEGA:
Chaliye define karte hain:
Dataset D jisme N samples hain
Performance metric M (jaise accuracy, RMSE)
Model training procedure T
Step 1: Data ko partition karo
D ko K disjoint subsets (folds) mein divide karo: D=F1∪F2∪…∪FK
Har fold mein approximately KN samples hote hain. KYUN equal-sized? Taaki har validation set data ka same proportion represent kare → fair comparison.
Step 2: K training/validation splits define karo
Iteration i ke liye (jahan i=1,2,…,K):
Validation set: Vi=Fi
Training set: Ti=D∖Fi=⋃j=iFj
ISKA KYA MATLAB HAI: Har data point exactly 1 validation set mein aur K-1 training sets mein aata hai.
Step 3: K models train aur evaluate karo
Har fold i ke liye:
Ti pe model train karo: θi=T(Ti)
Vi pe evaluate karo: scorei=M(θi,Vi)
Step 4: Results aggregate karo
K-fold CV estimate hai:
CVK=K1∑i=1Kscorei
MEAN KYUN? Law of Large Numbers ke hisaab se, K estimates ko average karne se variance kam hota hai. Har scorei true performance ka ek noisy estimate hai; averaging se humein zyada stable estimate milta hai.
Standard error humein reliability batata hai:
SE=K1∑i=1K(scorei−CVK)2
STANDARD ERROR KYU MATTER KARTA HAI: Agar SE bada hai, toh hamare folds bahut alag-alag scores dete hain → model training data ke baare mein sensitive hai (possible overfitting ya data issues).
Sawaal: Bade K wale K-fold mein lower bias lekin higher variance kyun hota hai?
Bias derivation:
Maano θN woh model hai jo saare N samples pe trained hai (hamara target), aur θ(K−1)N/K woh model hai jo (K−1)N/K samples pe trained hai (har fold).
Estimation bias is difference se aata hai:
Bias∝∣E[error(θ(K−1)N/K)]−E[error(θN)]∣
BADA K BIAS KYUN KAM KARTA HAI: Jab K→N, K(K−1)N→N, isliye training set size full dataset ke kareeb pahunch jaati hai. Model ki performance waise hi ho jaati hai jaise full data pe train kiya gaya ho.
Variance derivation:
K-fold estimator ka variance hai:
Var(CVK)=Var(K1∑i=1Kscorei)=K21∑i=1KVar(scorei)+K22∑i<jCov(scorei,scorej)
43CVK=K1∑i=1KM(θi,Fi) where each model θᵢ is trained on all folds except Fᵢ, and evaluated on Fᵢ.
Cross-validation mein bada K bias kyun kam karta hai?
Bada K matlab har training set size full dataset ke kareeb hoti hai (jaise K=10 mein 90% data use hota hai). Isse CV estimate uss model ki performance ke kareeb aa jaata hai jo saare data pe trained ho.
Cross-validation mein bada K variance kyun badhata hai?
Bada K chhote validation sets wale zyada folds banata hai (noisier estimates) aur training sets mein zyada overlap hota hai (scores ke beech positive correlation), dono hi variance badhate hain.
K ki typical choice kya hoti hai aur kyun?
K=5 ya K=10. Yeh bias (80-90% data pe training full dataset ke kareeb hai) aur variance (bahut zyada correlated estimates nahi) ko balance karta hai, aur computationally bhi reasonable hai.
K-fold CV mein data leakage kya hota hai?
Jab preprocessing (normalization, feature selection) poore dataset pe split karne se pehle ki jaati hai, toh validation folds mein training folds ki information aa jaati hai. Fix: preprocessing sirf training folds pe fit karo, phir validation pe apply karo.
Stratified K-fold kya hai aur kab zaroori hai?
Stratified K-fold har fold mein full dataset jaisi class distribution maintain karta hai. Imbalanced datasets ke liye zaroori hai taaki har validation fold representative ho.
Nested cross-validation kya hai?
Performance estimation ke liye outer K-fold loop, hyperparameter tuning ke liye inner K-fold loop. Validation data ko model selection mein use karne se hone wale optimistic bias ko rokta hai.
Time series ke liye regular K-fold kyun use nahi kar sakte?
Isse future data pe training aur past data pe testing hoti, jo temporal causality violate karta hai. Time series CV use karo expanding/sliding windows ke saath jo sirf past se future predict karte hain.
Folds mein high standard error kya indicate karta hai?
Model ki performance bahut sensitive hai iss baat ke liye ki use kis data pe train kiya gaya hai, jo possible overfitting, data quality issues, ya model ki robustness ki kami suggest karta hai.
Leave-One-Out Cross-Validation (LOOCV) kya hai? :: Woh extreme case jahan K=N (samples ki sankhya) hoti hai. Har model N-1 samples pe train hota hai aur 1 pe validate. Minimum bias lekin maximum variance aur computational cost.