Hook — সঠিক knob ঘোরানো
একই recipe, কিন্তু আঁচ একটু কম-বেশি হলেই রান্নার স্বাদ পাল্টে যায়। ML model এর hyperparameter ঠিক সেই আঁচ — সঠিকভাবে tune করলে accuracy লাফিয়ে বাড়ে।
Parameter vs Hyperparameter
- Parameter — model নিজে শেখে (weight, bias)।
- Hyperparameter — আমরা train এর আগে set করি (learning_rate, max_depth, C)।
Search Strategies
- Grid Search — সব combination, expensive কিন্তু exhaustive।
- Random Search — random sample, large space এ বেশি কার্যকর।
- Bayesian Optimization — past trial থেকে শিখে পরের point বেছে নেয় (Optuna, Hyperopt)।
- Successive Halving — শুরুতে অনেক candidate, খারাপগুলো বাদ দিতে দিতে winner বের করে।
Code — Grid + Random Search
tune_basic.py
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
from scipy.stats import randint
from sklearn.datasets import load_wine
X, y = load_wine(return_X_y=True)
grid = {"n_estimators": [100, 300], "max_depth": [None, 5, 10]}
gs = GridSearchCV(RandomForestClassifier(random_state=0), grid, cv=5, n_jobs=-1)
gs.fit(X, y); print("Grid best:", gs.best_params_, gs.best_score_)
dist = {"n_estimators": randint(50, 500), "max_depth": randint(3, 20)}
rs = RandomizedSearchCV(RandomForestClassifier(random_state=0), dist,
n_iter=20, cv=5, random_state=0, n_jobs=-1)
rs.fit(X, y); print("Random best:", rs.best_params_, rs.best_score_)Code — Optuna (Bayesian)
tune_optuna.py
import optuna
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_wine
X, y = load_wine(return_X_y=True)
def objective(trial):
params = {
"n_estimators": trial.suggest_int("n_estimators", 100, 600),
"learning_rate": trial.suggest_float("learning_rate", 0.01, 0.3, log=True),
"max_depth": trial.suggest_int("max_depth", 2, 8),
}
model = GradientBoostingClassifier(**params, random_state=0)
return cross_val_score(model, X, y, cv=5).mean()
study = optuna.create_study(direction="maximize")
study.optimize(objective, n_trials=30)
print(study.best_params, study.best_value)Common Mistakes
Big mistake
Test set এর উপর tune করা — leakage, real performance অনেক কম হবে।
- Search space বড্ড বড় বা বড্ড ছোট রাখা।
- Cross-validation না করে single split এ tune করা।
Mini Project — Optuna দিয়ে XGBoost tune
Phase 3 এর XGBoost চ্যাপ্টারের model এ Optuna দিয়ে ৫০ trial চালিয়ে best params বের করো — baseline এর সাথে compare।
Summary
এক নজরে
Random > Grid বেশিরভাগ সময়; Optuna = production winner।