2.3.4 · AI-ML › Tree-Based & Instance Methods
Intuition Ek saanس mein core idea
Ek decision tree, agar unchecked chhod do, tab tak split karta rahega jab tak har leaf pure na ho jaye — yeh training data ko (uske noise samete) memorize kar leta hai. Pruning ka matlab hai zyada ugे हुए tree ko kaat-chhaant karna taaki woh real signal pakde, noise nahi. WHY care karte hain? Kyunki ek chhota, simple tree usually unseen data par generalizes better karta hai (bias–variance tradeoff).
Pruning = subtrees ko hataana (ya unhe banne se rokna) taaki decision tree ki complexity kam ho, training error mein thodi si wृद्धि le kar test error mein (umeed hai ki zyada badi) kami ki jaaye.
Do families:
Pre-pruning (early stopping): tree fully banne se pehle hi growing rokna (e.g. max_depth, min_samples_leaf, minimum impurity decrease).
Post-pruning: pehle poora tree banao, phir branches ko baad mein kaato (e.g. cost-complexity / reduced-error pruning).
Intuition Post-pruning zyaatar prefer kyun ki jaati hai
Pre-pruning greedy aur short-sighted hai: ek split abhi useless lag sakti hai, lekin uske neeche do behtareen splits enable kar sakti hai (XOR problem — pehli split akele zero information gain deti hai). Post-pruning pehle sab kuch grow karta hai, isliye woh poore subtree ki value dekh sakta hai prune karne ka decide karne se pehle. HOW: pehle bada banao, phir judge karo.
Yeh algorithm CART / scikit-learn ke ccp_alpha ke peeche hai. Ise master kar lo aur tumhare paas exam/interview ki 80% value aa jaayegi.
WHAT chahiye humein? Ek tree jo accurate bhi ho aur chhota bhi . Dono wishes ko ek objective mein daalen.
Maano T ek tree hai jiske terminal nodes (leaves) T ~ hain. Define karo:
R ( T ) = tree ki total error (ya impurity) = ∑ t ∈ T ~ R ( t ) , jahan R ( t ) leaf t par error hai.
∣ T ~ ∣ = leaves ki sankhya (hamara complexity measure).
Hum complexity ko ek knob α ≥ 0 ke saath penalize karte hain:
α = 0 : koi penalty nahi → full tree rakho.
α → ∞ : penalty dominant ho jaati hai → root tak collapse ho jaao (single node).
Toh α ko 0 → ∞ sweep karne se sabse bade se sabse chhote tak trees ki ek sequence milti hai.
Ek internal node t aur usmein rooted subtree T t lo. Do options compare karo:
Option A — subtree T t rakho: cost = R ( T t ) + α ∣ T t ~ ∣ .
Option B — ise ek single leaf t tak prune karo: cost = R ( t ) + α ⋅ 1 .
Hum prune karein jab B, A se bura na ho:
R ( t ) + α ≤ R ( T t ) + α ∣ T t ~ ∣
α ke liye solve karo:
α ( 1 − ∣ T t ~ ∣ ) ≤ R ( T t ) − R ( t )
Kyunki ∣ T t ~ ∣ ≥ 1 hai, divide karne par kuch khatranaak nahi hota jab ∣ T ~ t ∣ > 1 :
α ≥ ∣ T t ~ ∣ − 1 R ( t ) − R ( T t )
WHY numerator R ( t ) − R ( T t ) ? Yeh woh error hai jo collapse karne par tum gain karte ho (subtree zyada accurate tha, isliye R ( t ) ≥ R ( T t ) , numerator ≥ 0 ). WHY ∣ T ~ t ∣ − 1 se divide karo? Tum us error-cost ko un leaves ki sankhya par spread kar rahe ho jo tum remove karte ho. Yeh "extra error per leaf saved " hai — ek fair per-unit price.
Full tree T 0 grow karo.
Har internal node ke liye α eff compute karo.
Sabse chhote α eff wale node ko prune karo → ek chhota tree milo; woh α record karo.
Tab tak repeat karo jab tak sirf root na bache.
Ab tumhare paas ek nested sequence hai T 0 ⊃ T 1 ⊃ ⋯ ⊃ { root } increasing α 1 < α 2 < … ke saath.
Best α cross-validation se chunno (sabse kam CV error wala tree).
Definition Reduced-Error Pruning (REP)
Ek alag validation set ka use karo: har internal node ke liye (bottom-up), tentatively uske subtree ko ek leaf (majority class) se replace karo. Agar validation accuracy kam nahi hoti , toh pruned version rakho. Tab tak repeat karo jab tak koi aur beneficial pruning na bache.
WHY yeh kaam karta hai: validation set woh nahi hai jise tree ne memorize kiya, isliye ek subtree jo sirf training par helpful tha woh validation par hurt karega (ya help nahi karega) → kaat dena safe hai.
Knob
Meaning
Effect
max_depth
max levels
shallower tree
min_samples_split
ek node split karne ke liye min samples
kam splits
min_samples_leaf
leaf ke liye min samples
smoother leaves
min_impurity_decrease
split karne ke liye required impurity drop
weak splits block karta hai
ccp_alpha
cost-complexity α
post-pruning
Worked example Example 1 — kisi node ka
α eff compute karna
Ek node t ka subtree T t hai jisme 3 leaves hain. Misclassification errors (total samples ke fraction ke roop mein): leaf-level errors ka sum R ( T t ) = 0.02 hai. Agar hum t ko ek single leaf mein collapse karein, toh woh R ( t ) = 0.08 ke saath misclassify karega.
α eff ( t ) = ∣ T t ~ ∣ − 1 R ( t ) − R ( T t ) = 3 − 1 0.08 − 0.02 = 2 0.06 = 0.03
Yeh step kyun? Humne "price per leaf saved" compute ki. Interpretation: tabhi jab α ≥ 0.03 ho, is node ko collapse karna worth hai. Agar kisi doosri jagah ek node ka α eff = 0.01 hai, toh woh weakest link hai aur pehle prune hoga.
Worked example Example 2 — decide karna ki split rakhen ya nahi
Full tree T : R ( T ) = 0.05 , ∣ T ~ ∣ = 10 leaves. Pruned tree T ′ : R ( T ′ ) = 0.07 , ∣ T ~ ′ ∣ = 4 leaves. α = 0.01 lo.
R α ( T ) = 0.05 + 0.01 ( 10 ) = 0.15
R α ( T ′ ) = 0.07 + 0.01 ( 4 ) = 0.11
Kyunki 0.11 < 0.15 , prune karke T ′ par aa jao. Kyun? Humne 6 leaves chhodne ke liye 2% zyada training error accept ki — is α par yeh trade net win hai. (α = 0.001 par: R α ( T ) = 0.06 vs R α ( T ′ ) = 0.074 → full tree rakho. α ki choice literally decision flip kar deti hai.)
Worked example Example 3 — REP haath se
Ek node ke subtree ko 86% validation accuracy milti hai; ise majority-class leaf se replace karne par bhi 86% milti hai. Prune karo (koi loss nahi, simpler better hai — Occam). Agar leaf 80% deti, toh hum subtree rakhte .
α = bada tree."
Kyun sahi lagta hai: bade numbers ka matlab often "zyada" hota hai. Reality: α size par penalty hai, isliye bada α → chhota tree. Fix: yaad rakho α = 0 giant full tree rakhta hai, α = ∞ sirf root chodta hai.
Common mistake "Pre-pruning hamesha theek hai, pehle bada tree kyun grow karo?"
Kyun sahi lagta hai: jaldi rokna compute bachata hai aur directly overfitting se bachta lagta hai. Reality: greedy early stopping aise splits miss karta hai jo sirf deeper mein payoff karte hain (horizon effect / XOR). Fix: post-pruning prefer karo (ya kam se kam CV se tune karo) jab accuracy matter karti ho.
Common mistake "Training set use karke prune karo."
Kyun sahi lagta hai: yeh woh data hai jo tumhare paas hai. Reality: training error hamesha zyada splits ke saath kam hoti hai, isliye yeh kabhi prune karne ko nahi kehti. Fix: validation set (REP) ya cross-validation (α select karne ke liye) use karo.
Common mistake "Pruning hamesha test error kam karti hai."
Kyun sahi lagta hai: simpler = better generalization, usually. Reality: over-pruning bias badhata hai aur underfit kar sakta hai. Fix: α mein CV curve U-shaped hoti hai; minimum chuno, sirf α mat badhate jao.
Recall Feynman: ek 12-saal ke bachche ko explain karo
Socho tumne ek animal guess karne ke liye "haan/na" sawaalon ka ek family tree draw kiya. Agar tum questions poochte raho, eventually har animal ka apna chhota sa box ho jaata hai — lekin kuch questions bekar hote hain ("kya uske naam mein 7 letters hain?") aur sirf unhi animals ke liye kaam karte hain jo tumne pehle se dekhe hain. Pruning un bekar branches ko kaat-chhaantna hai taaki tree naaye animals ke baare mein bhi samajhdaar rahe jinhe usne kabhi nahi dekha. Hum har branch test karte hain: "agar main tumhe kaat doon, kya main unhi animals ko sahi guess kar paunga jo maine pehle chhupaye the?" Agar haan → snip! Simpler tree, phir bhi smart.
Mnemonic Do families aur knob yaad karo
"PRE stops, POST chops." Aur cost-complexity ke liye: "Big α, small tree" (α leaves par tax hai — zyada tax, kam leaves survive karti hain). Weakest link = sabse chhota α_eff pehle guillotined hota hai .
Tree pruning ki do families kya hain? Pre-pruning (growing karte waqt early stopping) aur post-pruning (poora grow karo, phir kaato).
Cost-complexity objective likho. R α ( T ) = R ( T ) + α ∣ T ~ ∣ , error plus ek penalty α times number of leaves.
α = 0 par konsa tree milta hai vs α → ∞ par?α = 0 → full unpruned tree; α → ∞ → sirf root node.
Node ke effective alpha ka formula. α eff ( t ) = ∣ T ~ t ∣ − 1 R ( t ) − R ( T t ) .
Weakest-link pruning mein konsa node pehle prune hota hai? Woh internal node jiska sabse chhota α eff ho (sabse sasta error-per-leaf-saved).
Post-pruning generally pre-pruning se better kyun hai? Pre-pruning greedy/short-sighted hai (horizon effect); post-pruning kaatne se pehle poore subtree ki value dekhta hai (XOR-like splits handle karta hai).
Best α kaise choose karte hain? Cross-validation se (ya validation set se) — woh α chuno jo CV error minimize kare, training error nahi.
Reduced-Error Pruning kya hai? Bottom-up, har subtree ko majority-class leaf se replace karo; agar validation accuracy na gire toh replacement rakho.
Pruning decide karne ke liye training error kyun use nahi kar sakte? Training error zyada splits ke saath monotonically decrease hoti hai, isliye yeh kabhi prune karne ka signal nahi deti — tumhe held-out data chahiye.
Teen pre-pruning hyperparameters batao. max_depth, min_samples_leaf, min_impurity_decrease (aur bhi: min_samples_split, ccp_alpha).
α badhane ka tree size par kya asar hota hai?Bada α → chhota tree (leaves par bhaari penalty).
Over-pruning ka khatraa kya hai? Underfitting — bias badhta hai, training aur test error dono kharab ho sakte hain.
Pre-pruning early stopping
R_alpha = R T + alpha leaves
alpha = R t - R Tt over leaves - 1