Hyperparameter Optimization হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যা মডেলের কার্যকারিতা বাড়ানোর জন্য বিভিন্ন হাইপারপ্যারামিটারগুলির মান অনুসন্ধান করে। Grid Search এবং Random Search হল দুইটি সাধারণ কৌশল যা এই কাজের জন্য ব্যবহার করা হয়। নিচে এই দুটি কৌশলের বিস্তারিত আলোচনা করা হলো।
১. Grid Search
Grid Search হল একটি সিস্টেম্যাটিক পদ্ধতি যা একটি নির্দিষ্ট প্যারামিটার গ্রিড তৈরি করে এবং এই গ্রিডের প্রতিটি সম্ভাব্য সংমিশ্রণে মডেল প্রশিক্ষণ করে। এটি সমস্ত প্যারামিটার মানগুলির সমন্বয়ে একটি পূর্ণ অনুসন্ধান করে।
সুবিধা:
- সম্পূর্ণ অনুসন্ধান: এটি সমস্ত প্যারামিটার কম্বিনেশন পরীক্ষা করে, তাই সঠিক সমাধান পাওয়ার সম্ভাবনা বেশি।
- সহজ বাস্তবায়ন: সরাসরি স্কikit-learn-এর GridSearchCV ব্যবহার করে এটি সহজেই বাস্তবায়িত হয়।
অসুবিধা:
- সময় সাপেক্ষ: যদি প্যারামিটার স্পেস বড় হয়, তবে এটি সময়সাপেক্ষ হতে পারে।
- মেমরি ব্যবহার: বড় ডেটাসেটে এটি মেমরির উপর চাপ সৃষ্টি করতে পারে।
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
# মডেল এবং প্যারামিটার গ্রিড নির্ধারণ করা
model = RandomForestClassifier()
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [None, 10, 20],
'min_samples_split': [2, 5, 10]
}
# Grid Search বাস্তবায়ন করা
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)
# সেরা প্যারামিটার এবং স্কোর পাওয়া
print("Best parameters found: ", grid_search.best_params_)
print("Best cross-validation score: ", grid_search.best_score_)
২. Random Search
Random Search হল একটি প্রক্রিয়া যেখানে নির্ধারিত হাইপারপ্যারামিটার স্পেসের মধ্যে এলোমেলোভাবে বিভিন্ন প্যারামিটার মান নির্বাচন করা হয় এবং পরীক্ষা করা হয়। এটি গাণিতিকভাবে কিছু সম্ভাব্য সমন্বয় পরীক্ষা করে।
সুবিধা:
- দ্রুত: এটি দ্রুত প্যারামিটার সেটিংস পরীক্ষা করে, তাই বড় স্পেসের জন্য অধিক কার্যকর।
- অ্যালগরিদমিক সমাধান: কিছু ক্ষেত্রে এটি আরও ভাল ফলাফল দিতে পারে কারণ এটি স্থানীয় অপ্টিমাম থেকে বেরিয়ে আসতে পারে।
অসুবিধা:
- অংশবিশেষ পরীক্ষা: সমস্ত সম্ভাব্য সংমিশ্রণ পরীক্ষা না করার কারণে, সঠিক সমাধানটি পাওয়ার সম্ভাবনা কম।
- নির্বাচনের সম্ভাব্যতা: কিছু গুরুত্বপূর্ণ মান বাদ পড়তে পারে।
উদাহরণ:
from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import randint
# মডেল এবং প্যারামিটার বিতরণ নির্ধারণ করা
model = RandomForestClassifier()
param_dist = {
'n_estimators': randint(50, 200),
'max_depth': [None, 10, 20],
'min_samples_split': randint(2, 11)
}
# Random Search বাস্তবায়ন করা
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=100, cv=5, scoring='accuracy', random_state=42)
random_search.fit(X_train, y_train)
# সেরা প্যারামিটার এবং স্কোর পাওয়া
print("Best parameters found: ", random_search.best_params_)
print("Best cross-validation score: ", random_search.best_score_)
উপসংহার
Grid Search এবং Random Search উভয়ই হাইপারপ্যারামিটার অপটিমাইজেশনের জন্য কার্যকর কৌশল। Grid Search সঠিক এবং সম্পূর্ণ ফলাফল প্রদান করে, তবে এটি সময়সাপেক্ষ এবং সম্পদ সাপেক্ষ। অন্যদিকে, Random Search দ্রুত এবং কার্যকর, কিন্তু এটি সমস্ত সম্ভাব্য সংমিশ্রণ পরীক্ষা না করে। কোন পদ্ধতি ব্যবহার করবেন তা নির্ভর করে আপনার মডেল, ডেটাসেটের আকার এবং উপলব্ধ সময়ের উপর।
Read more