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-এ এই দুটি রেগুলারাইজেশন টেকনিক ব্যবহার করে মডেলের পারফরম্যান্স বাড়ানো এবং ওভারফিটিং প্রতিরোধ করা সম্ভব।
যদি আপনি আরো বিস্তারিত তথ্য বা অন্য কোনো সাহায্য চান, আমাকে জানাবেন!
Read more