এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং

এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং বর্তমান সময়ের একটি জনপ্রিয় অ্যালগরিদম। ক্যাগেল সহ বিভিন্ন প্ল্যাটফর্মের নানা কম্পিটিশনে এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং এর ব্যবহার অত্যন্ত বেশী। এই অ্যালগরিদমটি মূলত " পারফরম্যান্স এবং এক্সিকিউশন টাইম " কে মাথায় রেখে তৈরি করা হয়েছে ।
গ্রাডিয়েন্ট বুস্টিং তুলনামূলক ধীর গতিতে কাজ করে ।এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং হচ্ছে গ্রাডিয়েন্ট বুস্টিং এর এডভান্সড ভার্শন, যা অন্যান্য বুস্টিং অ্যালগরিদমের তুলনায় অনেক বেশী দ্রুত কাজ করে। রিগ্রেশন এবং ক্লাসিফিকেশন উভয় ধরনের সমস্যায় এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং ব্যবহার করা যায়। এই পদ্ধতিতে মূলত ডিসিশন ট্রি-কে ভিত্তি করেই সিকোয়েন্সিয়াল বুস্টিং করা হয় এবং ওয়েট এর উপর ভিত্তি করে অ্যাকুরেসি বাড়ানো হতে থাকে।
ছবি - এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং
এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং-এর কিছু বিশেষ বৈশিষ্ট্য
  • প্যারালাল ভাবে ডিসিশন ট্রি তৈরি করতে পারে।
  • কমপ্লেক্স মডেলের জন্য ডিস্ট্রিবিউটেড কম্পিউটিং মেথড ব্যবহার করতে পারে।
  • আউট অব কোর কম্পিউটিং ব্যবহার করে অনেক বড় ডেটাসেট অ্যানালাইসিস করতে পারে ।
  • ক্যাস অপ্টিমাইজেশনের মাধ্যমে সিস্টেমের রিসোর্সের সর্বোত্তম ব্যবহার নিশ্চিত করতে পারে।
ছবি - এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং এর কিছু বৈশিষ্ট্য ( সূত্র - ইন্টারনেট )
পাইথনে এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং
প্রথমেই লাইব্রেরী ইমপোর্ট এবং ডেটাসেট লোড করে নিচ্ছি,
import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import r2_score
import matplotlib.pyplot as plt
%matplotlib inline
url='https://raw.githubusercontent.com/FazlyRabbiBD/Data-Science-Book/master/data-fuel-consumption.csv'
df = pd.read_csv(url)
df.head()
এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং এর গ্রাডিয়েন্ট বুস্টিং অধ্যায়ের ডেটাসেটই ব্যবহার করবো।
এবার ফিচার এবং টার্গেট ভ্যারিয়েবল সেট করে নেব,
X= df[[ 'ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY', 'FUELCONSUMPTION_COMB', 'FUELCONSUMPTION_COMB_MPG']]
y = df['CO2EMISSIONS']
এখন টেস্ট এর জন্য ৩০% ডেটা রেখে বাকি ডেটা দিয়ে মডেল ট্রেইন করবো,
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)
xg_reg = xgb.XGBRegressor(objective ='reg:linear',gamma=0,colsample_bytree = .5,num_boost_round=100, learning_rate = 1,scale_pos_weight = 1)
xg_reg.fit(X_train,y_train)
preds = xg_reg.predict(X_test)
এবার মডেলের অ্যাকুরেসি নির্ণয়ের পালা,
print('MAE:', metrics.mean_absolute_error(y_test, preds))
print('MSE:', metrics.mean_squared_error(y_test, preds))
print('RMSE:', np.sqrt(metrics.mean_squared_error(y_test, preds)))
accuracy = xg_reg.score(X_test,y_test)
print('Accuracy:',accuracy*100,'%')
print('R2:', r2_score(y_test, preds))
এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং এর বাই ডিফল্ট ট্রি ভিজুয়ালাইজেশন
import matplotlib.pyplot as plt
xgb.plot_tree(xg_reg,num_trees=4)
plt.show()
এক্সট্রিম গ্রাডিয়েন্ট বুস্টিং এর বাই ডিফল্ট ফিচার ইম্পরট্যান্স ভিজুয়ালাইজেশন
xgb.plot_importance(xg_reg)
plt.rcParams['figure.figsize'] = [10, 10]
plt.show()