Hyperparameters হলো মডেল ট্রেনিংয়ের সময় পূর্বনির্ধারিত প্যারামিটার, যা মডেলের আচরণ, দক্ষতা এবং কার্যকারিতা প্রভাবিত করে। মডেল প্রশিক্ষণের সময় এগুলোর মান নির্ধারণ করতে হয়, কারণ এগুলি মডেলের ভেতরের প্রসেসিং কন্ট্রোল করে। সঠিকভাবে Hyperparameters টিউন করলে মডেলের কর্মক্ষমতা এবং জেনারালাইজেশন উল্লেখযোগ্যভাবে উন্নত হয়।
Hyperparameters কী?
Hyperparameters হলো মডেলের বাইরে থাকা প্যারামিটার, যা প্রশিক্ষণের সময় নির্ধারিত থাকে এবং ডেটার ওপর সরাসরি নির্ভর করে না। এগুলি মডেল ট্রেনিং শুরু হওয়ার আগে সেট করা হয় এবং মডেল ট্রেনিংয়ের সময় পরিবর্তিত হয় না। Hyperparameters-এর মাধ্যমে মডেলের লার্নিং প্রক্রিয়া নিয়ন্ত্রণ করা যায়।
XGBoost-এর জন্য সাধারণ Hyperparameters
XGBoost-এর কিছু গুরুত্বপূর্ণ Hyperparameters হলো:
max_depth:
- এটি প্রতিটি Decision Tree-এর সর্বাধিক গভীরতা নির্ধারণ করে। বড় গভীরতার ট্রী মডেলকে আরও জটিল করে এবং ওভারফিটিংয়ের ঝুঁকি বাড়ায়।
- উদাহরণ:
max_depth = 3
eta (learning_rate):
- এটি গ্রেডিয়েন্ট বুস্টিং প্রক্রিয়ায় স্টেপ সাইজ নির্ধারণ করে। লার্নিং রেট ছোট হলে মডেল ধীরে ধীরে শেখে, যা জেনারালাইজেশন ভালো করতে সাহায্য করে।
- উদাহরণ:
eta = 0.1
n_estimators (num_boost_round):
- এটি নির্ধারণ করে যে কয়টি বুস্টিং রাউন্ড হবে বা কয়টি Decision Tree তৈরি হবে। সাধারণত এটি যত বেশি হয়, মডেল তত ভালো ফলাফল দেয়, তবে বেশি করলে ওভারফিটিংয়ের সম্ভাবনা থাকে।
- উদাহরণ:
n_estimators = 100
subsample:
- এটি নির্ধারণ করে যে প্রতিটি Decision Tree প্রশিক্ষণের জন্য কত শতাংশ ডেটা ব্যবহার করা হবে। এটি সাধারণত ওভারফিটিং কমাতে ব্যবহৃত হয়।
- উদাহরণ:
subsample = 0.8
colsample_bytree:
- এটি প্রতিটি ট্রী তৈরির সময় কত শতাংশ ফিচার ব্যবহার করা হবে তা নির্ধারণ করে। এটি ডাইভার্সিটি বাড়িয়ে ওভারফিটিং কমায়।
- উদাহরণ:
colsample_bytree = 0.8
gamma:
- এটি একটি Decision Tree-এর বিভাজন (split) নির্ধারণের জন্য ব্যবহৃত হয়। যদি গামা মান বাড়ানো হয়, তাহলে মডেলটি কম কম্প্লেক্স বিভাজন করবে।
- উদাহরণ:
gamma = 0
lambda (L2 regularization term) এবং alpha (L1 regularization term):
- এগুলি রেগুলারাইজেশন প্যারামিটার, যা ওভারফিটিং নিয়ন্ত্রণ করতে সাহায্য করে। L1 রেগুলারাইজেশন মডেলকে স্পারসিটি বজায় রাখতে সাহায্য করে, আর L2 রেগুলারাইজেশন ওভারফিটিং কমাতে কার্যকর।
- উদাহরণ:
lambda = 1.0,alpha = 0.0
Hyperparameter টিউনিং কৌশলসমূহ
Hyperparameter টিউনিং হলো মডেলের কর্মক্ষমতা বাড়ানোর জন্য প্যারামিটারগুলোর সঠিক মান নির্ধারণ করা। Hyperparameter টিউনিং সাধারণত সময়সাপেক্ষ প্রক্রিয়া, কিন্তু সঠিক কৌশল ব্যবহার করে এটি আরও কার্যকর করা যায়।
১. Grid Search
Grid Search একটি প্রচলিত এবং জনপ্রিয় পদ্ধতি, যেখানে নির্দিষ্ট Hyperparameters-এর সম্ভাব্য মানগুলির একটি গ্রিড তৈরি করা হয়। এরপর মডেল প্রশিক্ষণ দিয়ে প্রতিটি কম্বিনেশনের কর্মক্ষমতা যাচাই করা হয় এবং সর্বোত্তম প্যারামিটার সেট নির্বাচন করা হয়।
উদাহরণ (Python কোড):
from sklearn.model_selection import GridSearchCV
from xgboost import XGBClassifier
# মডেল তৈরি
xgb_model = XGBClassifier()
# প্যারামিটার গ্রিড নির্ধারণ
param_grid = {
'max_depth': [3, 4, 5],
'learning_rate': [0.01, 0.1, 0.2],
'n_estimators': [50, 100, 150],
'subsample': [0.7, 0.8, 1.0]
}
# Grid Search ব্যবহার করে টিউনিং
grid_search = GridSearchCV(estimator=xgb_model, param_grid=param_grid, cv=3, scoring='accuracy')
grid_search.fit(X_train, y_train)
# সেরা প্যারামিটার এবং স্কোর দেখানো
print("Best Parameters:", grid_search.best_params_)
print("Best Score:", grid_search.best_score_)
- ব্যাখ্যা:
- Grid Search প্রক্রিয়ায় প্রতিটি প্যারামিটারের সম্ভাব্য মানগুলির একটি গ্রিড তৈরি করা হয়।
GridSearchCVমডেলের ওপর ক্রস-ভ্যালিডেশন করে সেরা প্যারামিটার সেট নির্বাচন করে।
২. Randomized Search
Randomized Search একটি দ্রুততর পদ্ধতি, যেখানে Hyperparameters-এর একটি রেঞ্জ নির্ধারণ করা হয় এবং এলোমেলোভাবে কিছু কম্বিনেশন পরীক্ষা করা হয়। এটি Grid Search-এর চেয়ে কম সময় নেয় এবং বড় ডেটাসেটের ক্ষেত্রে কার্যকর।
উদাহরণ (Python কোড):
from sklearn.model_selection import RandomizedSearchCV
from xgboost import XGBClassifier
import scipy.stats as st
# মডেল তৈরি
xgb_model = XGBClassifier()
# প্যারামিটার রেঞ্জ নির্ধারণ
param_dist = {
'max_depth': st.randint(3, 10),
'learning_rate': st.uniform(0.01, 0.2),
'n_estimators': st.randint(50, 200),
'subsample': st.uniform(0.7, 1.0)
}
# Randomized Search ব্যবহার করে টিউনিং
random_search = RandomizedSearchCV(estimator=xgb_model, param_distributions=param_dist, n_iter=50, cv=3, scoring='accuracy')
random_search.fit(X_train, y_train)
# সেরা প্যারামিটার এবং স্কোর দেখানো
print("Best Parameters:", random_search.best_params_)
print("Best Score:", random_search.best_score_)
- ব্যাখ্যা:
- Randomized Search Hyperparameters-এর জন্য একটি রেঞ্জ নির্ধারণ করে এবং এলোমেলোভাবে কম্বিনেশন পরীক্ষা করে।
- এটি কম ইটারেশনেই কার্যকর ফলাফল দিতে সক্ষম।
৩. Bayesian Optimization
Bayesian Optimization একটি উন্নত টিউনিং পদ্ধতি, যেখানে প্রতিটি ইটারেশনের ফলাফল ব্যবহার করে Hyperparameters-এর মান পূর্বানুমান করা হয়। এটি আগের ইটারেশনের ফলাফল থেকে শিখে এবং পরবর্তী প্যারামিটার সেট নির্ধারণ করে, যা Grid বা Randomized Search-এর চেয়ে কার্যকর।
- প্রয়োজনীয় লাইব্রেরি:
hyperopt,optunaইত্যাদি টুলস ব্যবহার করে Bayesian Optimization করা যায়।
৪. Automated Machine Learning (AutoML)
AutoML টুলস (যেমন H2O, TPOT, AutoKeras) Hyperparameter টিউনিং প্রক্রিয়া স্বয়ংক্রিয় করতে পারে। এটি বিভিন্ন Hyperparameter সেট পরীক্ষা করে এবং মডেল টিউন করে। এটি সময় সাশ্রয়ী এবং বড় ডেটাসেটের জন্য কার্যকর।
বেস্ট প্র্যাকটিস
- Cross-Validation ব্যবহার করা:
- টিউনিংয়ের সময় ক্রস-ভ্যালিডেশন ব্যবহার করে মডেলের জেনারালাইজেশন যাচাই করা উচিত।
- Hyperparameter রেঞ্জ নির্বাচন করা:
- Hyperparameter রেঞ্জ সঠিকভাবে নির্ধারণ করা উচিত, যাতে Grid Search বা Randomized Search যথাযথভাবে কাজ করতে পারে।
- এনসেম্বল মডেল এবং ব্যাগিং ব্যবহার করা:
- বিভিন্ন প্যারামিটার কম্বিনেশনের ফলাফল একত্রিত করে এনসেম্বল মডেল তৈরি করা যেতে পারে, যা মডেলের পারফরম্যান্স উন্নত করতে সহায়ক।
উপসংহার
Hyperparameters মডেলের কর্মক্ষমতা এবং জেনারালাইজেশন প্রভাবিত করে। সঠিক Hyperparameter টিউনিং কৌশল ব্যবহার করে মডেলের নির্ভুলতা এবং কার্যকারিতা উন্নত করা যায়। Grid Search, Randomized Search, এবং Bayesian Optimization-এর মতো কৌশল ব্যবহার করে Hyperparameters টিউন করা যায়, যা মডেল টিউনিং প্রক্রিয়াকে দ্রুত এবং কার্যকর করে তোলে।
Read more