L1 এবং L2 Regularization Techniques

Regularization এবং Overfitting প্রতিরোধ - এক্সজিবুস্ট (XGBoost) - Latest Technologies

339

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

যদি আপনি আরো বিস্তারিত তথ্য বা অন্য কোনো সাহায্য চান, আমাকে জানাবেন!

Promotion

Are you sure to start over?

Loading...