Bagging এবং Boosting এর ব্যবহার

Ensemble Learning - পাইথন দিয়ে মেশিন লার্নিং (Machine Learning with Python) - Machine Learning

356

Bagging এবং Boosting হল দুটি জনপ্রিয় এনসেম্বল লার্নিং পদ্ধতি যা মেশিন লার্নিং মডেলের পারফরম্যান্স উন্নত করতে ব্যবহৃত হয়। দুটি পদ্ধতিই একাধিক মডেল তৈরি করে এবং তাদের আউটপুট একত্রিত করে একটি চূড়ান্ত সিদ্ধান্তে পৌঁছায়, তবে তাদের কাজের পদ্ধতি এবং উদ্দেশ্য আলাদা।

১. Bagging (Bootstrap Aggregating)

Bagging হল একটি এনসেম্বল লার্নিং কৌশল যা একাধিক মডেল তৈরি করে এবং তাদের আউটপুটকে একত্রিত করে। এর মূল লক্ষ্য হল ভেরিয়েন্স কমানো এবং মডেলটিকে আরও স্থিতিশীল করা।

Bagging এর কাজের পদ্ধতি:

  1. Bootstrap Sampling:
    • ডেটাসেট থেকে র্যান্ডম স্যাম্পলিং করা হয় (Bootstrap), যেখানে একটি স্যাম্পল নির্বাচিত হয় এবং একাধিকবার পুনরায় স্যাম্পল করা হয়। এতে ডেটার কিছু অংশ পুনরায় নির্বাচিত হয় এবং কিছু অংশ বাদ পড়তে পারে।
  2. একাধিক মডেল তৈরি:
    • প্রতিটি স্যাম্পলের জন্য একটি মডেল তৈরি করা হয় এবং এটি পৃথকভাবে প্রশিক্ষিত হয়।
  3. আউটপুট একত্রিত করা:
    • ক্লাসিফিকেশন টাস্কে, ভোটিং পদ্ধতি (majority voting) ব্যবহার করা হয়, যেখানে প্রতিটি মডেল একটি ভোট প্রদান করে এবং সর্বাধিক ভোট পাওয়া সিদ্ধান্ত গ্রহণ করা হয়।
    • রিগ্রেশন টাস্কে, প্রতিটি মডেলের আউটপুটের গড় নেওয়া হয়।

Bagging এর ব্যবহার:

  • Random Forest: Bagging এর সবচেয়ে জনপ্রিয় উদাহরণ হল Random Forest। এটি অনেক ডিসিশন ট্রি তৈরি করে এবং তাদের আউটপুট একত্রিত করে চূড়ান্ত সিদ্ধান্ত নেয়।

Bagging এর সুবিধা:

  • ভেরিয়েন্স কমায়: একাধিক মডেল ব্যবহার করার কারণে মডেলের পারফরম্যান্স বেশি স্থিতিশীল হয় এবং ওভারফিটিং কম হয়।
  • সহজ বাস্তবায়ন: একাধিক মডেলকে সহজভাবে একত্রিত করা যায়।

উদাহরণ:

Random Forest হল Bagging এর একটি কৌশল যা ডিসিশন ট্রি ব্যবহার করে:

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Iris ডেটাসেট লোড করা
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)

# Random Forest মডেল তৈরি করা
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

# ভবিষ্যদ্বাণী করা
y_pred = model.predict(X_test)

# মডেল মূল্যায়ন
print("Accuracy:", accuracy_score(y_test, y_pred))

২. Boosting

Boosting একটি শক্তিশালী এনসেম্বল লার্নিং কৌশল যা একটি সিরিজ আকারে মডেল তৈরি করে এবং পরবর্তী মডেলটির ফোকাস আগের মডেলের ভুলগুলোর ওপর থাকে। এর লক্ষ্য হল বায়াস কমানো এবং মডেলটির পারফরম্যান্স উন্নত করা।

Boosting এর কাজের পদ্ধতি:

  1. সিরিজ আকারে মডেল তৈরি:
    • প্রথম মডেলটি প্রশিক্ষিত হয় এবং তার আউটপুট তৈরি করা হয়। তারপর, পরবর্তী মডেলটি প্রথম মডেলটির ভুল (mistakes) এবং ভুল সিদ্ধান্তের ওপর ভিত্তি করে প্রশিক্ষিত হয়।
  2. ভুল ডেটা পয়েন্টের ওজন বাড়ানো:
    • পরবর্তী মডেলটির জন্য ভুলভাবে শ্রেণীবদ্ধ ডেটা পয়েন্টগুলির ওজন বৃদ্ধি করা হয়, যাতে এগুলি পরবর্তী মডেলের প্রশিক্ষণে বেশি গুরুত্ব পায়।
  3. মডেল একত্রিত করা:
    • প্রতিটি মডেল একটি ভ weighs থাকে এবং তাদের আউটপুট একত্রিত করে চূড়ান্ত সিদ্ধান্ত নেয়া হয়। ক্লাসিফিকেশনে, ভোটিং পদ্ধতি ব্যবহার করা হয় এবং রিগ্রেশন টাস্কে গড় নেয়া হয়।

Boosting এর ব্যবহার:

  • AdaBoost (Adaptive Boosting)
  • Gradient Boosting
  • XGBoost
  • LightGBM

Boosting এর সুবিধা:

  • বায়াস কমায়: একাধিক মডেল ব্যবহার করে, এটি বায়াস কমাতে সাহায্য করে এবং সাধারণত খুব ভালো পারফরম্যান্স দেয়।
  • নিখুঁত সিদ্ধান্ত নেওয়া: পরবর্তী মডেল পূর্ববর্তী মডেলের ভুলগুলোর ওপর ফোকাস করে এবং সেগুলো ঠিক করতে সহায়তা করে।
  • কোনো নির্দিষ্ট ফিচারের ওপর বেশি গুরুত্ব দেওয়া: Boosting অ্যালগরিদম ভুল শ্রেণীভুক্ত পয়েন্টগুলির ওপর বেশি গুরুত্ব দেয়।

উদাহরণ:

AdaBoost হল Boosting এর একটি উদাহরণ:

from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Iris ডেটাসেট লোড করা
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 মডেল তৈরি করা
model = AdaBoostClassifier(n_estimators=50)
model.fit(X_train, y_train)

# ভবিষ্যদ্বাণী করা
y_pred = model.predict(X_test)

# মডেল মূল্যায়ন
print("Accuracy:", accuracy_score(y_test, y_pred))

Bagging এবং Boosting এর তুলনা

বৈশিষ্ট্যBaggingBoosting
মডেল তৈরিএকাধিক মডেল সমান্তরালভাবে তৈরি হয়একাধিক মডেল সিরিজ আকারে তৈরি হয়
ফোকাসপ্রতিটি মডেল ডেটার স্যাম্পল থেকে শেখেপরবর্তী মডেলটি আগের মডেলের ভুলগুলোর ওপর ফোকাস করে
পারফরম্যান্সভেরিয়েন্স কমায়, ওভারফিটিং কমায়বায়াস কমায়, শক্তিশালী পারফরম্যান্স দেয়
ব্যবহারRandom Forest, Bagging ClassifierAdaBoost, Gradient Boosting, XGBoost
গণনা জটিলতাকম জটিলবেশি জটিল

সারাংশ:

  • Bagging মূলত ভেরিয়েন্স কমানোর দিকে ফোকাস করে এবং একাধিক মডেল সমান্তরালভাবে প্রশিক্ষিত হয়। এর উদাহরণ হল Random Forest
  • Boosting মূলত বায়াস কমানোর দিকে ফোকাস করে এবং একাধিক মডেল সিরিজ আকারে প্রশিক্ষিত হয়, যেখানে প্রতিটি নতুন মডেল পূর্ববর্তী মডেলের ভুল সংশোধন করে। এর উদাহরণ হল AdaBoost এবং XGBoost
  • Bagging সাধারণত খুব দ্রুত এবং সহজ, তবে Boosting অধিক পারফরম্যান্স প্রদান করে, যদিও এটি বেশি জটিল হতে পারে।
Content added By
Promotion

Are you sure to start over?

Loading...