AdaBoost এবং Gradient Boosting হল দুটি জনপ্রিয় এনসেম্বল মেশিন লার্নিং অ্যালগরিদম যা একটি গ্রুপ বা দল হিসেবে অনেক弱 (weak) মডেল (অধিকাংশ ক্ষেত্রেই সিদ্ধান্ত ট্রি) ব্যবহার করে শক্তিশালী (strong) মডেল তৈরি করে। এনসেম্বল লার্নিং-এর এই দুটি পদ্ধতির মধ্যে পার্থক্য হল যে, AdaBoost মূলত প্রতিটি পরবর্তী মডেলকে পূর্ববর্তী মডেলের ভুলগুলো সংশোধন করতে উৎসাহিত করে, এবং Gradient Boosting ত্রুটি কমানোর জন্য গ্র্যাডিয়েন্ট ডিসেন্ট পদ্ধতি ব্যবহার করে।
এখানে AdaBoost এবং Gradient Boosting এর মাধ্যমে মডেল তৈরির উদাহরণ দেওয়া হলো।
১. AdaBoost Classifier
AdaBoost (Adaptive Boosting) হল একটি এনসেম্বল অ্যালগরিদম যা একাধিক ক্লাসিফায়ার বা মডেল একত্রিত করে এবং পরবর্তী মডেলটি পূর্ববর্তী মডেলগুলির ভুলগুলিকে ঠিক করতে চেষ্টা করে।
AdaBoost মডেল তৈরি:
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# ডেটাসেট লোড করা
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)
# AdaBoost Classifier তৈরি (Base estimator হিসেবে Decision Tree ব্যবহার)
base_estimator = DecisionTreeClassifier(max_depth=1) # weak learner
model = AdaBoostClassifier(base_estimator=base_estimator, n_estimators=50)
# মডেল প্রশিক্ষণ
model.fit(X_train, y_train)
# পূর্বানুমান
y_pred = model.predict(X_test)
# Accuracy দেখানো
print(f"AdaBoost Accuracy: {accuracy_score(y_test, y_pred)}")
এখানে:
- DecisionTreeClassifier একটি weak learner হিসেবে ব্যবহার করা হয়েছে।
AdaBoostClassifier৫০টি weak learner নিয়ে মডেল তৈরি করেছে।accuracy_scoreদিয়ে মডেলটি টেস্ট ডেটার ওপর accuracy পরিমাপ করা হয়েছে।
২. Gradient Boosting Classifier
Gradient Boosting একটি শক্তিশালী এনসেম্বল অ্যালগরিদম যা একাধিক weak learners (সাধারণত Decision Tree) ব্যবহার করে এবং প্রতিটি নতুন মডেল তার পূর্ববর্তী মডেলের ত্রুটি কমানোর চেষ্টা করে। এটি গ্র্যাডিয়েন্ট ডিসেন্ট ব্যবহার করে ত্রুটি (loss) কমানোর জন্য কাজ করে।
Gradient Boosting মডেল তৈরি:
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# ডেটাসেট লোড করা
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)
# Gradient Boosting Classifier তৈরি
model_gb = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3)
# মডেল প্রশিক্ষণ
model_gb.fit(X_train, y_train)
# পূর্বানুমান
y_pred_gb = model_gb.predict(X_test)
# Accuracy দেখানো
print(f"Gradient Boosting Accuracy: {accuracy_score(y_test, y_pred_gb)}")
এখানে:
- GradientBoostingClassifier মডেলটি ১০০টি weak learners নিয়ে তৈরি করা হয়েছে এবং
learning_rate=0.1এবংmax_depth=3দিয়ে hyperparameters নির্ধারণ করা হয়েছে। accuracy_scoreদিয়ে মডেলটির accuracy যাচাই করা হয়েছে।
সারাংশ
- AdaBoost এবং Gradient Boosting হল শক্তিশালী এনসেম্বল মেশিন লার্নিং অ্যালগরিদম, যেগুলি একাধিক weak learners (প্রধানত Decision Trees) ব্যবহার করে এবং ধীরে ধীরে তাদের ত্রুটি কমিয়ে শক্তিশালী মডেল তৈরি করে।
- AdaBoost মডেলগুলির মধ্যে weights অ্যাসাইন করে এবং প্রতিটি পরবর্তী মডেল পূর্ববর্তী মডেলের ভুলগুলো ঠিক করার চেষ্টা করে।
- Gradient Boosting গ্র্যাডিয়েন্ট ডিসেন্ট পদ্ধতি ব্যবহার করে মডেল প্রশিক্ষণ করে এবং ত্রুটি কমানোর জন্য প্রতিটি নতুন মডেল তৈরি করে।
এই মডেলগুলি সাধারণত শক্তিশালী এবং সঠিক ফলাফল দেয়, বিশেষ করে কম্পিউটেশনাল বাজেট এবং সময় সীমিত থাকা অবস্থায়।