Smart-World Surf

Unit 6: עצי החלטה ואנסמבלים

מודלים מבוססי עצים ושיטות אנסמבל לשיפור ביצועים.
בניית עץ החלטה (ID3CART)גיזום עצים (Pruning)יערות אקראיים (Random Forests)הגברת ביצועים (Boosting - AdaBoostGradient Boosting)

ברוכים הבאים ליחידת הלימוד בנושא עצי החלטה ואנסמבלים. יחידה זו תעמיק באחד ממודלי למידת המכונה האינטואיטיביים והנפוצים ביותר – עצי ההחלטה – ותציג שיטות אנסמבל מתקדמות המשלבות מספר מודלים לשיפור משמעותי בביצועים, תוך התמודדות עם אתגרים כמו התאמת יתר (Overfitting). נכסה את הבסיס התיאורטי, אלגוריתמים מרכזיים ויישומים מעשיים, מתוך הבנה שנושא זה מהווה אבן יסוד בקורס ומופיע רבות בבחינות.

עצי החלטה: הבסיס למודלים מורכבים

עץ החלטה הוא מודל למידה מבוסס עץ המשמש הן לסיווג והן לרגסיה. הוא מחלק את מרחב התכונות באופן היררכי באמצעות סדרת שאלות פשוטות (פיצולים), עד שמגיעים לעלה המייצג את התחזית הסופית.

בניית עץ החלטה: אלגוריתמים מרכזיים

בניית עץ החלטה כרוכה בבחירת הפיצול הטוב ביותר בכל צומת, במטרה למקסם את טוהר הצמתים שנוצרו. אלגוריתמים שונים משתמשים בקריטריונים שונים לבחירה זו.

אנטרופיה (Entropy): מדד לאי-סדר או אי-וודאות בסט נתונים. ככל שהאנטרופיה גבוהה יותר, כך הנתונים פחות טהורים (יותר מעורבים).
רווח אינפורמציה (Information Gain): הירידה באנטרופיה בעקבות פיצול מסוים. אלגוריתמים כמו ID3 שואפים למקסם רווח אינפורמציה.
מדד ג'יני (Gini Impurity): מדד לטוהר של צומת. הוא מודד את ההסתברות שדוגמה שנבחרה באקראי מהצומת תסווג באופן שגוי אם תוויתה תיבחר באקראי מהתפלגות התוויות בצומת. אלגוריתמים כמו CART שואפים למזער את מדד ג'יני.

ID3 (Iterative Dichotomiser 3)

אלגוריתם קלאסי לבניית עצי החלטה. מתאים בעיקר לתכונות קטגוריות. משתמש ברווח אינפורמציה כקריטריון לבחירת הפיצול הטוב ביותר. נוטה לייצר עצים עמוקים ורחבים.

CART (Classification and Regression Trees)

אלגוריתם גמיש יותר, מתאים הן לתכונות קטגוריות והן לתכונות רציפות. משתמש במדד ג'יני לסיווג ובשגיאת ריבועים ממוצעת (MSE) לרגסיה. בונה עצים בינאריים (כל פיצול יוצר שני צמתים-בנים בלבד).

גיזום עצים (Pruning): מניעת התאמת יתר

עצי החלטה נוטים מאוד להתאמת יתר (Overfitting) לנתוני האימון, במיוחד כאשר הם עמוקים ומורכבים מדי. גיזום הוא תהליך שמטרתו לפשט את העץ ולהפחית את מורכבותו, ובכך לשפר את יכולת ההכללה שלו לנתונים חדשים.

סוגי גיזום

  • גיזום מוקדם (Pre-pruning): עצירת בניית העץ מראש, לפני שהוא מגיע למורכבות יתר. דוגמאות: הגבלת עומק מקסימלי, הגבלת מספר דוגמאות מינימלי בעלה, או עצירה כאשר רווח האינפורמציה מפיצול אינו עולה על סף מסוים.
  • גיזום מאוחר (Post-pruning): בניית עץ מלא ולאחר מכן הסרת ענפים או עלים שאינם תורמים משמעותית לביצועים על נתוני ולידציה. שיטה זו נחשבת לרוב יעילה יותר, אך יקרה יותר חישובית.

שיטות אנסמבל: כוחה של קבוצה

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

יערות אקראיים (Random Forests)

יערות אקראיים הם שיטת אנסמבל פופולרית המבוססת על עצי החלטה. הם משתמשים בטכניקת Bagging (Bootstrap Aggregating) בשילוב עם אקראיות נוספת.

Bagging: יצירת מספר רב של דגימות אימון (עם החזרה) מתוך סט נתוני האימון המקורי. על כל דגימה כזו נבנה מודל בסיסי נפרד.

ב-Random Forest, לכל עץ בודד בונים דגימת Bootstrap נפרדת. בנוסף, בכל פיצול בצומת, האלגוריתם בוחר תת-קבוצה אקראית של תכונות בלבד מתוך כלל התכונות הזמינות. זה מפחית את המתאם בין העצים ומגביר את מגוון המודלים, מה שמוביל להפחתה משמעותית בשונות (Variance) של המודל הכולל, מבלי להגדיל באופן משמעותי את ההטיה (Bias).

הגברת ביצועים (Boosting)

Boosting היא משפחה של אלגוריתמי אנסמבל הפועלים באופן סדרתי. כל מודל נבנה בזה אחר זה, כאשר כל מודל מתמקד בתיקון הטעויות שנעשו על ידי המודלים הקודמים לו. זה מוביל להפחתה בהטיה (Bias) של המודל הכולל.

AdaBoost (Adaptive Boosting)

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

Gradient Boosting

גישה כללית יותר ל-Boosting. במקום להתמקד בדוגמאות שסווגו לא נכון, Gradient Boosting בונה מודלים חדשים שמנסים לחזות את "שאריות השגיאה" (Residuals) של המודל המצטבר הקודם. הוא משתמש בגרדיאנט יורד (Gradient Descent) כדי למזער פונקציית הפסד. זהו אלגוריתם חזק וגמיש מאוד, המשמש בבסיס של מודלים כמו XGBoost, LightGBM ו-CatBoost.

Random Forests vs. Boosting: זוהי נקודה קריטית לבחינה. בעוד ש-Random Forests מפחיתים שונות (Variance) על ידי בניית עצים מקבילים ובלתי תלויים יחסית, Boosting מפחית הטיה (Bias) על ידי בניית עצים סדרתיים שמתקנים זה את זה. Random Forests פחות רגישים לרעש ונתונים חריגים, בעוד ש-Boosting יכול להיות רגיש יותר, אך לרוב משיג ביצועים טובים יותר במידה ומכוונן היטב. הבנה מעמיקה של ההבדלים הללו ושל מתי להשתמש בכל שיטה היא חיונית.

שאלות לדיון

  • הסבר את ההבדל העיקרי בין אלגוריתם ID3 ל-CART בבניית עץ החלטה, והדגם מתי תעדיף להשתמש בכל אחד מהם.
  • כיצד גיזום עצים מסייע במניעת התאמת יתר? השווה בין גיזום מוקדם למאוחר והצג יתרון וחיסרון לכל שיטה.
  • תיאר את המנגנון שבו Random Forests מפחיתים את השונות (Variance) של המודל, והסבר מדוע הם נחשבים למודלים יציבים.
  • השווה בין AdaBoost ל-Gradient Boosting. מהו העיקרון המרכזי שמאחורי כל אחד מהם, וכיצד הם נבדלים בדרך שבה הם מתקנים טעויות?

נקודות לתשובת מודל

  • ID3 vs. CART: ID3 - קטגורי, רווח אינפורמציה, עצים רחבים. CART - קטגורי/רציף, ג'יני/MSE, עצים בינאריים. CART גמיש יותר.
  • גיזום: מונע התאמת יתר. מוקדם - עוצר בנייה (מהיר, פחות אופטימלי). מאוחר - בונה ואז מקצץ (איטי, לרוב אופטימלי יותר).
  • Random Forests: Bagging + אקראיות תכונות. בונה עצים בלתי תלויים. ממוצע התחזיות מפחית שונות. יציב, פחות רגיש לרעש.
  • Boosting (AdaBoost, Gradient Boosting): סדרתי, מתקן טעויות. AdaBoost - משקלות לדוגמאות. Gradient Boosting - מנבא שאריות שגיאה באמצעות גרדיאנט יורד, כללי יותר. שניהם מפחיתים הטיה.
Spotted an error or something missing?
← Previous
מכונות וקטורים תומכים (SVM)
Next →
הערכת מודל ובחירה