XGBoost

XGBoost<ref name="source-code"></ref> היא ספריית תוכנה קוד פתוח המספקת מסגרת נירמול (regularizing) וחיזוק גרדיאנט לשפות: C ++, Java,Python,<ref name="xgboost-python"></ref><ref name="xgboost-cran"></ref> ג'וליה,<ref name="xgboost-julia"></ref> Perl,<ref name="xgboost-perl"></ref> וסקאלה. XGBoost עובדת על לינוקס, Windows,<ref name="xgboost-windows"></ref> ו- macOS.<ref name="xgboost-macos"></ref> מתוך תיאור הפרויקט, היא שואפת לספק "ספרייה להגברת הדרגתיות ניתנת להרחבה, ניידת ומבוזרת (GBM, GBRT, GBDT). XGBoost פועל על מכונה בודדת, כמו גם על מסגרות עיבוד מבוזרות Apache Hadoop, Apache Spark, Apache Flink ו- Dask.<ref name="Dask-docs"></ref><ref></ref>

הספרייה זכתה לפופולריות רבה ותשומת לב בתור האלגוריתם המועדף עבור צוותים מנצחים רבים של תחרויות למידת מכונה.<ref name="xgboost-competition-winners"></ref>

== היסטוריה ==
XGBoost התחילה כפרויקט מחקר של טיאנקי צ'ן<ref name="history"></ref> כחלק מקבוצת ה-Distributed (Deep) Machine Learning Community (או DMLC). בתחילה, כיישום מסוף שניתן להגדיר באמצעות קובץ תצורה של libsvm. הוא התפרסם בחוגי התחרות ב-ML לאחר השימוש בו בפתרון המנצח של אתגר למידת המכונה של Higgs. זמן קצר לאחר מכן, חבילות Python ו-R נבנו, ול-XGBoost יש כעת הטמעת חבילות עבור Java, Scala, Julia, Perl ושפות אחרות. זה הביא את הספרייה למפתחים נוספים ותרם לפופולריות שלה בקרב קהילת Kaggle, שם היא שימשה למספר רב של תחרויות.<ref name="xgboost-competition-winners" />

עד מהרה הוא שולב עם מספר חבילות אחרות מה שהופך אותו קל יותר לשימוש בקהילות שלהם. כעת הוא שולב עם scikit-learn עבור משתמשי Python ועם חבילת [https://cran.rstudio.com/web/packages/caret/vignettes/caret.html caret] עבור משתמשי R. ניתן לשלב אותו גם במסגרות Data Flow כמו Apache Spark, Apache Hadoop ו- Apache Flink באמצעות ה-Rabit המופשט<ref name="rabit"></ref> ו-XGBoost4J.<ref name="xgboost4j"></ref> ספריית XGBoost זמינה גם ב- OpenCL עבור FPGAs.<ref name="xgboost FPGA"></ref> יישום יעיל וניתן להרחבה של XGBoost פורסם על ידי Tianqi Chen ו-Carlos Guestrin.

== מאפיינים ==
תכונות בולטות של XGBoost שמבדילות אותו מאלגוריתמים אחרים של Gradient boosting כוללות:<ref></ref><ref></ref><ref></ref>
* ענישה חכמה של עצים
* כיווץ פרופורציונלי של צמתי עלים
* ניוטון בוסטינג
* פרמטר אקראי יתיר
* יישום על מערכות בודדות, מבוזרות ומחשוב מחוץ לליבה
* בחירת מאפיינים (Feature selection) אוטומטית

== אלגוריתם ==
בשונה מאלגוריתם מסוג חיזוק גרדיאנט (gradient boosting) שפועל כדעיכת גרדיאנט, XGBoost עובד כ"ניוטון-רפסון" במרחב הפונקציונלי. שערוך טיילור מסדר שני משמש בתור פונקציית ההפסד כדי לקשר למתודת ניוטון-רפסון.

אלגוריתם גנרי של XGBoost, עם נתוני קלט: <math>\{(x_i, y_i)\}_{i=1}^N</math>, פונקציית הפסד: <math>L(y, F(x))</math>, מספר "לומדים חלשים": <math>M</math>, וקצב למידה: <math>\alpha</math>.

# מודל ראשוני עם ערך 0:
#: <math>\hat{f}_{(0)}(x) = \underset{\theta}{\arg\min} \sum_{i=1}^N L(y_i, \theta).</math>
# עבור = 1 עד :
## חישוב הגרדיאנטים וההסיאנים:
##: <math>\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)}.</math>
##: <math>\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)}.</math>
## התאמת לומד בסיסי (או לומד חלש, כמו עץ) בעזרת נתוני האימון <math>\displaystyle\{x_i,-\frac{\hat{g}_m(x_i)}{\hat{h}_m(x_i)}\}_{i=1}^{N}</math> על ידי פתירת בעיית האופטימיזציה שלהלן:
##:<math>\hat{\phi}_m=\underset{\phi \in \mathbf{\Phi}}{\arg\min}\sum_{i=1}^{N}\frac{1}{2}\hat{h}_m(x_i)\left[-\frac{\hat{g}_m(x_i)}{\hat{h}_m(x_i)}-\phi(x_i) \right]^2.</math>
##:<math> \hat{f}_m(x)=\alpha \hat{\phi}_m(x).</math>
## עדכון המודל:
##: <math>\hat{f}_{(m)}(x) = \hat{f}_{(m-1)}(x) + \hat{f}_m(x).</math>
# פלט <math>\hat{f}(x)=\hat{f}_{(M)}(x)=\sum_{m=0}^{M}\hat{f}_m(x).</math>

== פרסים ==
* פרס ג'ון צ'יימברס <small>(2016)</small><ref name="john-chambers"></ref>
* פרס פיזיקת אנרגיה גבוהה פוגשת למידה חישובית (HEP meets ML) <small>(2016)</small><ref name="hep-meets-ml"></ref>

== הערות שוליים ==

קטגוריה:ערכים שבהם תבנית אתר רשמי אינה מתאימה להוספה אוטומטית
קטגוריה:תוכנות שהושקו ב-2014
קטגוריה:למידת מכונה