Hyperparameter Tuning এবং Model Optimization হল মেশিন লার্নিং প্রকল্পের গুরুত্বপূর্ণ পদক্ষেপ, যা মডেলের কার্যকারিতা এবং সঠিকতা বৃদ্ধিতে সহায়ক। এখানে একটি বিস্তারিত গাইড দেওয়া হলো যা আপনাকে একটি প্রকল্প তৈরি করতে সাহায্য করবে।
প্রকল্পের উদ্দেশ্য
মডেলের পারফরম্যান্স বৃদ্ধি করতে এবং সঠিকতা অর্জন করতে হাইপারপ্যারামিটার টিউনিং এবং অপটিমাইজেশনের কৌশলগুলি প্রয়োগ করা।
প্রয়োজনীয় টুলস এবং লাইব্রেরি
- Programming Language: Python
- Libraries:
pandas: ডেটা হ্যান্ডলিংয়ের জন্যscikit-learn: মডেল তৈরির জন্যlightgbmবাxgboost: বুস্টিং মডেলগুলির জন্যoptuna,hyperopt, বাGridSearchCV: হাইপারপ্যারামিটার টিউনিংয়ের জন্যmatplotlib/seaborn: ভিজ্যুয়ালাইজেশনের জন্য
ধাপ ১: ডেটা সংগ্রহ ও প্রক্রিয়াকরণ
প্রথমে, ডেটা সংগ্রহ করুন এবং এটি প্রক্রিয়া করুন।
import pandas as pd
from sklearn.model_selection import train_test_split
# ডেটা লোড করা
data = pd.read_csv('path_to_your_dataset.csv')
# ফিচার এবং টার্গেট ভেরিয়েবল আলাদা করা
X = data.drop('target_column', axis=1)
y = data['target_column']
# প্রশিক্ষণ এবং পরীক্ষার সেটে বিভক্ত করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
ধাপ ২: মডেল তৈরি
একটি মৌলিক মডেল তৈরি করুন।
import lightgbm as lgb
# LightGBM Dataset তৈরি করা
train_data = lgb.Dataset(X_train, label=y_train)
ধাপ ৩: Hyperparameter Tuning
৩.১. Grid Search
Grid Search একটি সহজ কিন্তু সময়সাপেক্ষ পদ্ধতি।
from sklearn.model_selection import GridSearchCV
# LightGBM প্যারামিটার
params = {
'num_leaves': [31, 50, 100],
'learning_rate': [0.01, 0.05, 0.1],
'n_estimators': [50, 100, 200]
}
# GridSearchCV সেটআপ
grid_search = GridSearchCV(estimator=lgb.LGBMClassifier(), param_grid=params, scoring='accuracy', cv=3)
grid_search.fit(X_train, y_train)
# সেরা প্যারামিটার এবং স্কোর
print("Best Parameters:", grid_search.best_params_)
print("Best Score:", grid_search.best_score_)
৩.২. Random Search
Random Search একটি দ্রুত বিকল্প যা এলোমেলোভাবে প্যারামিটারগুলির সংমিশ্রণ পরীক্ষা করে।
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
# Random Search প্যারামিটার
param_dist = {
'num_leaves': randint(20, 100),
'learning_rate': [0.01, 0.05, 0.1],
'n_estimators': randint(50, 200)
}
# RandomizedSearchCV সেটআপ
random_search = RandomizedSearchCV(estimator=lgb.LGBMClassifier(), param_distributions=param_dist, n_iter=50, scoring='accuracy', cv=3)
random_search.fit(X_train, y_train)
# সেরা প্যারামিটার এবং স্কোর
print("Best Parameters:", random_search.best_params_)
print("Best Score:", random_search.best_score_)
৩.৩. Optuna
Optuna হল একটি স্বয়ংক্রিয় হাইপারপ্যারামিটার টিউনিং লাইব্রেরি।
import optuna
def objective(trial):
num_leaves = trial.suggest_int('num_leaves', 20, 100)
learning_rate = trial.suggest_float('learning_rate', 0.01, 0.1)
n_estimators = trial.suggest_int('n_estimators', 50, 200)
model = lgb.LGBMClassifier(num_leaves=num_leaves, learning_rate=learning_rate, n_estimators=n_estimators)
score = cross_val_score(model, X_train, y_train, n_splits=3, scoring='accuracy').mean()
return score
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=50)
print("Best Parameters:", study.best_params)
print("Best Score:", study.best_value)
ধাপ ৪: মডেল মূল্যায়ন
মডেলটি পরীক্ষা ডেটাসেটের উপর মূল্যায়ন করুন।
from sklearn.metrics import accuracy_score, classification_report
# সেরা মডেল নির্বাচন করা
best_model = grid_search.best_estimator_ # অথবা random_search.best_estimator_
# পূর্বাভাস করা
y_pred = best_model.predict(X_test)
# মডেলের কার্যকারিতা পরীক্ষা করা
print("Accuracy:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))
ধাপ ৫: ফলাফল এবং ভিজ্যুয়ালাইজেশন
মডেলের ফলাফল এবং পারফরম্যান্স ভিজ্যুয়ালাইজ করুন।
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusion_matrix
# কনফিউশন ম্যাট্রিক্স
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()
উপসংহার
এই ধাপগুলি আপনাকে একটি Hyperparameter Tuning এবং Model Optimization প্রকল্প তৈরি করতে সহায়তা করবে। আপনার মডেলের কার্যকারিতা এবং সঠিকতা বাড়ানোর জন্য বিভিন্ন টিউনিং কৌশল ব্যবহার করে, আপনি মডেলটিকে আরও কার্যকরী করতে পারবেন। বিভিন্ন পদ্ধতি পরীক্ষা করে এবং সেরা ফলাফলগুলো বিশ্লেষণ করে, আপনি কার্যকরভাবে আপনার মডেলটিকে অপটিমাইজ করতে পারবেন।
Read more