Home »
Blog »
AI/ML Engineer সিরিজ » Series 05 » Episode 07
Gradient Boosting ও XGBoost: Kaggle জেতার অস্ত্র (কেন এত ভালো)
bagging বনাম boosting (Series 05, Episode 07)
🟡 INTERMEDIATE
Series 05 — Classical Machine Learning
Episode 07 / 11
📑 এই পর্বে যা যা আছে
- ১. গল্প: পরীক্ষার ভুল শুধরে শেখা
- ২. সমস্যা: Random Forest-এর চেয়েও ভালো চাই
- ৩. Bagging বনাম Boosting — মূল পার্থক্য
- ৪. Gradient Boosting কী? (৩ স্তরে)
- ৫. Visual: ভুল থেকে ভুল ঠিক করা
- ৬. XGBoost কেন এত জনপ্রিয়
- ৭. কোড: XGBoost দিয়ে Churn (P3) ও House Price (P2)
- ৮. মূল hyperparameter
- ৯. Overfitting সতর্কতা ও early stopping
- ১০. কখন Forest, কখন Boosting
- ১১. Boss Question ও Bangladesh উদাহরণ
- ১২. Job Requirement Decoder
- ১৩. সাধারণ ভুল
- ১৪. Interview Prep
- ১৫. হাতে-কলমে
- ১৬. Project Connection ও সারসংক্ষেপ
📝 ১. গল্প: পরীক্ষার ভুল শুধরে শেখা
Rahim পরীক্ষায় খারাপ করল। ভালো ছাত্র কী করে? সব আবার পড়ে না — বরং যেসব প্রশ্নে ভুল করেছিল
ঠিক সেগুলোতে বেশি মনোযোগ দেয়। পরের বার আবার যেখানে ভুল, সেখানে আরও। এভাবে ধাপে ধাপে দুর্বলতা
শুধরে নেয়।
Arif: "এটাই Boosting-এর মূল আইডিয়া। Random Forest-এ সব tree একসাথে, স্বাধীনভাবে
শেখে (parallel)। কিন্তু Boosting-এ tree-রা একে একে আসে (sequential) — প্রতিটা নতুন tree আগের
tree-দের ভুলগুলো ঠিক করার চেষ্টা করে। ফলাফল প্রায়ই Random Forest-এর চেয়েও ভালো।
এজন্যই Kaggle-এর tabular competition-এ XGBoost এত জেতে।"
❓ ২. সমস্যা: Random Forest-এর চেয়েও ভালো চাই
Random Forest ভালো, কিন্তু এর tree-গুলো একে অপরের ভুল থেকে শেখে না — সবাই আলাদা, তারপর ভোট।
প্রশ্ন: যদি প্রতিটা নতুন model আগেরগুলোর যেখানে ভুল হচ্ছে ঠিক সেখানে মন দিত? তাহলে
systematically error কমত। এই সমস্যাই সমাধান করে Gradient Boosting।
দুটোই ensemble (অনেক tree), কিন্তু কৌশল ভিন্ন: Random Forest = Bagging (parallel, variance কমায়);
Gradient Boosting = Boosting (sequential, bias কমায়)।
⚖️ ৩. Bagging বনাম Boosting — মূল পার্থক্য
Bagging (Random Forest)
অনেক tree স্বাধীনভাবে, একসাথে। প্রত্যেকে random নমুনা দেখে। শেষে ভোট/গড়।
মূলত variance কমায়। overfit-এ তুলনামূলক নিরাপদ।
Boosting (XGBoost)
tree একের পর এক, প্রতিটা আগেরটার ভুল (residual) ঠিক করে। মূলত bias কমায়।
বেশি শক্তিশালী, কিন্তু ভুল করলে সহজে overfit।
🚀 ৪. Gradient Boosting কী? (৩ স্তরে)
Level 1 — intuition: প্রথম একটা দুর্বল model (ছোট tree) prediction করে — অনেক ভুল
থাকে। দ্বিতীয় tree শুধু সেই ভুলগুলো (কতটা কম/বেশি হলো) predict করার চেষ্টা করে। এভাবে যোগ করতে করতে
prediction ধীরে ধীরে নিখুঁত হয়। "ভুলের উপর ভুল ঠিক করা।"
Level 2 — technical: প্রতিটা ধাপে model বর্তমান prediction-এর residual
(ভুল) এর দিকে একটা নতুন tree fit করে, এবং loss function-এর gradient অনুসরণ করে prediction update করে
(তাই "Gradient" Boosting)। একটা learning rate ঠিক করে প্রতি ধাপে কতটা এগোবে।
Level 3 — Engineer perspective: structured/tabular data-তে (churn, credit, demand)
Gradient Boosting (XGBoost/LightGBM/CatBoost) প্রায়ই সবচেয়ে ভালো accuracy দেয়। কিন্তু এর দাম —
বেশি hyperparameter টিউনিং ও overfit-এর ঝুঁকি। একজন engineer আগে Logistic/Random Forest baseline
বানায়, তারপর XGBoost দিয়ে সত্যিই উন্নতি হচ্ছে কিনা মাপে (cross-validation দিয়ে — E08)।
🖼️ ৫. Visual: ভুল থেকে ভুল ঠিক করা
Tree 1: মোটামুটি prediction → বড় error বাকি
Tree 2: Tree 1-এর error predict → error কমল
Tree 3: বাকি error predict → আরও কমল
...
Final = Tree1 + lr*Tree2 + lr*Tree3 + ... (lr = learning rate)
প্রতি ধাপে বাকি ভুলের দিকে একটু একটু এগোনো।
⭐ ৬. XGBoost কেন এত জনপ্রিয়
- Regularization built-in: overfit নিয়ন্ত্রণে বাড়তি সুরক্ষা।
- দ্রুত ও scalable: parallelize করা, বড় data সামলায়।
- Missing value নিজে সামলায়: কম preprocessing।
- উচ্চ accuracy: tabular competition-এ বারবার জেতে।
বিকল্প: LightGBM (আরও দ্রুত, বড় data), CatBoost (categorical feature
সহজে সামলায়)। ধারণা একই — Gradient Boosting। junior হিসেবে XGBoost জানলেই তিনটার concept ধরা হয়ে যায়।
💻 ৭. কোড: XGBoost দিয়ে Churn (P3) ও House Price (P2)
কেন XGBoost? tabular data-তে সেরা accuracy আর industry-standard; sklearn-এর মতোই API:
# pip install xgboost scikit-learn
from xgboost import XGBClassifier, XGBRegressor
from sklearn.metrics import f1_score, roc_auc_score, mean_absolute_error
# --- Classification: Churn (Project P3) ---
clf = XGBClassifier(
n_estimators=200, # কতগুলো boosting round (tree)
learning_rate=0.1, # প্রতি ধাপে কতটা এগোবে
max_depth=3, # প্রতিটা tree ছোট রাখি (weak learner)
subsample=0.8, # প্রতি tree-তে 80% row (overfit কমায়)
random_state=42,
eval_metric="logloss",
)
clf.fit(X_train, y_train)
proba = clf.predict_proba(X_test)[:, 1]
print("XGB Churn F1 :", f1_score(y_test, clf.predict(X_test)))
print("XGB Churn ROC-AUC:", roc_auc_score(y_test, proba))
# --- Regression: House Price (Project P2) ---
reg = XGBRegressor(
n_estimators=200, learning_rate=0.1,
max_depth=3, random_state=42,
)
reg.fit(Xh_train, yh_train) # Xh = house features
print("XGB House MAE:", mean_absolute_error(yh_test, reg.predict(Xh_test)))
লক্ষ্য করুন — classification আর regression দুটোতেই একই boosting ধারণা, শুধু
XGBClassifier vs XGBRegressor। API scikit-learn-এর মতোই (fit/predict),
তাই আগের সব evaluation code (E03, E05) সরাসরি চলে।
🎛️ ৮. মূল hyperparameter
| Parameter | কাজ | বাড়ালে |
n_estimators | boosting round/tree সংখ্যা | বেশি ক্ষমতা, বেশি overfit ঝুঁকি |
learning_rate | প্রতি ধাপের কদম | ছোট = ধীর কিন্তু ভালো generalize |
max_depth | প্রতি tree-র গভীরতা | বেশি = জটিল pattern, বেশি overfit |
subsample | প্রতি tree-তে row-র ভাগ | <1 হলে overfit কমে |
সাধারণ কৌশল: learning_rate ছোট (0.05–0.1) + n_estimators বেশি — ধীরে কিন্তু
নিরাপদে শেখা। এগুলো systematically বাছার পদ্ধতি (grid/random search) পরের episode (E08)-এ।
📉 ৯. Overfitting সতর্কতা ও early stopping
Boosting এত শক্তিশালী যে সহজেই training data মুখস্থ করে ফেলতে পারে। প্রতিরক্ষা: ছোট
learning_rate, সীমিত max_depth, subsample<1, এবং
early stopping — validation error বাড়তে শুরু করলেই থেমে যাওয়া:
clf = XGBClassifier(
n_estimators=1000, learning_rate=0.05,
max_depth=3, early_stopping_rounds=30,
eval_metric="auc", random_state=42,
)
clf.fit(
X_train, y_train,
eval_set=[(X_val, y_val)], # validation set-এ নজর রাখে
verbose=False,
)
# validation AUC আর না বাড়লে training নিজে থেকেই থামবে
🧭 ১০. কখন Forest, কখন Boosting
Random Forest বাছুন
দ্রুত baseline চাই, কম টিউনিং, overfit-এ নিরাপত্তা, মোটামুটি ভালো ফল যথেষ্ট।
XGBoost বাছুন
শেষ ০.৫% accuracy দরকার, টিউন করার সময় আছে, tabular data-তে সেরা ফল চাই।
Must Know: bagging vs boosting-এর পার্থক্য, XGBoost চালানো।
Good to Know: মূল hyperparameter টিউন, early stopping।
Learn Later: LightGBM/CatBoost-এর সূক্ষ্মতা, boosting-এর গাণিতিক derivation।
💼 ১১. Boss Question ও Bangladesh উদাহরণ
Boss: "XGBoost Random Forest-এর চেয়ে ভালো হলে সবসময় সেটাই ব্যবহার করি না কেন?"
উত্তর: "XGBoost টিউন করতে সময় লাগে আর ভুল করলে overfit করে — production-এ খারাপ
করতে পারে। ছোট gain-এর জন্য অনেক engineering সময় লাগলে সেটা সবসময় লাভজনক নয়। fraud/credit-এর মতো
যেখানে ০.৫% accuracy = লাখ টাকা, সেখানে XGBoost worth it। সাধারণ dashboard-এর জন্য Random Forest-ই যথেষ্ট।
সঠিক tool = business impact বনাম খরচের হিসাব।"
- Bank/NBFI: credit default prediction — XGBoost শিল্প-standard।
- bKash/Nagad: fraud scoring — শেষ কয়েক শতাংশ accuracy = বড় সাশ্রয়।
- Daraz: demand forecasting, return prediction।
🔎 ১২. Job Requirement Decoder
JD: "Experience with gradient boosting frameworks (XGBoost/LightGBM)."
১. কী বোঝায়? boosting model বানানো ও টিউন করার হাতেকলমে অভিজ্ঞতা।
২. কেন চায়? tabular data-তে এগুলোই সেরা accuracy দেয়; বহু production ML এতে চলে।
৩. কোন সমস্যা সমাধান করে? baseline-এর চেয়ে ভালো accuracy দরকার যেখানে।
৪. junior-এর কী জানা লাগে? bagging vs boosting, XGBoost চালানো, মূল hyperparameter, overfit নিয়ন্ত্রণ, early stopping।
৫. এখনই master লাগবে না: boosting-এর পূর্ণ গাণিতিক derivation, GPU tuning, custom objective।
৬. GitHub-এ কীভাবে দেখাবে? একই dataset-এ Logistic → Random Forest → XGBoost তুলনা টেবিল + কেন XGBoost জিতল/জিতল না।
৭. Interview: "Bagging vs boosting?", "learning_rate কী করে?", "XGBoost কেন Random Forest-এর চেয়ে ভালো (আর কখন নয়)?"
⚠️ ১৩. সাধারণ ভুল
ভুল ১: baseline ছাড়াই সরাসরি XGBoost → আগে Logistic/RF দিয়ে মাপুন, gain সত্যি কিনা দেখুন।
ভুল ২: বড় learning_rate + অনেক tree → দ্রুত overfit।
ভুল ৩: early stopping-এ test set ব্যবহার → না! validation set দিন; test শুধু final exam।
ভুল ৪: "XGBoost সবসময় সেরা" ধরে নেওয়া → ছোট/সরল data বা text-এ অতিরিক্ত জটিল হতে পারে।
ভুল ৫: hyperparameter random ভাবে বাছা → cross-validation দিয়ে systematically (E08)।
🎤 ১৪. Interview Prep
প্র: Bagging আর Boosting-এর পার্থক্য?
উ: Bagging = parallel, স্বাধীন model, variance কমায় (RF)। Boosting = sequential, আগের ভুল ঠিক করে, bias কমায় (XGBoost)।
প্র: Gradient Boosting-এ "gradient" কী?
উ: প্রতি ধাপে loss-এর gradient (residual) অনুসরণ করে নতুন tree fit হয়।
প্র: learning_rate ছোট রাখলে কী হয়?
উ: ধীরে শেখে (বেশি tree লাগে), কিন্তু সাধারণত ভালো generalize করে।
প্র: XGBoost কেন RF-এর চেয়ে ভালো হয় প্রায়ই?
উ: sequentially ভুল ঠিক করে bias কমায় + built-in regularization; তবে টিউনিং ও overfit ঝুঁকি বেশি।
প্র: overfit কীভাবে ঠেকান?
উ: ছোট learning_rate, সীমিত depth, subsample<1, early stopping, regularization।
✍️ ১৫. হাতে-কলমে
১. Churn data-তে Logistic, Random Forest ও XGBoost — তিনটার test F1 ও ROC-AUC একটা টেবিলে লিখুন।
কে জিতল?
২. XGBoost-এ learning_rate 0.3 → 0.05 বদলে (আর n_estimators বাড়িয়ে) দেখুন test AUC উন্নত হয় কিনা।
৩. early stopping যোগ করুন; দেখুন কত round-এ থামল।
৪. clf.feature_importances_ দিয়ে RF-এর সাথে importance তুলনা করুন — একই কি?
🚀 ১৬. Project Connection ও সারসংক্ষেপ
Project P2 (House Price) ও P3 (Churn) দুটোতেই এখন আমাদের হাতে একটা competitive model আছে —
একটা পরিষ্কার ladder: Linear/Logistic (baseline) → Random Forest → XGBoost। flagship Career
Assistant-এর role/salary prediction-এ XGBoost দুর্দান্ত ফল দেবে। কিন্তু এই সব model-কে
নির্ভরযোগ্যভাবে টিউন ও validate করতে হবে — সেটাই পরের episode।
এই Episode-এ শিখলাম:
✓ Boosting = sequential, প্রতিটা model আগের ভুল ঠিক করে (bias কমায়)
✓ Bagging (RF, parallel, variance কমায়) vs Boosting (XGB, sequential, bias কমায়)
✓ Gradient Boosting residual/gradient অনুসরণ করে; learning_rate দিয়ে কদম নিয়ন্ত্রণ
✓ XGBoost: regularization, দ্রুত, উচ্চ accuracy — tabular data-তে সেরা
✓ Classification ও regression দুটোতেই একই API; overfit ঠেকাতে early stopping
✓ সবসময় baseline-এর সাথে তুলনা করে gain সত্যি কিনা মাপুন
পরবর্তী Episode: Overfitting, Underfitting, Cross-Validation ও Hyperparameter Tuning —
model কেন generalize করে না, আর নির্ভরযোগ্যভাবে সেরা model বাছার পদ্ধতি।