Hyperparameter Tuning এবং Model Optimization প্রজেক্টে XGBoost, Random Forest, Neural Networks ইত্যাদি মডেলগুলোর হাইপারপ্যারামিটার টিউন করা এবং মডেল পারফর্মেন্স অপ্টিমাইজ করার কৌশলগুলো শেখা গুরুত্বপূর্ণ।
নিচে একটি XGBoost মডেল নিয়ে Hyperparameter Tuning এবং Model Optimization প্রজেক্টের উদাহরণ দেওয়া হলো:
প্রজেক্ট: XGBoost মডেলের Hyperparameter Tuning এবং Optimization
ধাপ ১: ডেটাসেট প্রস্তুত করা
প্রথমে, ডেটাসেট লোড এবং প্রি-প্রসেস করতে হবে। UCI থেকে একটি ডেটাসেট নেওয়া যেতে পারে (যেমন, “Heart Disease Dataset”)।
import pandas as pd
from sklearn.model_selection import train_test_split
# ডেটাসেট লোড করা
data = pd.read_csv('heart.csv')
# ফিচার এবং টার্গেট ভ্যারিয়েবল আলাদা করা
X = data.drop('target', axis=1)
y = data['target']
# Train এবং Test সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
ধাপ ২: বেসলাইন মডেল তৈরি করা
প্রথমে, একটি বেসলাইন মডেল তৈরি করা যাক এবং এর পারফর্মেন্স যাচাই করা যাক।
import xgboost as xgb
from sklearn.metrics import accuracy_score
# বেসলাইন মডেল
xgb_model = xgb.XGBClassifier(objective='binary:logistic', random_state=42)
xgb_model.fit(X_train, y_train)
# প্রেডিকশন এবং একুরেসি যাচাই
y_pred = xgb_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Baseline Accuracy: {accuracy:.2f}")
ধাপ ৩: Hyperparameter Tuning (Grid Search এবং Random Search ব্যবহার করে)
বিভিন্ন টেকনিক ব্যবহার করে Hyperparameter Tuning করা যায়, যেমন Grid Search এবং Random Search।
Grid Search Cross-Validation
from sklearn.model_selection import GridSearchCV
# Grid Search এর জন্য প্যারামিটার গ্রিড সেট করা
param_grid = {
'max_depth': [3, 4, 5],
'learning_rate': [0.01, 0.05, 0.1],
'n_estimators': [50, 100, 150],
'subsample': [0.6, 0.8, 1.0]
}
# Grid Search চালানো
grid_search = GridSearchCV(estimator=xgb_model, param_grid=param_grid, scoring='accuracy', cv=3)
grid_search.fit(X_train, y_train)
# সেরা প্যারামিটার প্রিন্ট করা
print("Best Parameters:", grid_search.best_params_)
Random Search Cross-Validation
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
# Random Search এর জন্য প্যারামিটার সেট করা
param_dist = {
'max_depth': randint(3, 10),
'learning_rate': [0.01, 0.05, 0.1, 0.2],
'n_estimators': randint(50, 200),
'subsample': [0.6, 0.8, 1.0]
}
# Random Search চালানো
random_search = RandomizedSearchCV(estimator=xgb_model, param_distributions=param_dist, scoring='accuracy', cv=3, n_iter=10, random_state=42)
random_search.fit(X_train, y_train)
# সেরা প্যারামিটার প্রিন্ট করা
print("Best Parameters from Random Search:", random_search.best_params_)
ধাপ ৪: সেরা মডেল দিয়ে Performance যাচাই
Hyperparameter Tuning শেষে পাওয়া সেরা প্যারামিটার ব্যবহার করে মডেলের পারফর্মেন্স যাচাই করা।
# সেরা প্যারামিটার দিয়ে মডেল ট্রেন করা
best_params = grid_search.best_params_
optimized_model = xgb.XGBClassifier(**best_params, objective='binary:logistic', random_state=42)
optimized_model.fit(X_train, y_train)
# প্রেডিকশন এবং একুরেসি যাচাই
y_pred_optimized = optimized_model.predict(X_test)
optimized_accuracy = accuracy_score(y_test, y_pred_optimized)
print(f"Optimized Accuracy: {optimized_accuracy:.2f}")
প্রজেক্টের লক্ষ্য
- Hyperparameter Tuning এর মাধ্যমে মডেল পারফর্মেন্স অপ্টিমাইজ করা।
- Grid Search এবং Random Search এর পার্থক্য এবং তাদের কার্যকারিতা শেখা।
- মডেল একুরেসি ও অন্যান্য মেট্রিক্স (যেমন Precision, Recall, F1-score) ব্যবহার করে মডেল যাচাই করা।
এটি Hyperparameter Tuning এবং Model Optimization প্রজেক্টের একটি উদাহরণ। একই পদ্ধতি অন্য মডেল যেমন Random Forest, Neural Networks, ইত্যাদিতেও প্রয়োগ করা যায়।
Read more