Grid Search এবং Random Search

Hyperparameter Tuning এবং Optimization - পাইথন ডিপ লার্নিং (Python Deep Learning) - Machine Learning

300

Grid Search এবং Random Search হল দুটি জনপ্রিয় হাইপারপ্যারামিটার টিউনিং পদ্ধতি যা মেশিন লার্নিং মডেলের পারফরম্যান্স উন্নত করতে ব্যবহৃত হয়। এগুলি বিভিন্ন হাইপারপ্যারামিটারের মান খুঁজে বের করার জন্য ব্যবহৃত হয় যাতে মডেলটির সর্বোচ্চ কার্যকারিতা পাওয়া যায়। নিচে প্রতিটি পদ্ধতির বিস্তারিত আলোচনা করা হলো:


1. Grid Search:

Grid Search হল একটি অনুসন্ধান পদ্ধতি যেখানে সমস্ত সম্ভাব্য হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করা হয়। এটি সমস্ত possible hyperparameter combinations এর একটি grid তৈরি করে এবং প্রতিটি কম্বিনেশনের জন্য মডেল প্রশিক্ষণ করে এবং যাচাই করে। এর মাধ্যমে একটি সুনির্দিষ্টভাবে চিহ্নিত করা optimal hyperparameter set পাওয়া যায়।

Grid Search এর কাজের প্রক্রিয়া:

  1. প্রথমে, আপনি একাধিক হাইপারপ্যারামিটার এবং তাদের সম্ভাব্য মান চয়ন করেন। যেমন:
    • Batch size: [32, 64, 128]
    • Epochs: [10, 50, 100]
    • Learning rate: [0.001, 0.01, 0.1]
  2. পরবর্তীতে, এই সমস্ত সম্ভাব্য কম্বিনেশন দ্বারা একটি গ্রিড তৈরি করা হয় এবং সব কম্বিনেশন নিয়ে মডেল প্রশিক্ষণ করা হয়।
  3. প্রতিটি কম্বিনেশন মূল্যায়ন করার পর, সেই প্যারামিটার সেটটি নির্বাচন করা হয় যা সবচেয়ে ভালো cross-validation score প্রদান করে।

Grid Search এর সুবিধা:

  • Exhaustive Search: এটি সমস্ত প্যারামিটার এবং তাদের মানের সমস্ত সম্ভাব্য সমন্বয় পরীক্ষা করে, সুতরাং আপনি নিশ্চিত হতে পারেন যে আপনি সেরা হাইপারপ্যারামিটার পেয়েছেন।
  • সঠিক ফলাফল: এর মাধ্যমে মডেলের পারফরম্যান্স সর্বাধিক করা সম্ভব।

Grid Search এর সীমাবদ্ধতা:

  • সময়সাপেক্ষ: সমস্ত প্যারামিটার কম্বিনেশন পরীক্ষা করা প্রয়োজন, যা বড় ডেটাসেট এবং অনেক প্যারামিটার থাকলে সময়সাপেক্ষ হতে পারে।
  • মেমরি খরচ: অনেক কম্বিনেশন পরীক্ষা করার জন্য অধিক মেমরি এবং সঞ্চয় শক্তির প্রয়োজন।

Grid Search এর উদাহরণ (Scikit-learn):

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

# হাইপারপ্যারামিটার গ্রিড
param_grid = {
    'n_estimators': [10, 50, 100],
    'max_depth': [5, 10, 20],
    'min_samples_split': [2, 5, 10]
}

# RandomForestClassifier তৈরি করা
rf = RandomForestClassifier()

# GridSearchCV তৈরি করা
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=3)

# মডেল প্রশিক্ষণ
grid_search.fit(X_train, y_train)

# সেরা প্যারামিটার সেট
print(grid_search.best_params_)

2. Random Search:

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

Random Search এর কাজের প্রক্রিয়া:

  1. প্রথমে, আপনি যে সমস্ত হাইপারপ্যারামিটার এবং তাদের মান পরীক্ষা করতে চান তা চয়ন করেন।
  2. তারপর, এলোমেলোভাবে কিছু হাইপারপ্যারামিটার সেট নির্বাচন করা হয় এবং সেগুলোর উপর মডেল প্রশিক্ষণ করা হয়। এটি একটি নির্দিষ্ট number of iterations পর্যন্ত করা হয়, এবং প্রতিটি iteration শেষে মডেলটি মূল্যায়ন করা হয়।
  3. সব শেষে, best-performing hyperparameter কম্বিনেশন নির্বাচন করা হয়।

Random Search এর সুবিধা:

  • দ্রুত: অনেক কম্বিনেশন পরীক্ষিত হলেও, এটি Grid Search এর তুলনায় দ্রুত কাজ করে, কারণ এটি কম সংখ্যক প্যারামিটার পরীক্ষা করে।
  • বৃহৎ পরিসরের জন্য উপযুক্ত: যখন হাইপারপ্যারামিটার স্পেস বিশাল হয়, তখন র্যান্ডম সার্চ বেশি কার্যকরী হতে পারে, কারণ এটি সম্ভাব্য সকল মানের পরীক্ষা না করে এলোমেলোভাবে ভাল মান খুঁজে পেতে সাহায্য করে।
  • কম্পিউটেশনালভাবে কার্যকর: এটি সময় এবং শক্তি বাঁচাতে সহায়ক হতে পারে, বিশেষত যখন প্যারামিটার স্পেস খুব বড়।

Random Search এর সীমাবদ্ধতা:

  • সুনির্দিষ্ট ফলাফল নাও হতে পারে: সমস্ত প্যারামিটার কম্বিনেশন পরীক্ষা করা না হলে, কখনও কখনও আপনি optimal প্যারামিটার সেটটি মিস করতে পারেন।
  • প্রযুক্তিগত বিশ্লেষণের অভাব: আপনি যদি সমস্ত প্যারামিটার নির্বাচন না করেন, তবে আপনি সঠিক হাইপারপ্যারামিটার কনফিগারেশন সম্পর্কে নিশ্চিত হতে পারবেন না।

Random Search এর উদাহরণ (Scikit-learn):

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

# হাইপারপ্যারামিটার গ্রিড
param_dist = {
    'n_estimators': randint(10, 100),
    'max_depth': randint(5, 20),
    'min_samples_split': randint(2, 10)
}

# RandomForestClassifier তৈরি করা
rf = RandomForestClassifier()

# RandomizedSearchCV তৈরি করা
random_search = RandomizedSearchCV(estimator=rf, param_distributions=param_dist, n_iter=10, cv=3)

# মডেল প্রশিক্ষণ
random_search.fit(X_train, y_train)

# সেরা প্যারামিটার সেট
print(random_search.best_params_)

Grid Search vs Random Search:

বিষয়Grid SearchRandom Search
প্রক্রিয়াসমস্ত সম্ভাব্য হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করা।এলোমেলোভাবে কিছু কম্বিনেশন পরীক্ষা করা।
সময়ধীর, কারণ সমস্ত সম্ভাব্য কম্বিনেশন পরীক্ষা করা হয়।দ্রুত, কারণ শুধুমাত্র কিছু কম্বিনেশন পরীক্ষা করা হয়।
কম্বিনেশন সংখ্যাসকল হাইপারপ্যারামিটার সেটের সম্ভাব্য কম্বিনেশন পরীক্ষা।এলোমেলোভাবে ছোট সংখ্যা কম্বিনেশন পরীক্ষা।
ভাল পারফরম্যান্স নিশ্চিত100% নিশ্চিত ফলাফল, কারণ সমস্ত কম্বিনেশন পরীক্ষা করা হয়।অপ্টিমাল প্যারামিটার ছাড়া ফলাফল পাওয়া যায়।
প্রযুক্তিগত বিশ্লেষণসঠিকভাবে প্রতিটি প্যারামিটার পরীক্ষা করা হয়।সম্ভবত সেরা ফলাফল না পাওয়ার ঝুঁকি থাকতে পারে।
বৃহৎ ডেটা বা স্পেসে উপযুক্তছোট এবং সুনির্দিষ্ট ডেটা সমস্যা।বড় বা অস্থির ডেটা স্পেসে দ্রুত ফলাফল দেওয়া সম্ভব।

সারাংশ:

Grid Search একটি exhaustive অনুসন্ধান পদ্ধতি, যা সমস্ত সম্ভাব্য হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করে, তবে এটি অনেক সময় এবং কম্পিউটেশনাল শক্তি নষ্ট করতে পারে। অন্যদিকে, Random Search এলোমেলোভাবে কিছু কম্বিনেশন পরীক্ষা করে এবং এটি দ্রুত এবং কম্পিউটেশনালভাবে দক্ষ হতে পারে, বিশেষত বড় বা জটিল ডেটা সমস্যা সমাধানে। আপনি যদি optimum প্যারামিটার সেট খুঁজতে চান এবং আপনার সময় বা কম্পিউটেশনাল রিসোর্স সীমিত থাকে, তবে Random Search একটি ভাল বিকল্প হতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...