Grid Search এবং Random Search ব্যবহার করে Hyperparameter Tuning

Hyperparameter Tuning এবং Optimization - ক্যাফে২ (Caffe2) - Machine Learning

294

Grid Search এবং Random Search হল দুটি জনপ্রিয় কৌশল যা মেশিন লার্নিং মডেলের hyperparameter tuning করতে ব্যবহৃত হয়। Hyperparameters এমন প্যারামিটার যা মডেল ট্রেনিংয়ের আগে সেট করতে হয় এবং এগুলি মডেলের কার্যকারিতা উল্লেখযোগ্যভাবে প্রভাবিত করে। উদাহরণস্বরূপ, লার্নিং রেট, ব্যাচ সাইজ, নেস্টেড লেয়ার সংখ্যা, ইত্যাদি।

১. Grid Search

Grid Search একটি ব্রুট ফোর্স কৌশল যা নির্দিষ্ট একটি প্যারামিটার গ্রিডের প্রতিটি সমন্বয়ে মডেল ট্রেনিং করে এবং সর্বোত্তম পারফরম্যান্স প্রদানকারী প্যারামিটার সেটটি নির্বাচন করে। এটি একটি শীতল (exhaustive) পদ্ধতি, যেখানে সবকটি প্যারামিটার সমন্বয়ের জন্য ট্রেনিং করা হয়।

Grid Search এর পদ্ধতি:

  • প্রথমে মডেলের জন্য সম্ভাব্য hyperparameter মানের একটি পরিসর (range) নির্ধারণ করুন।
  • তারপর, grid search প্রতিটি সম্ভাব্য প্যারামিটার সমন্বয় ব্যবহার করে মডেল ট্রেনিং করে এবং একটি স্কোর মেট্রিক্স (যেমন accuracy) ব্যবহার করে সেরা প্যারামিটার সেট নির্বাচন করে।

Grid Search উদাহরণ (Scikit-learn ব্যবহার করে):

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

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

# Hyperparameter গ্রিড সেট করা
param_grid = {
    'n_estimators': [100, 200, 300],  # Number of trees
    'max_depth': [None, 10, 20, 30],   # Max depth of tree
    'min_samples_split': [2, 5, 10]    # Min samples required to split a node
}

# Grid Search এর মাধ্যমে হাইপারপ্যারামিটার টিউনিং
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5)
grid_search.fit(X_train, y_train)

# সেরা প্যারামিটার সেট পাওয়া
print("Best Hyperparameters:", grid_search.best_params_)

এখানে,

  • param_grid হল hyperparameters এর একটি গ্রিড, যেখানে প্রতিটি প্যারামিটার জন্য একাধিক মান প্রদান করা হয়।
  • cv=5 মানে ক্রস-ভ্যালিডেশন ৫ ফোল্ডে হবে।
  • grid_search.best_params_ সেরা hyperparameters প্রদান করবে।

২. Random Search

Random Search হল একটি কৌশল যেখানে প্যারামিটার স্পেস থেকে এলোমেলোভাবে মান নির্বাচন করা হয় এবং একটি নির্দিষ্ট সংখ্যক iteration (trial) পর পরীক্ষিত হয়। এটি Grid Search এর তুলনায় অনেক বেশি কার্যকরী হতে পারে যখন প্যারামিটার স্পেস বিশাল হয় এবং exhaustive অনুসন্ধান করা সম্ভব নয়।

Random Search এর পদ্ধতি:

  • Grid Search এর মতোই, প্রথমে hyperparameters এর একটি পরিসর নির্ধারণ করুন।
  • তারপর এলোমেলোভাবে কিছু প্যারামিটার সেট নির্বাচন করুন এবং মডেল ট্রেনিং করুন।
  • সাধারণত, Random Search অনেক কম সময় নেয় কারণ এটি শুধুমাত্র এলোমেলোভাবে কিছু কম্বিনেশন পরীক্ষা করে।

Random Search উদাহরণ (Scikit-learn ব্যবহার করে):

from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import randint

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

# Hyperparameter ডিস্ট্রিবিউশন সেট করা
param_dist = {
    'n_estimators': randint(100, 1000),  # Random values between 100 and 1000
    'max_depth': [None, 10, 20, 30],
    'min_samples_split': randint(2, 10)  # Random values between 2 and 10
}

# Random Search এর মাধ্যমে হাইপারপ্যারামিটার টিউনিং
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=100, cv=5)
random_search.fit(X_train, y_train)

# সেরা প্যারামিটার সেট পাওয়া
print("Best Hyperparameters:", random_search.best_params_)

এখানে,

  • param_dist হল hyperparameters এর এলোমেলো ডিস্ট্রিবিউশন।
  • n_iter=100 মানে ১০০টি এলোমেলো প্যারামিটার সেটের জন্য পরীক্ষা করা হবে।
  • random_search.best_params_ সেরা প্যারামিটার সেট প্রদান করবে।

Grid Search vs Random Search:

বৈশিষ্ট্যGrid SearchRandom Search
পদ্ধতিExhaustive (সব সম্ভাব্য কম্বিনেশন পরীক্ষা করে)এলোমেলোভাবে কিছু কম্বিনেশন পরীক্ষা করা
পারফরম্যান্সসাধারণত সঠিক তবে সময়সাপেক্ষদ্রুত, তবে সঠিকতা কিছুটা কম হতে পারে
প্রয়োজনীয় সময়অনেক সময় নেয় (বিশাল প্যারামিটার স্পেসের জন্য বেশি সময় নেয়)অনেক দ্রুত, কিন্তু উপযুক্ত প্যারামিটার পাওয়ার সম্ভাবনা কম হতে পারে
প্যারামিটার স্পেসছোট এবং সীমিত প্যারামিটার স্পেসে কার্যকরবড় প্যারামিটার স্পেসের জন্য উপযুক্ত
ব্যবহারযোগ্যতাযখন প্যারামিটার স্পেস ছোট এবং আপনি সঠিক প্যারামিটার চানবড় প্যারামিটার স্পেসের জন্য যেখানে exhaustive পরীক্ষা করা সম্ভব নয়

কখন Grid Search ব্যবহার করবেন?

  • যখন প্যারামিটার স্পেস ছোট এবং আপনি সেরা সেটটি নির্বাচন করতে চান।
  • যখন আপনি নিশ্চিত হতে চান যে সেরা প্যারামিটার সেট নির্বাচিত হচ্ছে।

কখন Random Search ব্যবহার করবেন?

  • যখন প্যারামিটার স্পেস বড় বা অনেক ভেরিয়েবল থাকে এবং exhaustive পরীক্ষা করা সম্ভব নয়।
  • যখন সময় সীমিত থাকে এবং আপনি দ্রুত ভাল ফলাফল চান।

সারাংশ:

  • Grid Search একটি exhaustive কৌশল যা সকল সম্ভব প্যারামিটার কম্বিনেশন পরীক্ষা করে সেরা সমাধান খুঁজে বের করে।
  • Random Search এলোমেলোভাবে কিছু প্যারামিটার কম্বিনেশন পরীক্ষা করে এবং দ্রুত কার্যকরী ফলাফল প্রদান করতে সক্ষম।
Content added By
Promotion

Are you sure to start over?

Loading...