Gradient Boosting و XGBoost

Gradient Boosting را به‌عنوان گرادیان کاهشی در فضای توابع ببینی و بدانی XGBoost چه بهبودهایی به آن اضافه کرده است.

15 دقیقه مطالعه · 5 سؤال تمرینی · یادگیری ماشین میانی و پیشرفته

گرادیان کاهشی در فضای توابع

در Gradient Boosting مدل به‌صورت جمعی ساخته می‌شود:

Fm(x)=Fm−1(x)+ν hm(x)F_m(x) = F_{m-1}(x) + \nu\,h_m(x)

که در آن hmh_m (معمولاً یک درخت کوچک) روی شبه‌باقیمانده‌ها برازش می‌شود. شبه‌باقیمانده‌ها گرادیان منفی زیان نسبت به پیش‌بینی فعلی‌اند:

ri=−∂L(yi,F)∂F∣F=Fm−1(xi)r_{i} = -\left.\frac{\partial L(y_i, F)}{\partial F}\right|_{F = F_{m-1}(x_i)}
  • برای زیان مربعات 12(y−F)2\tfrac12(y-F)^2:   ri=yi−Fm−1(xi)\;r_i = y_i - F_{m-1}(x_i)، یعنی همان باقیمانده‌ی معمولی.
  • برای لگ‌لاس در دسته‌بندی دودویی با y∈{0,1}y \in \{0,1\} و p=σ(F)p = \sigma(F):   ri=yi−pi\;r_i = y_i - p_i.

یعنی هر درخت جدید یک «قدم گرادیان» در فضای توابع است.

تنظیم‌های مهم

  • نرخ یادگیری (Shrinkage) ν\nu: مقدار کوچک (مثلاً ۰٫۰۵ تا ۰٫۱) با درخت‌های بیشتر معمولاً تعمیم بهتری می‌دهد.
  • عمق درخت: تعیین می‌کند مدل تا چه مرتبه‌ای از تعامل بین ویژگی‌ها را یاد بگیرد. عمق ۳ تا ۸ رایج است.
  • زیرنمونه‌گیری: آموزش هر درخت روی بخشی تصادفی از داده (Stochastic Gradient Boosting) هم سرعت می‌دهد و هم منظم‌سازی است.
  • توقف زودهنگام: برخلاف جنگل تصادفی، Gradient Boosting با تعداد درخت بیش از حد واقعاً بیش‌برازش می‌کند. تعداد درخت را با داده‌ی اعتبارسنجی تعیین کنید.

XGBoost و LightGBM

XGBoost تابع هدف را با بسط تیلور مرتبه‌ی دوم تقریب می‌زند. برای هر برگ، GG مجموع گرادیان‌ها و HH مجموع هسین‌های نمونه‌های آن برگ است. با جریمه‌ی λ2∑wj2\tfrac{\lambda}{2}\sum w_j^2 روی وزن برگ‌ها، وزن بهینه‌ی برگ:

w∗=−GH+λw^* = -\frac{G}{H + \lambda}

ویژگی‌های دیگر:

  • جریمه روی تعداد برگ‌ها (γ\gamma) برای هرس.
  • یادگرفتن جهت پیش‌فرض برای مقادیر گمشده در هر تقسیم.

LightGBM با جستجوی تقسیم مبتنی بر هیستوگرام و رشد برگ‌محور (Leaf-wise) سرعت را خیلی بالا برده است.

تمرین‌های این درس را حل کن (رایگان)