এক্সজিবুস্ট

এক্সজিবুস্ট (**XGBoost**) (এক্সট্রিম গ্রেডিয়েন্ট বুস্টিং - eXtreme Gradient Boosting) হলো একটি উন্মুক্ত উৎসের সফটওয়্যার লাইব্রেরি, যা সি++, জাভা, পাইথন, আর, জুলিয়া, পার্ল , এবং স্কালার জন্য একটি নিয়মিতকরণ গ্রেডিয়েন্ট বুস্টিং ফ্রেমওয়ার্ক প্রদান করে। এটি লিনাক্স, মাইক্রোসফট উইন্ডোজ, এবং ম্যাকওএসে কাজ করে। প্রকল্পের বর্ণনা অনুযায়ী, এর লক্ষ্য হলো একটি "স্কেলেবল, পোর্টেবল এবং ডিস্ট্রিবিউটেড গ্রেডিয়েন্ট বুস্টিং (GBM, GBRT, GBDT) লাইব্রেরি" প্রদান করা। এটি একক মেশিনের পাশাপাশি ডিস্ট্রিবিউটেড প্রসেসিং ফ্রেমওয়ার্ক অ্যাপাচি হ্যাডুপ, অ্যাপাচি স্পার্ক, অ্যাপাচি ফ্লিংক এবং ডাস্কেও চলতে পারে।

২০১০ের দশকের মাঝামাঝি সময়ে অনেকগুলো মেশিন লার্নিং প্রতিযোগিতায় বিজয়ী দলগুলোর পছন্দের অ্যালগরিদম হিসেবে এক্সজিবুস্ট ব্যাপক জনপ্রিয়তা ও মনোযোগ লাভ করে।

## ইতিহাস
এক্সজিবুস্ট প্রাথমিকভাবে ওয়াশিংটন বিশ্ববিদ্যালয়ের ডিস্ট্রিবিউটেড (ডিপ) মেশিন লার্নিং কমিউনিটি গ্রুপের অংশ হিসেবে তিয়ানকি চেনের একটি গবেষণা প্রকল্প হিসেবে শুরু হয়েছিল। শুরুতে এটি একটি টার্মিনাল অ্যাপ্লিকেশন হিসেবে ছিল যা একটি *libsvm* কনফিগারেশন ফাইল ব্যবহার করে কনফিগার করা যেত। হিগস মেশিন লার্নিং চ্যালেঞ্জর বিজয়ী সমাধানে ব্যবহারের পর এটি মেশিন লার্নিং প্রতিযোগিতার মহলে সুপরিচিত হয়ে ওঠে। এর কিছুকাল পরেই পাইথন এবং আর প্যাকেজ তৈরি করা হয় এবং বর্তমানে জাভা, স্কালা , জুলিয়া, পার্ল এবং অন্যান্য ভাষার জন্য এক্সজিবুস্টের প্যাকেজ বাস্তবায়ন রয়েছে। এটি লাইব্রেরিটিকে আরও বেশি ডেভেলপারের কাছে পৌঁছে দিয়েছে এবং ক্যাগল সম্প্রদায়ের মধ্যে এর জনপ্রিয়তায় অবদান রেখেছে, যেখানে এটি অসংখ্য প্রতিযোগিতায় ব্যবহৃত হয়েছে।

শীঘ্রই এটি আরও বেশ কিছু প্যাকেজের সাথে সমন্বিত করা হয়, যা সংশ্লিষ্ট ব্যবহারকারী সম্প্রদায়ের জন্য এর ব্যবহার সহজতর করে তোলে। বর্তমানে এটি পাইথন ব্যবহারকারীদের জন্য *scikit-learn* এবং আর ব্যবহারকারীদের জন্য *caret* প্যাকেজের সাথে সমন্বিত করা হয়েছে। এছাড়া এটি অ্যাবস্ট্রাক্টেড 'Rabit' এবং XGBoost4J ব্যবহার করে অ্যাপাচি স্পার্ক, অ্যাপাচি হ্যাডুপ এবং অ্যাপাচি ফ্লিংকের মতো ডেটা ফ্লো ফ্রেমওয়ার্কগুলোতেও যুক্ত করা সম্ভব। এফপিজিএর জন্য OpenCL এও এক্সজিবুস্ট উপলব্ধ। এক্সজিবুস্টের একটি দক্ষ ও স্কেলেবল সংস্করণ তিয়ানকি চেন এবং কার্লোস গেস্ট্রিন প্রকাশ করেছেন।

যদিও এক্সজিবুস্ট মডেল প্রায়শই একটি একক ডিসিশন ট্রির তুলনায় উচ্চতর নির্ভুলতা অর্জন করে, তবে এটি ডিসিশন ট্রির সহজাত ব্যাখ্যাযোগ্যতা বিসর্জন দেয়। উদাহরণস্বরূপ, একটি ডিসিশন ট্রি তার সিদ্ধান্তে পৌঁছানোর জন্য যে পথ অনুসরণ করে তা অনুসরণ করা অত্যন্ত সহজ এবং স্ব-ব্যাখ্যামূলক; কিন্তু শত শত বা হাজার হাজার গাছের পথ অনুসরণ করা অনেক বেশি কঠিন।

## বৈশিষ্ট্যসমূহ
এক্সজিবুস্টের প্রধান বৈশিষ্ট্যগুলো, যা একে অন্যান্য গ্রেডিয়েন্ট বুস্টিং অ্যালগরিদম থেকে আলাদা করে তোলে, তা হলো:

* বৃক্ষ বা ট্রির ওপর বুদ্ধিমত্তাসম্পন্ন দণ্ডদান 
* লিফ নোড বা প্রান্তিক নোডগুলোর আনুপাতিক সংকোচন
* নিউটন বুস্টিং
* অতিরিক্ত র‍্যান্ডমাইজেশন প্যারামিটার
* একক সিস্টেম, ডিস্ট্রিবিউটেড সিস্টেম এবং আউট-অফ-কোর গণনায় বাস্তবায়ন
* স্বয়ংক্রিয় ফিচার সিলেকশন 
* দক্ষ গণনার জন্য তাত্ত্বিকভাবে প্রমাণিত ওয়েটেড কোয়ান্টাইল স্কেচিং
* স্পার্সিটি বা উপাত্তের স্বল্পতা বিবেচনায় নিয়ে সমান্তরাল ট্রি স্ট্রাকচার বুস্টিং
* ডিসিশন ট্রি প্রশিক্ষণের জন্য দক্ষ ক্যাশেবল ব্লক স্ট্রাকচার

## অ্যালগরিদম
গ্রেডিয়েন্ট বুস্টিং, যা ফাংশন স্পেসে গ্রেডিয়েন্ট ডিসেন্ট হিসেবে কাজ করে, তার বিপরীতে এক্সজিবুস্ট ফাংশন স্পেসে নিউটনরাফসন পদ্ধতি হিসেবে কাজ করে। নিউটনরাফসন পদ্ধতির সাথে সংযোগ স্থাপনের জন্য এর লস ফাংশনে দ্বিতীয় ক্রমের টেইলর অ্যাপ্রক্সিমেশন ব্যবহার করা হয়।

একটি সাধারণ অনিয়মিত এক্সজিবুস্ট অ্যালগরিদম হলো:

ইনপুট: ট্রেনিং সেট \{(x_i, y_i)\}_{i=1}^N, একটি অন্তরীকরণযোগ্য লস ফাংশন L(y, F(x)), কতগুলো উইক লার্নার (weak learners) M এবং একটি লার্নিং রেট (learning rate) \alpha।

অ্যালগরিদম:

* একটি ধ্রুবক মান দিয়ে মডেল শুরু করা: 
\hat{f}_{(0)}(x) = \underset{\theta}{\arg\min} \sum_{i=1}^N L(y_i, \theta).
:: দ্রষ্টব্য যে, এটি মডেলের প্রারম্ভিক অবস্থা, তাই আমরা সমস্ত ইনপুটের জন্য একটি ধ্রুবক মান সেট করি। এমনকি পরবর্তী পুনরাবৃত্তিগুলোতে আমরা নতুন ফাংশন খোঁজার জন্য অপ্টিমাইজেশন ব্যবহার করলেও, ধাপ ০-এ আমাদের এমন একটি মান খুঁজে বের করতে হয় যা সমস্ত ইনপুটের জন্য সমান এবং লস ফাংশনকে সর্বনিম্ন করে।

#  = ১ থেকে  পর্যন্ত:
## 'গ্রেডিয়েন্ট' এবং 'হেসিয়ান' গণনা করা:
\begin{align}
\hat{g}_m(x_i) &= \left[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)} \right]_{f(x)=\hat{f}_{(m-1)}(x)}. \\
\hat{h}_m(x_i) &= \left[\frac{\partial^2 L(y_i,f(x_i))}{\partial f(x_i)^2} \right]_{f(x)=\hat{f}_{(m-1)}(x)}.
\end{align}
## নিচের অপ্টিমাইজেশন সমস্যাটি সমাধানের মাধ্যমে ট্রেনিং সেট ব্যবহার করে একটি বেস লার্নার বা উইক লার্নার (যেমন: ট্রি) ফিট করা:\left\{x_i,\dfrac{\hat{g}_m(x_i)}{\hat{h}_m(x_i)}\right\}_{i=1}^{N} \hat{\phi}_m=\underset{\phi \in \mathbf{\Phi}}{\arg\min}\sum_{i=1}^{N}\frac{1}{2}\hat{h}_m(x_i)\left[\phi(x_i) - \frac{\hat{g}_m(x_i)}{\hat{h}_m(x_i)}\right]^2. 
 \hat{f}_m(x)=\alpha \hat{\phi}_m(x).
## মডেল আপডেট করা: 
\hat{f}_{(m)}(x) = \hat{f}_{(m-1)}(x) - \hat{f}_m(x).
# আউটপুট: 
\hat{f}(x)=\hat{f}_{(M)}(x)=\sum_{m=0}^{M}\hat{f}_m(x).

## পুরস্কারসমূহ
* জন চেম্বার্স অ্যাওয়ার্ড (২০১৬)
* হাই এনার্জি ফিজিক্স মিটস মেশিন লার্নিং অ্যাওয়ার্ড (২০১৬)

## আরও দেখুন
* লাইটজিবিএম
## তথ্যসূত্র

বিষয়শ্রেণী:মেশিন লার্নিং
বিষয়শ্রেণী:২০১৪-এর সফটওয়্যার