Hyperparameter Tuning এর বাস্তব উদাহরণ

মডেল টিউনিং এবং Hyperparameter Optimization - পাইথনে লজিস্টিক রিগ্রেশন (Logistic Regression in Python) - Machine Learning

308

Hyperparameter Tuning হল মেশিন লার্নিং মডেলের পারফরম্যান্স উন্নত করার জন্য মডেলের হাইপারপ্যারামিটার গুলির উপযুক্ত মান নির্বাচন করার প্রক্রিয়া। হাইপারপ্যারামিটারগুলি এমন প্যারামিটার যা মডেল ট্রেনিংয়ের আগে সেট করা হয় এবং এটি মডেলের আউটপুট বা পারফরম্যান্সকে প্রভাবিত করে। সঠিক হাইপারপ্যারামিটার নির্বাচন করা মডেলটির সঠিকতা ও দক্ষতা বাড়াতে সাহায্য করে।

এই প্রক্রিয়াটি সাধারণত Grid Search বা Random Search পদ্ধতি ব্যবহার করে করা হয়।

নিচে একটি বাস্তব উদাহরণ দেওয়া হল যেখানে আমরা Grid Search পদ্ধতি ব্যবহার করে Logistic Regression মডেলের hyperparameter tuning করব।


Hyperparameter Tuning এর উদাহরণ

এখানে আমরা Iris ডেটাসেট ব্যবহার করব এবং Logistic Regression মডেলের জন্য GridSearchCV ব্যবহার করে হাইপারপ্যারামিটার টিউন করব। এটি বিভিন্ন কনফিগারেশন পরীক্ষা করবে এবং সেরা মডেলটির পারফরম্যান্স বেছে নেবে।

1. প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

প্রথমে প্রয়োজনীয় লাইব্রেরি ইনস্টল করুন, যদি আপনার সিস্টেমে আগে থেকে ইনস্টল না থাকে:

pip install scikit-learn

2. ডেটা লোড এবং মডেল তৈরি করা

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCV

# Iris ডেটাসেট লোড করা
data = load_iris()
X = data.data
y = data.target

# ডেটা ট্রেনিং এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

3. Hyperparameter গ্রিড তৈরি করা

এখন আমরা একটি GridSearchCV গ্রিড তৈরি করব, যেখানে মডেলের বিভিন্ন হাইপারপ্যারামিটার এর বিভিন্ন মান থাকবে। এই প্যারামিটারগুলোর মধ্যে কিছু উদাহরণ হল C (যা regularization strength), solver ইত্যাদি।

# Logistic Regression এর জন্য হাইপারপ্যারামিটার গ্রিড তৈরি করা
param_grid = {
    'C': [0.01, 0.1, 1, 10, 100],  # Regularization strength
    'solver': ['liblinear', 'lbfgs'],  # Solver algorithm
    'max_iter': [100, 200, 300]  # Maximum number of iterations
}

4. Grid Search পরিচালনা করা

এখন আমরা GridSearchCV ব্যবহার করে হাইপারপ্যারামিটার টিউনিং করব। এটি বিভিন্ন প্যারামিটার কম্বিনেশনের জন্য ক্রস ভ্যালিডেশন পরিচালনা করে এবং সেরা প্যারামিটার সেট নির্বাচন করে।

# GridSearchCV সেটআপ করা
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5, n_jobs=-1)

# মডেল ট্রেনিং
grid_search.fit(X_train, y_train)

# সেরা প্যারামিটার সেট পাওয়া
print("Best Parameters:", grid_search.best_params_)

# সেরা মডেল ব্যবহার করে টেস্ট ডেটাতে প্রেডিকশন করা
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test)

# সঠিকতা মূল্যায়ন
accuracy = best_model.score(X_test, y_test)
print(f"Accuracy: {accuracy * 100:.2f}%")

5. আউটপুট ব্যাখ্যা:

  • Best Parameters: grid_search.best_params_ দিয়ে আমরা সেরা প্যারামিটার সেট দেখতে পাব, যা GridSearchCV টেস্ট করেছে এবং সর্বোচ্চ সঠিকতা প্রদান করেছে।
  • Accuracy: সেরা মডেলটি টেস্ট ডেটাতে কতটুকু সঠিক প্রেডিকশন করেছে তার পার্সেন্টেজ দেখাবে।

Grid Search কি এবং কিভাবে কাজ করে?

  • GridSearchCV হল একটি টুল যা বিভিন্ন হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করে এবং প্রতিটি কম্বিনেশনের জন্য মডেলটি কিভাবে পারফর্ম করছে তা মূল্যায়ন করে। এটি কখনো পুরো গ্রিড (param_grid) অনুসন্ধান করে।
  • Cross-Validation: GridSearchCV প্রতিটি প্যারামিটার সেটের জন্য ক্রস ভ্যালিডেশন (যেমন k-fold) ব্যবহার করে যাতে মডেলটি বিভিন্ন ডেটা সেগমেন্টে পরীক্ষা করা হয়, ফলে একটি ভালো সাধারণকৃত (generalized) মডেল পাওয়া যায়।

6. Hyperparameter Tuning এর সুবিধা ও গুরুত্বপূর্ণ বিষয়সমূহ

(a) মডেলের পারফরম্যান্স উন্নয়ন:

  • সঠিক হাইপারপ্যারামিটার নির্বাচন করলে মডেলের পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত হতে পারে। উদাহরণস্বরূপ, C এর মান পরিবর্তন করলে মডেলের অতি-ফিটিং বা আন্ডারফিটিং নিয়ন্ত্রণ করা যায়।

(b) সঠিক মডেল নির্বাচন:

  • বিভিন্ন প্যারামিটার টিউনিং করে একটি এমন মডেল পাওয়া যায় যা বাস্তব জগতে আরও কার্যকরী হতে পারে।

(c) প্রক্রিয়াটির সময় এবং খরচ:

  • GridSearchCV অনেক সময় নেয় কারণ এটি সমস্ত প্যারামিটার কম্বিনেশন পরীক্ষা করে, তবে RandomizedSearchCV একটি বিকল্প যা কিছু কম্বিনেশন র্যান্ডমভাবে নির্বাচন করে এবং দ্রুত ফলাফল পেতে সাহায্য করতে পারে।

7. RandomizedSearchCV: একটি বিকল্প

যদি আপনার হাইপারপ্যারামিটার স্পেস বিশাল হয়, তবে RandomizedSearchCV ব্যবহার করা যেতে পারে, যেখানে র্যান্ডমভাবে কিছু হাইপারপ্যারামিটার কম্বিনেশন নির্বাচন করা হয়।

from sklearn.model_selection import RandomizedSearchCV
import numpy as np

# হাইপারপ্যারামিটার স্পেস তৈরি করা
param_dist = {
    'C': np.logspace(-3, 3, 7),
    'solver': ['liblinear', 'lbfgs'],
    'max_iter': [100, 200, 300]
}

# RandomizedSearchCV সেটআপ করা
random_search = RandomizedSearchCV(LogisticRegression(), param_dist, n_iter=10, cv=5, n_jobs=-1)

# মডেল ট্রেনিং
random_search.fit(X_train, y_train)

# সেরা প্যারামিটার এবং সঠিকতা
print("Best Parameters:", random_search.best_params_)
accuracy = random_search.score(X_test, y_test)
print(f"Accuracy: {accuracy * 100:.2f}%")

সারাংশ

  • Hyperparameter Tuning হল মডেলের পারফরম্যান্স উন্নত করার জন্য সঠিক হাইপারপ্যারামিটার নির্বাচন করা।
  • GridSearchCV হল একটি টুল যা বিভিন্ন প্যারামিটার কম্বিনেশন পরীক্ষা করে এবং সেরা সেট নির্বাচন করে।
  • RandomizedSearchCV একটি বিকল্প যা কিছু কম্বিনেশন র্যান্ডমভাবে পরীক্ষা করে এবং দ্রুত ফলাফল প্রদান করে।
  • এই প্রক্রিয়াগুলি মডেলটির পারফরম্যান্স উন্নত করতে সাহায্য করে, বিশেষত Logistic Regression, SVM, Decision Tree ইত্যাদি মডেলে।
Content added By
Promotion

Are you sure to start over?

Loading...