**تقویت گرادیان** یا **گرادیان بوستینگ** (به انگلیسی: Gradient boosting) یک روش یادگیری ماشین برای مسائل رگرسیون و طبقه‌بندی است. مدل تقویت گرادیان ترکیبی خطی از یک سری مدل‌های ضعیف است که به صورت تناوبی برای ایجاد یک مدل نهائیِ قوی ساخته شده‌است. این روش به خانواده الگوریتم‌های یادگیری گروهی تعلق دارد و عملکرد آن همواره از الگوریتم‌های اساسی یا ضعیف (مثلا درخت تصمیم) یا روش‌های براساس کیسه‌گذاری (مانند جنگل تصادفی) بهتر است. اما صحت این گزاره تا حدی از مشخصات داده‌های ورودی تأثیر می‌پذیرد.

مقدمه
-----

مانند دیگر روش‌های تقویتی (بوستینگ)، تقویت گرادیان (گرادیان بوستینگ) ترکیبی خطی از یک سری از مدل‌های ضعیف برای ایجاد یک مدل قوی و کارآمد است. ساده‌ترین مثال برای توضیح تقویت گرادیان، مثال کمترین مربعات در مسئله رگرسیون است که در آن هدف، یادگیری یک مدل به اسم F برای کمینه کردن {\displaystyle {\frac {1}{n}}\sum \_{i}({\hat {y}}\_{i}-y\_{i})^{2}} یا میانگین مربعات خطا است. در اینجا {\displaystyle {\hat {y\_{i}}}=F(x\_{i})}، {\displaystyle n} تعداد داده‌های ماست و {\displaystyle (x\_{i},y\_{i})} داده {\displaystyle i}ام است.

برای پیدا کردن F به صورت مرحله‌ای عمل می‌کنیم. در مرحله m به مدل {\displaystyle F\_{m}} که تا به حال ساخته‌ایم یک مدل دیگر اضافه می‌کنیم به اسم h و مدل {\displaystyle F\_{m+1}} را می‌سازیم، به عبارت دیگر {\displaystyle F\_{m+1}(x)=F\_{m}(x)+h(x)}. مدل h را به گونه‌ای انتخاب می‌کنیم که بتواند تفاضل y با پیش‌بینی مدلِ مرحله قبلی را پیش‌بینی کند یعنی {\displaystyle y-F\_{m}(x)} را، در اینجا پیش‌بینی مرحله قبلی {\displaystyle F\_{m}(x)} است. به عبارت دیگر هدف پیش‌بینی **باقیمانده‌ها**ست، یعنی {\displaystyle y-F\_{m}(x)}. باقیمانده‌ها را از یک منظر دیگر نیز می‌توان دید، آن‌ها در واقع منفی گرادیان مربع خطا هستند، یعنی منفی گرادیان تابع {\displaystyle {\frac {1}{2}}\left(F(x)-y\right)^{2}}.{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }

الگوریتم
--------

فرض کنید داده‌هایی که مدل برای یادگیری از آن‌ها استفاده می‌کند {\displaystyle \{(x\_{1},y\_{1}),\dots ,(x\_{n},y\_{n})\}} باشد و هدف از یادگیری، کمینه کردن یک تابع ضرر به اسم {\displaystyle L} باشد؛ یعنی {\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle {\hat {F}}={\underset {F}{\arg \min }}\,\mathbb {E} \_{x,y}[L(y,F(x))]}

در مدل تقویت گرادیان این کار به صورت متناوب انجام می‌شود و مدل نهایی برابر خواهد بود با {\displaystyle {\hat {F}}(x)=\sum \_{i=1}^{M}\gamma \_{i}h\_{i}(x)+F\_{0}}.

در اینجا {\displaystyle h\_{i}}‌ها مدل‌هایی هستند که از یک گروه از مدل‌های به اسم {\displaystyle {\mathcal {H}}} انتخاب می‌شوند، به عنوان مثال {\displaystyle {\mathcal {H}}} می‌تواند مجموعه درخت‌های تصمیم‌گیری با عمق ۱۰ یا کمتر باشد.

اولین مدل یک عدد ثابت است به اسم {\displaystyle F\_{0}} که به صورت ذیل انتخاب می‌شود: {\displaystyle F\_{0}={\underset {\gamma }{\arg \min }}{\sum \_{i=1}^{n}{L(y\_{i},\gamma )}}}

بقیه مدل‌ها به این صورت ساخته و فراگرفته می‌شوند:{\displaystyle F\_{m}(x)=F\_{m-1}(x)+{\underset {h\_{m}\in {\mathcal {H}}}{\operatorname {arg\,min} }}\left[{\sum \_{i=1}^{n}{L(y\_{i},F\_{m-1}(x\_{i})+h\_{m}(x\_{i}))}}\right]}

برای انجام این مرحله از گرادیان تابع ضرر به این شکل استفاده می‌کنیم:

{\displaystyle {\displaystyle F\_{m}(x)=F\_{m-1}(x)-\gamma \_{m}\sum \_{i=1}^{n}{\nabla \_{F\_{m-1}}L(y\_{i},F\_{m-1}(x\_{i}))}},}

{\displaystyle {\displaystyle \gamma \_{m}={\underset {\gamma }{\arg \min }}{\sum \_{i=1}^{n}{L\left(y\_{i},F\_{m-1}(x\_{i})-\gamma \nabla \_{F\_{m-1}}L(y\_{i},F\_{m-1}(x\_{i}))\right)}}}}

به عبارت دیگر ما بدنبال مدلسازی منفی گرادیان تابع ضرر در هر مرحله هستیم یعنی یک مدل به اسم {\displaystyle h\_{m}} از {\displaystyle {\mathcal {H}}} که بتواند با داده پایین تابع ضرر را کمینه کند:

{\displaystyle \left\{\left(x\_{1},-\nabla \_{F\_{m-1}}L(y\_{1},F\_{m-1}(x\_{1}))\right),\cdots ,\left(x\_{n},-\nabla \_{F\_{m-1}}L(y\_{n},F\_{m-1}(x\_{n}))\right)\right\}}

الگوریتم کلی را می‌توان به شکل پایین خلاصه کرد:

* {\displaystyle F\_{0}={\underset {\gamma }{\arg \min }}{\sum \_{i=1}^{n}{L(y\_{i},\gamma )}}}
* برای m از 1 تا M:
	+ برای i از 1 تا n:
		- {\displaystyle r\_{im}=-\left[{\frac {\partial L(y\_{i},F(x\_{i}))}{\partial F(x\_{i})}}\right]\_{F(x)=F\_{m-1}(x)}}
	+ برای داده‌های {\displaystyle \{(x\_{i},r\_{im})\}\_{i=1}^{n}} یک مدل به اسم {\displaystyle h\_{m}} از {\displaystyle {\mathcal {H}}} انتخاب کن که تابع ضرر را به حداقل برساند، به عبارت دیگر {\displaystyle h\_{m}={\underset {h\in {\mathcal {H}}}{\operatorname {arg\,min} }}\,L\left(r\_{im},h(x\_{i})\right)}
	+ {\displaystyle \gamma \_{m}={\underset {\gamma }{\operatorname {arg\,min} }}\sum \_{i=1}^{n}L\left(y\_{i},F\_{m-1}(x\_{i})+\gamma h\_{m}(x\_{i})\right)}
	+ {\displaystyle F\_{m}(x)=F\_{m-1}(x)+\gamma \_{m}h\_{m}(x)}
* مدل نهایی {\displaystyle F\_{M}}است.

درختِ تقویت گرادیان
-------------------

{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }در این مدل {\displaystyle {\mathcal {H}}} یا مجوعه مدل‌های ما درخت‌های تصمیم‌گیری هستند. در مرحله m، مدل فراگرفته شده یک درخت است به اسم {\displaystyle h\_{m}(x)} که توانسته منفی گرادیانها را مدلسازی کند. این درخت اگر {\displaystyle J\_{m}} برگ داشته باشد، فضای برداری {\displaystyle {\mathcal {X}}} را به {\displaystyle J\_{m}}زیرفضای تجزیه می‌کند، این زیرفضاها با هم اشتراکی ندارند و اجتماعشان کل {\displaystyle {\mathcal {X}}} را تشکیل می‌دهد. این زیرفضاها را {\displaystyle R\_{1m},\ldots ,R\_{J\_{m}m}} می‌نامیم. {\displaystyle h\_{m}(x)} برای هر کدام از این زیرفضاها یک پیش‌بینی جداگانه دارد به اسم {\displaystyle b\_{jm}}. {\displaystyle b\_{jm}} یا میانگین داده‌های خروجی، اگر مسئله رگرسیون باشد، یا مُدِ دسته (دسته‌ای که از همه بیشتر اتفاق افتاده باشد:{\displaystyle h\_{m}(x)=\sum \_{j=1}^{J\_{m}}b\_{jm}\mathbf {1} \_{R\_{jm}}(x)}

{\displaystyle h\_{m}(x)} در ضریبی به اسم {\displaystyle \gamma \_{m}} ضرب می‌شود که تابع ضرر را کمینه کند، به عبارت دیگر {\displaystyle \gamma \_{m}={\underset {\gamma }{\operatorname {arg\,min} }}\sum \_{i=1}^{n}L(y\_{i},F\_{m-1}(x\_{i})+\gamma h\_{m}(x\_{i}))} و مدل در این مرحله به این شکل به‌روز می‌شود: {\displaystyle F\_{m}(x)=F\_{m-1}(x)+\gamma \_{m}h\_{m}(x)}

به پیشنهاد فریدمن به جای اینکه در هر مرحله یک ضریب کلی به اسم {\displaystyle \gamma \_{m}} فراگرفته شود، بهتر است {\displaystyle J\_{m}} ضریب به تعداد تمام زیرفضاهای ایجاد شده توسط {\displaystyle h\_{m}} فراگرفته شود و الگوریتم به این شکل تغییر کند):

{\displaystyle F\_{m}(x)=F\_{m-1}(x)+\sum \_{j=1}^{J\_{m}}\gamma \_{jm}\mathbf {1} \_{R\_{jm}}(x),\quad \gamma \_{jm}={\underset {\gamma }{\operatorname {arg\,min} }}\sum \_{x\_{i}\in R\_{jm}}L(y\_{i},F\_{m-1}(x\_{i})+\gamma )}

### مشخصات درخت

اگر {\displaystyle J} را اندازه تعداد برگهای درخت یا همان تعداد زیرفضاهای {\displaystyle {\mathcal {X}}} بگیریم معمولاً {\displaystyle 4\leq J\leq 8} مدل خوبی ایجاد می‌کند.{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }{\displaystyle }

### اهمیت متغیرها

این الگوریتم می‌تواند، مانند درخت تصمیم یا جنگل تصادفی، برای رتبه‌بندی اهمیت متغیرها به کار رود. فرمول اهمیت متغیرها در الگوریتم تقویت گرادیان با همان درخت تصمیم یکی است، اما در این الگوریتم امتیاز تمام یادگیرنده‌های ضعیف (یعنی درخت‌های تصمیم) میانگین‌گیری می‌شود.

جستارهای وابسته
---------------

* آدابوست
* جنگل تصادفی

منابع
-----

1. 1 2  Piryonesi, S. M.; El-Diraby, T. E. (2020) [Published online: December 21, 2019]. "Data Analytics in Asset Management: Cost-Effective Prediction of the Pavement Condition Index". *Journal of Infrastructure Systems*. **26** (1). doi:10.1061/(ASCE)IS.1943-555X.0000512.`{{cite journal}}`: نگهداری CS1: url-status (link)
2. 1 2 3 4  Friedman, J. H. (February 1999). "Greedy Function Approximation: A Gradient Boosting Machine" (PDF). `{{cite journal}}`: Cite journal requires `|journal=` (help)
3. ↑  Piryonesi, S. Madeh; El-Diraby, Tamer E. (2020-06). "Role of Data Analytics in Infrastructure Asset Management: Overcoming Data Size and Quality Problems". *Journal of Transportation Engineering, Part B: Pavements*. **146** (2): 04020022. doi:10.1061/jpeodx.0000175. ISSN 2573-5438. `{{cite journal}}`: Check date values in: `|date=` (help)
4. 1 2 3 4 5  Hastie, Trevor (2009). *The Elements of Statistical Learning - Data Mining, Inference, and Prediction, Second Edition* (به انگلیسی). New York: Springer.
5. 1 2 3 4 5  Hastie, T.; Tibshirani, R.; Friedman, J. H. (2009). "10. Boosting and Additive Trees". *The Elements of Statistical Learning* (2nd ed.). New York: Springer. pp. 337–384. ISBN 0-387-84857-6. Archived from the original on 2009-11-10.
6. ↑  Note: in case of usual CART trees, the trees are fitted using least-squares loss, and so the coefficient {\displaystyle b\_{jm}} for the region {\displaystyle R\_{jm}} is equal to just the value of output variable, averaged over all training instances in {\displaystyle R\_{jm}}.