XGBoost এ Regularization এবং Overfitting প্রতিরোধ
XGBoost অত্যন্ত শক্তিশালী একটি মেশিন লার্নিং অ্যালগরিদম, তবে এটি সহজেই Overfitting করতে পারে, বিশেষত যখন ডেটা কম বা মডেল খুবই জটিল হয়। Overfitting প্রতিরোধের জন্য XGBoost বিভিন্ন পদ্ধতি এবং Regularization টেকনিক্স প্রদান করে, যা মডেলটিকে আরও জেনারালাইজড করে এবং তার কার্যকারিতা উন্নত করে।
Overfitting কী?
Overfitting হল এমন একটি পরিস্থিতি যখন মডেল ট্রেনিং ডেটার সাথে অত্যন্ত ভালভাবে ফিট করে, কিন্তু টেস্ট ডেটা বা নতুন ডেটার জন্য ভালো পারফর্ম করতে ব্যর্থ হয়। মডেলটি ট্রেনিং ডেটার শোর বা নoise-এর সাথে খুব বেশি মানিয়ে নেয়, যা তার জেনারালাইজেশন ক্ষমতা কমিয়ে দেয়।
XGBoost এ Regularization টেকনিক্স
XGBoost এ Overfitting প্রতিরোধ করার জন্য কয়েকটি প্রধান Regularization টেকনিক্স রয়েছে:
১. L1 এবং L2 Regularization
L1 Regularization (Lasso): এটি ওজনগুলির উপর শাস্তিমূলক একটি শর্ত প্রয়োগ করে, যাতে মডেল কম গুরুত্বপূর্ণ ফিচারগুলোর ওজন শূন্য করতে পারে। XGBoost এ এটি alpha প্যারামিটার দিয়ে নিয়ন্ত্রিত হয়।
L2 Regularization (Ridge): এটি ওজনগুলোর বর্গের উপর শাস্তি প্রয়োগ করে, যা মডেলকে স্থিতিশীল এবং Overfitting থেকে প্রতিরোধ করতে সাহায্য করে। XGBoost এ এটি lambda প্যারামিটার দিয়ে নিয়ন্ত্রিত হয়।
import xgboost as xgb
# XGBoost মডেল কনফিগারেশন
model = xgb.XGBClassifier(
alpha=0.1, # L1 Regularization strength
lambda_=1.0 # L2 Regularization strength
)
# মডেল ট্রেনিং
model.fit(X_train, y_train)
২. Tree Pruning এবং Max Depth
XGBoost এ Tree Pruning এবং Max Depth ব্যবহার করা হয় যাতে ট্রি খুব গভীর হয়ে না যায়, যা Overfitting প্রতিরোধ করে।
- max_depth: এটি ট্রি-এর গভীরতা সীমিত করে। ছোট মান রাখলে মডেল কম জটিল হয়।
- min_child_weight: একটি নোড বিভক্ত করতে ন্যূনতম প্রয়োজনীয় ডেটা পয়েন্ট সংখ্যা। এর মান বেশি হলে ট্রি কম গভীর হবে।
model = xgb.XGBClassifier(
max_depth=4, # ট্রি-এর সর্বাধিক গভীরতা
min_child_weight=3 # ন্যূনতম চাইল্ড ওজন
)
৩. Learning Rate বা eta
XGBoost এ eta (অথবা learning_rate) ব্যবহার করা হয় ট্রেনিংয়ের সময় ছোট ধাপে অগ্রসর হওয়ার জন্য। ছোট learning rate ব্যবহার করলে মডেল ধীরে ধীরে লার্ন করে, যা Overfitting প্রতিরোধে সহায়ক।
model = xgb.XGBClassifier(
learning_rate=0.01, # ছোট লার্নিং রেট
n_estimators=1000 # বেশী সংখ্যক ট্রি ব্যবহার
)
৪. Subsampling Techniques
subsample: এটি একটি হাইপারপ্যারামিটার যা প্রতিটি ট্রি তৈরির সময় ডেটার কিছু অংশ বেছে নেয়। উদাহরণস্বরূপ, subsample=0.8 দিলে প্রতিটি ট্রি তৈরির সময় 80% ডেটা ব্যবহার হবে।
colsample_bytree: এটি প্রতিটি ট্রি তৈরির সময় ফিচারের কিছু অংশ বেছে নেয়। উদাহরণস্বরূপ, colsample_bytree=0.5 দিলে প্রতিটি ট্রি তৈরি করার সময় ফিচারের 50% ব্যবহার হবে।
model = xgb.XGBClassifier(
subsample=0.8, # ডেটা সাবস্যাম্পলিং
colsample_bytree=0.5 # ফিচার সাবস্যাম্পলিং
)
৫. Early Stopping
Early Stopping ট্রেনিংয়ের সময় ব্যবহার করা হয় যখন মডেল একটি নির্দিষ্ট পরিমাণ ইটারেশন পরে উন্নতি না দেখালে ট্রেনিং বন্ধ করে দেওয়া হয়। এটি Overfitting প্রতিরোধে কার্যকর।
from sklearn.model_selection import train_test_split
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
model = xgb.XGBClassifier(
learning_rate=0.01,
n_estimators=1000
)
model.fit(X_train, y_train,
early_stopping_rounds=10,
eval_set=[(X_val, y_val)],
eval_metric="logloss",
verbose=True)
সারসংক্ষেপ
XGBoost এ Regularization এবং Overfitting প্রতিরোধ করার জন্য বিভিন্ন পদ্ধতি এবং প্যারামিটার রয়েছে:
- L1 এবং L2 Regularization: ওজন নিয়ন্ত্রণ করার মাধ্যমে মডেলকে স্থিতিশীল করে।
- Tree Pruning এবং Max Depth: ট্রি জটিলতা নিয়ন্ত্রণ করে।
- Learning Rate: ছোট ধাপে লার্ন করে মডেলকে Overfitting থেকে বাঁচায়।
- Subsampling Techniques: ডেটা এবং ফিচার সাবস্যাম্পলিং ব্যবহার করে মডেল সাধারণকরণ ক্ষমতা বাড়ায়।
- Early Stopping: মডেলকে অপ্রয়োজনীয় ইটারেশন থেকে বাঁচায়।
এই পদ্ধতিগুলো সঠিকভাবে ব্যবহার করে XGBoost মডেলের Overfitting প্রতিরোধ করা যায় এবং মডেলের কার্যকারিতা ও স্থায়িত্ব উন্নত করা যায়।
Regularization XGBoost এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা মডেলকে ওভারফিটিং থেকে রক্ষা করতে এবং মডেল পারফরম্যান্স উন্নত করতে সহায়ক। এটি মডেলকে সাধারণীকরণ করতে এবং জটিলতা নিয়ন্ত্রণ করতে ব্যবহৃত হয়, যাতে মডেল প্রশিক্ষণ ডেটার বাইরেও ভালোভাবে কাজ করতে পারে।
XGBoost এ Regularization কী?
Regularization হল একটি টেকনিক যা মডেলের প্যারামিটারগুলির ওপর সীমাবদ্ধতা আরোপ করে, যাতে মডেল খুব বেশি জটিল না হয় এবং শুধুমাত্র প্রশিক্ষণ ডেটার সাথে অতিরিক্ত ফিট না করে। XGBoost এ দুটি প্রধান ধরনের Regularization প্যারামিটার রয়েছে:
L1 Regularization (alpha): এটি মডেলের ফিচারগুলির কোফিসিয়েন্টগুলিকে নিয়ন্ত্রণ করে এবং কিছু ফিচারকে সম্পূর্ণভাবে শূন্যে পরিণত করতে পারে। এটি ল্যাসো রিগ্রেশন হিসেবে পরিচিত।
L2 Regularization (lambda): এটি মডেলের জটিলতা নিয়ন্ত্রণে সহায়ক এবং কোফিসিয়েন্টগুলির স্কোয়ারড মানগুলির ওপর ভিত্তি করে কাজ করে। এটি রিজ রিগ্রেশন হিসেবে পরিচিত।
XGBoost এ Regularization প্যারামিটার
XGBoost এ Regularization এর জন্য নিম্নলিখিত প্যারামিটার ব্যবহার করা হয়:
alpha: L1 Regularization প্যারামিটার। এটি ওভারফিটিং কমাতে এবং কম গুরুত্বপূর্ণ ফিচারগুলিকে বাদ দিতে সাহায্য করে।lambda: L2 Regularization প্যারামিটার। এটি মডেলকে কম জটিল করতে এবং স্টেবিলিটি বাড়াতে সহায়ক।
XGBoost এ Regularization এর প্রয়োজনীয়তা:
ওভারফিটিং প্রতিরোধ: Regularization মডেলের জটিলতা কমিয়ে ওভারফিটিং রোধ করতে সহায়ক। এটি নিশ্চিত করে যে মডেল প্রশিক্ষণ ডেটার বাইরেও ভালো পারফর্ম করে।
মডেল সাধারণীকরণ: Regularization মডেলটিকে সাধারণীকরণ করতে সহায়ক করে, যাতে এটি নতুন ডেটায় ভালোভাবে পারফর্ম করতে পারে।
ফিচার সিলেকশন: L1 Regularization ব্যবহার করে কম গুরুত্বপূর্ণ ফিচারগুলিকে বাদ দেওয়া যায়, যা মডেলকে আরও কার্যকরী করে তোলে এবং গণনাক্ষমতাও বাড়ায়।
পারফরম্যান্স অপ্টিমাইজেশন: Regularization প্যারামিটার টিউন করে মডেলের পারফরম্যান্স বৃদ্ধি করা যায়। এটি মডেলের কার্যকারিতা এবং ট্রেনিং স্পিড উভয়ই উন্নত করতে সাহায্য করে।
XGBoost এ Regularization প্যারামিটার সেট করার উদাহরণ
import xgboost as xgb
params = {
'objective': 'binary:logistic',
'alpha': 0.1, # L1 Regularization টার্ম
'lambda': 1.0, # L2 Regularization টার্ম
'eta': 0.1,
'max_depth': 4,
'eval_metric': 'logloss'
}
bst = xgb.train(params, dtrain, num_boost_round=100)
সারসংক্ষেপ
Regularization মডেলকে ওভারফিটিং থেকে রক্ষা করে এবং সাধারণীকরণে সহায়ক। এটি মডেল পারফরম্যান্স উন্নত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে এবং XGBoost মডেলের জটিলতা নিয়ন্ত্রণ করতে সহায়ক।
XGBoost-এ L1 এবং L2 রেগুলারাইজেশন টেকনিক দুটি অত্যন্ত গুরুত্বপূর্ণ, কারণ এগুলি মডেলের ওভারফিটিং প্রতিরোধে এবং পারফরম্যান্স উন্নত করতে সহায়তা করে। নিচে L1 এবং L2 রেগুলারাইজেশন সম্পর্কে বিস্তারিত আলোচনা করা হলো:
১. L1 রেগুলারাইজেশন (Lasso)
- L1 রেগুলারাইজেশন মূলত মডেলের ওজনগুলোর (weights) জন্য একটি লাইনিয়ার পেনাল্টি প্রয়োগ করে। এটি ছোট মানের ওজনগুলোকে শূন্যের দিকে ঠেলে দেয়, ফলে মডেলের স্পারসিটি (কম সংখ্যক ফিচার) বাড়ায়।
- L1 রেগুলারাইজেশন একটি ফিচার সিলেকশন মেকানিজমের মতো কাজ করে, কারণ এটি অপ্রয়োজনীয় ফিচারগুলোর ওজনকে শূন্যে রূপান্তরিত করতে সক্ষম।
- XGBoost-এ L1 রেগুলারাইজেশন প্যারামিটার হলো:
alpha
XGBoost-এ L1 রেগুলারাইজেশন ব্যবহার:
import xgboost as xgb
# ডেটা প্রস্তুত করা
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
# প্যারামিটার সেট করা
params = {
'objective': 'reg:squarederror', # রিগ্রেশন সমস্যা
'alpha': 0.5, # L1 রেগুলারাইজেশন প্যারামিটার
'eta': 0.1,
'max_depth': 3
}
# মডেল ট্রেনিং
evals = [(dtest, 'eval'), (dtrain, 'train')]
bst = xgb.train(params, dtrain, num_boost_round=100, evals=evals, early_stopping_rounds=10)
এখানে, alpha এর মান বাড়ানোর মাধ্যমে আপনি মডেলের স্পারসিটি বাড়াতে এবং ফিচারগুলোকে আরো সিলেক্টিভ করতে পারবেন।
২. L2 রেগুলারাইজেশন (Ridge)
- L2 রেগুলারাইজেশন মডেলের ওজনগুলোর স্কোয়ারের উপর পেনাল্টি প্রয়োগ করে। এটি বড় ওজনগুলোর মান কমিয়ে মডেলকে স্ট্যাবল রাখতে সাহায্য করে, কিন্তু ওজন শূন্যে রূপান্তরিত করে না।
- L2 রেগুলারাইজেশন মডেলের জেনারেলাইজেশন ক্ষমতা বাড়ায় এবং ওভারফিটিং প্রতিরোধে সহায়ক।
- XGBoost-এ L2 রেগুলারাইজেশন প্যারামিটার হলো:
lambda
XGBoost-এ L2 রেগুলারাইজেশন ব্যবহার:
import xgboost as xgb
# ডেটা প্রস্তুত করা
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
# প্যারামিটার সেট করা
params = {
'objective': 'reg:squarederror', # রিগ্রেশন সমস্যা
'lambda': 1.0, # L2 রেগুলারাইজেশন প্যারামিটার
'eta': 0.1,
'max_depth': 3
}
# মডেল ট্রেনিং
evals = [(dtest, 'eval'), (dtrain, 'train')]
bst = xgb.train(params, dtrain, num_boost_round=100, evals=evals, early_stopping_rounds=10)
এখানে, lambda প্যারামিটারটি বাড়ানোর মাধ্যমে মডেলের ওজনগুলোর উপর আরো কঠোর পেনাল্টি প্রয়োগ করা যায়, যা মডেলকে স্ট্যাবল করতে সাহায্য করে।
৩. L1 এবং L2 একত্রে ব্যবহার (Elastic Net)
- XGBoost-এ, L1 এবং L2 রেগুলারাইজেশন একত্রে ব্যবহার করা সম্ভব, যা Elastic Net নামে পরিচিত।
- Elastic Net মডেলিংয়ে ফিচার সিলেকশন এবং ওজন নিয়ন্ত্রণ উভয়কেই সাপোর্ট করে, যা মডেলের জেনারেলাইজেশনের ক্ষমতা বাড়ায়।
XGBoost-এ L1 এবং L2 একত্রে ব্যবহার:
import xgboost as xgb
# ডেটা প্রস্তুত করা
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
# প্যারামিটার সেট করা
params = {
'objective': 'reg:squarederror',
'alpha': 0.5, # L1 রেগুলারাইজেশন প্যারামিটার
'lambda': 1.0, # L2 রেগুলারাইজেশন প্যারামিটার
'eta': 0.1,
'max_depth': 3
}
# মডেল ট্রেনিং
evals = [(dtest, 'eval'), (dtrain, 'train')]
bst = xgb.train(params, dtrain, num_boost_round=100, evals=evals, early_stopping_rounds=10)
এভাবে L1 (alpha) এবং L2 (lambda) প্যারামিটার ব্যবহার করে মডেলের স্পারসিটি এবং স্ট্যাবলিটি দুটিই নিশ্চিত করা যায়।
সারসংক্ষেপ
- L1 রেগুলারাইজেশন (alpha): ওজনগুলো শূন্যে রূপান্তরিত করে এবং ফিচার সিলেকশন করে।
- L2 রেগুলারাইজেশন (lambda): ওজনগুলোকে ছোট করে মডেলকে স্ট্যাবল রাখে।
- XGBoost-এ এই দুটি রেগুলারাইজেশন টেকনিক ব্যবহার করে মডেলের পারফরম্যান্স বাড়ানো এবং ওভারফিটিং প্রতিরোধ করা সম্ভব।
যদি আপনি আরো বিস্তারিত তথ্য বা অন্য কোনো সাহায্য চান, আমাকে জানাবেন!
XGBoost এ Overfitting হলো এমন একটি সমস্যা যেখানে মডেল প্রশিক্ষণ ডেটার সাথে অতিরিক্তভাবে ফিট হয়ে যায়, ফলে এটি নতুন বা অদেখা ডেটা নিয়ে কাজ করার সময় ভালো পারফর্ম করতে পারে না। XGBoost এ Overfitting প্রতিরোধ করার জন্য কিছু কার্যকর কৌশল রয়েছে, যা নিচে বিস্তারিতভাবে আলোচনা করা হলো:
Overfitting এর কারণ
XGBoost একটি অত্যন্ত শক্তিশালী অ্যালগরিদম, এবং এটি ডেটার প্যাটার্ন খুঁজতে গিয়ে অত্যধিক জটিল হয়ে উঠতে পারে। Overfitting এর সাধারণ কারণগুলোর মধ্যে রয়েছে:
- অত্যধিক গভীর Decision Trees তৈরি করা।
- অত্যধিক সংখ্যক Trees ব্যবহার করা।
- কম পরিমাণে নিয়মিতকরণ (Regularization)।
- সীমিত ট্রেনিং ডেটা বা বৈচিত্র্যহীন ডেটাসেট।
Overfitting প্রতিরোধ করার কৌশল
নিচের কৌশলগুলো XGBoost এ Overfitting নিয়ন্ত্রণ করতে সহায়ক:
১. Tree Depth সীমিত করা (max_depth)
- কীভাবে কাজ করে: Decision Trees এর গভীরতা সীমিত করে (যেমন: ৩ বা ৫ পর্যন্ত)।
- কেন গুরুত্বপূর্ণ: খুব গভীর Decision Trees প্রশিক্ষণ ডেটার প্যাটার্নগুলিকে অতিরিক্তভাবে ফিট করে ফেলে, যা Overfitting বাড়াতে পারে।
- ব্যবহার:
model = xgb.XGBClassifier(max_depth=3)
২. Learning Rate (eta) হ্রাস করা
- কীভাবে কাজ করে: মডেলের প্রতিটি আপডেটে ওজনের পরিবর্তন কমিয়ে দেয়।
- কেন গুরুত্বপূর্ণ: কম
etaব্যবহার করলে মডেল ধীরে ধীরে শিখে এবং নতুন Trees এর প্রভাব কমিয়ে আনে, যা Overfitting কমায়। - ব্যবহার:
model = xgb.XGBClassifier(eta=0.01)
৩. নিয়মিতকরণ (Regularization) ব্যবহার করা (lambda এবং alpha)
- কীভাবে কাজ করে: L2 (
lambda) এবং L1 (alpha) নিয়মিতকরণ ব্যবহার করে মডেলের ওজন নিয়ন্ত্রণ করা যায়। - কেন গুরুত্বপূর্ণ: নিয়মিতকরণ মডেলকে জটিলতা থেকে রক্ষা করে এবং ওজনের বড় বড় মানগুলিকে ছোট করে, যা Overfitting রোধ করে।
- ব্যবহার:
model = xgb.XGBClassifier(lambda=1, alpha=1)
৪. প্রারম্ভিক থামানো (Early Stopping)
- কীভাবে কাজ করে: একটি নির্দিষ্ট সংখ্যক ইটারেশনের পর যদি মডেলের কার্যকারিতা উন্নত না হয়, তাহলে ট্রেনিং থামিয়ে দেওয়া হয়।
- কেন গুরুত্বপূর্ণ: এটি মডেলকে অতিরিক্ত ট্রেনিং থেকে রক্ষা করে, যা Overfitting এর সম্ভাবনা কমায়।
- ব্যবহার:
model.fit(X_train, y_train, early_stopping_rounds=10, eval_set=[(X_test, y_test)], verbose=False)
৫. Subsampling ব্যবহার করা (subsample এবং colsample_bytree)
- কীভাবে কাজ করে: প্রতিটি Tree এর প্রশিক্ষণের সময় পুরো ডেটা বা সমস্ত ফিচার ব্যবহার না করে, ডেটার একটি অংশ এবং ফিচারের একটি অংশ বাছাই করা হয়।
- কেন গুরুত্বপূর্ণ: এটি মডেলকে বৈচিত্র্যপূর্ণ করে এবং Overfitting কমায়।
- ব্যবহার:
model = xgb.XGBClassifier(subsample=0.8, colsample_bytree=0.8)
৬. মডেলের Trees এর সংখ্যা সীমিত করা (n_estimators)
- কীভাবে কাজ করে: Trees এর সংখ্যা কমিয়ে রাখলে মডেলকে কম জটিল রাখা যায়।
- কেন গুরুত্বপূর্ণ: অধিক সংখ্যক Trees Overfitting বাড়াতে পারে, তাই এই প্যারামিটারটি নিয়ন্ত্রণ করা গুরুত্বপূর্ণ।
- ব্যবহার:
model = xgb.XGBClassifier(n_estimators=100)
৭. Dropout ব্যবহার করা (rate_drop এবং skip_drop)
- কীভাবে কাজ করে: XGBoost এ Dropout রেট ব্যবহার করা যায় যা মডেল প্রশিক্ষণের সময় কিছু Nodes (নোড) বাদ দেয়।
- কেন গুরুত্বপূর্ণ: এটি নিউরাল নেটওয়ার্কের Dropout এর মত কাজ করে এবং মডেলকে জটিলতা থেকে রক্ষা করে।
- ব্যবহার:
model = xgb.XGBClassifier(booster='dart', rate_drop=0.1, skip_drop=0.5)
সারসংক্ষেপ
XGBoost এ Overfitting প্রতিরোধ করার জন্য নিচের কৌশলগুলো কার্যকর:
- Tree Depth এবং Learning Rate হ্রাস করা।
- নিয়মিতকরণ ব্যবহার করা।
- Subsampling এবং Dropout প্রয়োগ করা।
- প্রারম্ভিক থামানোর কৌশল ব্যবহার করা।
এই কৌশলগুলো সঠিকভাবে ব্যবহার করলে XGBoost মডেলটি ভারসাম্যপূর্ণভাবে প্রশিক্ষিত হয় এবং Overfitting থেকে রক্ষা পায়।
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