XGBoost-এ Regularization খুবই গুরুত্বপূর্ণ একটি অংশ, যা মডেলকে overfitting থেকে রক্ষা করে এবং মডেলের জেনারালাইজেশন ক্ষমতা বৃদ্ধি করে। Regularization করার জন্য XGBoost-এ দুইটি প্যারামিটার থাকে: lambda (L2 Regularization) এবং alpha (L1 Regularization)। নিচে একটি উদাহরণসহ Regularization প্রয়োগের প্রক্রিয়া বর্ণনা করা হয়েছে।
উদাহরণ: XGBoost-এ Regularization প্রয়োগ
আমরা একটি সাধারণ ক্লাসিফিকেশন সমস্যার উপর ভিত্তি করে Regularization প্রয়োগ করে দেখাব।
১. প্রয়োজনীয় লাইব্রেরি ইনস্টল এবং ইমপোর্ট করা
pip install xgboost scikit-learn
import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
২. ডেটাসেট লোড এবং ট্রেন-টেস্ট স্প্লিট করা
# 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)
৩. XGBoost ডেটা ম্যাট্রিক্স তৈরি করা
# ডেটা ম্যাট্রিক্স তৈরি করা
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
৪. XGBoost প্যারামিটার সেট করা (Regularization সহ)
# XGBoost প্যারামিটার সেট করা
params = {
'objective': 'multi:softmax', # ক্লাসিফিকেশনের জন্য
'num_class': 3, # Iris ডেটাসেটে ৩টি ক্লাস আছে
'eval_metric': 'mlogloss', # মাল্টি-ক্লাস লস
'lambda': 1.0, # L2 Regularization
'alpha': 0.5 # L1 Regularization
}
# মডেল ট্রেনিং করা
num_rounds = 50
model = xgb.train(params, dtrain, num_rounds)
৫. প্রেডিকশন এবং মডেল ইভ্যালুয়েশন
# টেস্ট সেটে প্রেডিকশন করা
y_pred = model.predict(dtest)
# একুরেসি স্কোর গণনা করা
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy with Regularization: {accuracy * 100:.2f}%")
পুরো কোড
import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 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)
# ডেটা ম্যাট্রিক্স তৈরি করা
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
# XGBoost প্যারামিটার সেট করা (Regularization সহ)
params = {
'objective': 'multi:softmax', # ক্লাসিফিকেশনের জন্য
'num_class': 3, # Iris ডেটাসেটে ৩টি ক্লাস আছে
'eval_metric': 'mlogloss', # মাল্টি-ক্লাস লস
'lambda': 1.0, # L2 Regularization
'alpha': 0.5 # L1 Regularization
}
# মডেল ট্রেনিং করা
num_rounds = 50
model = xgb.train(params, dtrain, num_rounds)
# টেস্ট সেটে প্রেডিকশন করা
y_pred = model.predict(dtest)
# একুরেসি স্কোর গণনা করা
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy with Regularization: {accuracy * 100:.2f}%")
Regularization এর প্যারামিটার ব্যাখ্যা
lambda (L2 Regularization): এটি মডেলের ওজনগুলির স্কোয়ার্ড ভ্যালুতে পেনাল্টি দেয়, যা ওজনগুলিকে ছোট রাখতে সাহায্য করে এবং overfitting কমায়। এটি default মান ১.০ ধরে নেওয়া হয়।
alpha (L1 Regularization): এটি মডেলের ওজনগুলির absolute ভ্যালুতে পেনাল্টি দেয়, যা কিছু ওজনকে ০তে পরিণত করতে পারে এবং ফিচার সিলেকশনে সহায়তা করে।
মডেল ইভ্যালুয়েশন
Regularization প্রয়োগের ফলে মডেলটি overfitting কমাতে এবং জেনারালাইজেশন ক্ষমতা বৃদ্ধি করতে সক্ষম হয়। মডেলের একুরেসি চেক করে আপনি দেখতে পাবেন যে এটি ভালো পারফর্ম করছে এবং Regularization সঠিকভাবে কাজ করছে।
সারসংক্ষেপ
এই উদাহরণে আমরা XGBoost-এ L1 এবং L2 Regularization প্রয়োগ করে মডেল ট্রেনিং এবং ইভ্যালুয়েশন দেখিয়েছি। Regularization মডেলের জেনারালাইজেশন বাড়াতে এবং overfitting থেকে বাঁচাতে সাহায্য করে, যা মেশিন লার্নিং মডেলিংয়ের জন্য গুরুত্বপূর্ণ।
Read more