Hyperparameter Tuning এর উদাহরণ

Model Tuning এবং Hyperparameter Optimization - পাইথন দিয়ে মেশিন লার্নিং (Machine Learning with Python) - Machine Learning

299

Hyperparameter Tuning হল মেশিন লার্নিং মডেলের কর্মক্ষমতা বৃদ্ধি করার একটি গুরুত্বপূর্ণ প্রক্রিয়া, যেখানে মডেলের প্রশিক্ষণ প্রক্রিয়ায় ব্যবহৃত hyperparameters (যেগুলি মডেল প্রশিক্ষণের বাইরে থাকে এবং প্রাথমিকভাবে ব্যবহারকারীর দ্বারা নির্ধারিত হয়) অপ্টিমাইজ করা হয়। এটি মডেলের accuracy, precision, recall, F1-score বা অন্যান্য মেট্রিকস উন্নত করতে সাহায্য করে।

Hyperparameters এবং Hyperparameter Tuning

  • Hyperparameters: মডেল বা অ্যালগরিদমের সেটিংস যা প্রশিক্ষণ চলাকালীন পরিবর্তিত হয় না। যেমন, learning_rate, n_estimators, max_depth, min_samples_split, ইত্যাদি।
  • Hyperparameter Tuning: প্রশিক্ষণের আগে বা প্রশিক্ষণের সময় Hyperparameters নির্বাচন এবং অপ্টিমাইজ করা, যাতে মডেলটি ভালো পারফরম্যান্স দেয়।

Hyperparameter Tuning এর পদ্ধতি

  1. Grid Search: একটি নির্দিষ্ট hyperparameter সেটের উপর exhaustive search করে অপ্টিমাল সেট নির্বাচন করা। এই পদ্ধতিতে সব সম্ভাব্য কনফিগারেশনের জন্য মডেলটি প্রশিক্ষিত হয় এবং সেরা প্যারামিটার নির্বাচিত হয়।
  2. Random Search: Grid Search-এর তুলনায় কম সময়ে বেশি কনফিগারেশন পরীক্ষা করার জন্য র্যান্ডম পদ্ধতিতে hyperparameters নির্বাচন করা। এখানে, Grid Search-এর মত exhaustive search করা হয় না, বরং কিছু সম্ভাব্য কনফিগারেশন নির্বাচন করা হয়।
  3. Bayesian Optimization: এটি একটি প্রাসঙ্গিক এবং উন্নত পদ্ধতি যা Bayesian principles ব্যবহার করে একটি বুদ্ধিমানভাবে hyperparameter space explore করে।
  4. Automated Hyperparameter Tuning: কিছু লাইব্রেরি যেমন Optuna, Hyperopt ব্যবহার করে স্বয়ংক্রিয়ভাবে Hyperparameter Tuning করা যেতে পারে।

উদাহরণ ১: Grid Search Hyperparameter Tuning (Random Forest)

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# ডেটাসেট লোড করা
iris = load_iris()
X = iris.data
y = iris.target

# ডেটাসেট ট্রেনিং এবং টেস্টিং সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Random Forest মডেল তৈরি
model = RandomForestClassifier(random_state=42)

# Hyperparameter গ্রিড তৈরি করা
param_grid = {
    'n_estimators': [50, 100, 200],  # ট্রির সংখ্যা
    'max_depth': [None, 10, 20, 30],  # গাছের গভীরতা
    'min_samples_split': [2, 5, 10],  # সর্বনিম্ন নমুনা বিভাজন
    'min_samples_leaf': [1, 2, 4]     # leaf নোডে সর্বনিম্ন নমুনা
}

# GridSearchCV ব্যবহার করে Hyperparameter Tuning
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='accuracy')

# Grid Search চালানো
grid_search.fit(X_train, y_train)

# সেরা Hyperparameters এবং মডেল
print("Best Hyperparameters:", grid_search.best_params_)
print("Best Accuracy:", grid_search.best_score_)

এখানে, আমরা RandomForestClassifier মডেলটির hyperparameters n_estimators, max_depth, min_samples_split, min_samples_leaf এর উপর GridSearchCV চালিয়েছি। GridSearchCV ডেটার উপর সব সম্ভাব্য কনফিগারেশন পরীক্ষা করে সেরা সেট নির্বাচন করবে।


উদাহরণ ২: Random Search Hyperparameter Tuning (SVM)

from sklearn.svm import SVC
from sklearn.model_selection import RandomizedSearchCV
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from scipy.stats import randint

# ডেটাসেট লোড করা
iris = load_iris()
X = iris.data
y = iris.target

# ডেটাসেট ট্রেনিং এবং টেস্টিং সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# SVM মডেল তৈরি
model = SVC()

# RandomizedSearchCV এর জন্য hyperparameters নির্বাচন করা
param_dist = {
    'C': [0.1, 1, 10, 100],  # SVM এর C প্যারামিটার
    'gamma': ['scale', 'auto'],  # গামা প্যারামিটার
    'kernel': ['linear', 'rbf'],  # কণ্ঠের ধরন
    'degree': randint(1, 5),  # ডিগ্রি (only for poly kernel)
}

# Random Search চালানো
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=100, cv=5, scoring='accuracy', random_state=42)

# Random Search প্রশিক্ষণ
random_search.fit(X_train, y_train)

# সেরা Hyperparameters এবং মডেল
print("Best Hyperparameters:", random_search.best_params_)
print("Best Accuracy:", random_search.best_score_)

এখানে, RandomizedSearchCV ব্যবহার করা হয়েছে যেখানে SVC (Support Vector Classifier) এর hyperparameters পছন্দ করা হয়েছে এবং সেগুলি র্যান্ডমভাবে পরীক্ষা করা হয়েছে। n_iter=100 মানে 100টি র্যান্ডম প্যারামিটার সেট পরীক্ষা করা হবে।


সারাংশ:

Hyperparameter Tuning হল মডেলটির পারফরম্যান্স উন্নত করার জন্য একটি গুরুত্বপূর্ণ প্রক্রিয়া। এখানে দুটি সাধারণ পদ্ধতি:

  • Grid Search: নির্দিষ্ট hyperparameters এর প্রতিটি সম্ভাব্য মান পরীক্ষা করে সেরা প্যারামিটার খুঁজে বের করা।
  • Random Search: হাইপারপ্যারামিটার স্পেসে র্যান্ডম স্যাম্পলিং করে, যা কিছু ক্ষেত্রে Grid Search এর চেয়ে দ্রুত এবং কার্যকর।

এছাড়া, আপনি Bayesian Optimization এবং Automated Hyperparameter Tuning টুলস (যেমন Optuna বা Hyperopt) ব্যবহার করে আরও উন্নত hyperparameter tuning করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...