מדריך מקיף להגברת אלגוריתמים של למידת מכונות



בלוג זה מתמקד כולו באופן שבו Boosting Machine Learning עובד וכיצד ניתן ליישם אותו כדי להגביר את היעילות של מודלים של Machine Learning.

עם כל כך הרבה התקדמות בתחום הבריאות, השיווק, העסקים וכן הלאה, זה הפך להיות צורך לפתח מתקדם ומורכב יותר . Boosting Machine Learning היא טכניקה כזו בה ניתן להשתמש כדי לפתור בעיות מורכבות, מונעות נתונים, בעולם האמיתי. בלוג זה מתמקד כולו באופן בו Boosting Machine Learning עובד וכיצד ניתן ליישם אותו כדי להגביר את היעילות של מודלים של Machine Learning.

כדי לקבל ידע מעמיק בבינה מלאכותית ולמידת מכונה, אתה יכול להירשם לשידור חי מאת אדוריקה עם תמיכה 24/7 וגישה לכל החיים.





הנה רשימה של נושאים שיוסקרו בבלוג זה:

  1. מדוע משתמשים בתגבור?
  2. מה זה תוספת?
  3. כיצד פועל הגברת האלגוריתם?
  4. סוגי התגברות
  5. הַדגָמָה

מדוע משתמשים בשיפור הגבהה?

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



  1. לתמונה אוזניים מחודדות: חתול

    איך לעשות כוחות בג'אווה
  2. לתמונה עיניים בצורת חתול: חתול

  3. לתמונה יש איברים גדולים יותר: כלב



  4. לתמונה טפרים מחודדים: חתול

  5. לתמונה מבנה פה רחב יותר: כלב

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

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

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

אז זה מביא אותנו לשאלה,

מה זה תוספת?

Boosting היא טכניקת למידת אנסמבל המשתמשת בקבוצת אלגוריתמי Machine Learning כדי להמיר לומד חלש ללומדים חזקים על מנת להגביר את דיוק המודל.

What-Is-Boosting-Boosting-Machine-Learning-Edureka

מה זה הגבהה - למידת מכונות הגבהה - אדוריקה

כמו שציינתי Boosting היא שיטת לימוד אנסמבל, אבל מה זה בעצם למידת אנסמבל?

מהו אנסמבל בלימוד מכונה?

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

מהי למידת אנסמבל - הגברת למידת מכונה - אדוריקה

להלן דנתי גם בהבדל בין Boosting ו- Bagging.

הגברה לעומת שקיות

ניתן לבצע למידת אנסמבל בשתי דרכים:

  1. אנסמבל רציף, הידוע בכינויו מגביר , כאן הלומדים החלשים מיוצרים ברצף במהלך שלב האימון. ביצועי המודל משופרים על ידי הקצאת משקל גבוה יותר לדגימות הקודמות המסווגות באופן שגוי. דוגמה לחיזוק הוא האלגוריתם של AdaBoost.

  2. סט מקביל , הידוע בכינויו שקיות , כאן הלומדים החלשים מיוצרים במקביל בשלב האימון. ניתן להגדיל את ביצועי המודל על ידי אימון מקביל של מספר לומדים חלשים על מערכי נתונים עם אתחול. דוגמה לשקית הוא היער האקראי אַלגוֹרִיתְם.

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

כיצד פועל הגברת האלגוריתם?

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

איך עובד הגברת האלגוריתם - הגברת למידת מכונות - אדוריקה

כך פועל האלגוריתם:

שלב 1: האלגוריתם הבסיסי קורא את הנתונים ומקצה משקל שווה לכל תצפית לדוגמא.

שלב 2: ניתנים תחזיות שגויות של לומד הבסיס. בתבנית הבאה, תחזיות שווא אלה מוקצות ללומד הבסיס הבא עם משקל גבוה יותר על התחזיות השגויות הללו.

שלב 3: חזור על שלב 2 עד שהאלגוריתם יכול לסווג נכון את הפלט.

לכן, המטרה העיקרית של Boosting היא כדי להתמקד יותר בתחזיות המסווגות להחמצה.

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

סוגי התגברות

ישנן שלוש דרכים עיקריות באמצעותן ניתן לבצע דחיפה:

  1. Boosting Adaptive או AdaBoost

  2. שיפוע הדרגתי

  3. XGBoost

אדון ביסודות שמאחורי כל אחד מסוגים אלה.

אילו מהדברים הבאים הם דוגמאות להצהרות שליטה?

הגברה מסתגלת

  • AdaBoost מיושם על ידי שילוב של כמה לומדים חלשים ללומד חזק אחד.

  • הלומדים החלשים ב- AdaBoost לוקחים בחשבון תכונת קלט אחת ומשרטטים עץ החלטה מפוצל יחיד הנקרא גדם ההחלטות. כל תצפית נשקלת באותה מידה תוך ציור גדם ההחלטה הראשון.

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

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

  • שוב אם תצפיות מסווגות בצורה שגויה, משקלן גבוה יותר ותהליך זה נמשך עד שכל התצפיות נופלות למעמד הנכון.

  • Adaboost יכול לשמש הן לסיווג והן לבעיות מבוססות רגרסיה, אולם הוא נפוץ יותר למטרות סיווג.

שיפוע הדרגתי

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

ההבדל בסוג זה של חיזוק הוא שהמשקולות לתוצאות לא מסווגות באופן שגוי, במקום זאת, שיטת Gradient Boosting מנסה לייעל את פונקציית האובדן של הלומד הקודם על ידי הוספת מודל חדש שמוסיף לומדים חלשים על מנת להפחית את פונקציית האובדן.

הרעיון העיקרי כאן הוא להתגבר על הטעויות בתחזיות הלומד הקודם. סוג זה של חיזוק כולל שלושה מרכיבים עיקריים:

  1. תפקוד אובדן שצריך לשפר.

  2. לומד חלש לחיזוי חישובים וגיבוש לומדים חזקים.

  3. An מודל תוסף שיסדיר את פונקציית האובדן.

כמו AdaBoost, Boosting Gradient יכול לשמש גם לבעיות סיווג וגם רגרסיה.

XGBoost

XGBoost היא גרסה מתקדמת של שיטת הגדלת שיפוע, זה ממש אומר eXtreme Gradient Boosting. XGBoost שפותח על ידי Tianqi Chen, נכלל בקטגוריה של קהילת למידת מכונות מבוזרות (DMLC).

המטרה העיקרית של אלגוריתם זה היא להגביר את מהירות ויעילות החישוב. אלגוריתם Boosting Gradient Descenting מחשב את הפלט בקצב איטי יותר מכיוון שהם מנתחים ברצף את מערך הנתונים, לכן XGBoost משמש להגברת הביצועים של המודל או להגביר אותו במיוחד.

XGBoost - הגברת למידת מכונות - אדוריקה

XGBoost נועד להתמקד במהירות חישובית וביעילות המודל. התכונות העיקריות המסופקות על ידי XGBoost הן:

  • במקביל יוצר עצי החלטה.

  • הטמעת שיטות מחשוב מבוזרות להערכת מודלים גדולים ומורכבים.

  • שימוש במחשוב מחוץ לליבה לניתוח מערכי נתונים ענקיים.

  • יישום אופטימיזציה למטמון כדי לנצל את המשאבים בצורה הטובה ביותר.

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

הגברת למידת מכונה בפייתון

כתב ויתור קצר: אשתמש בפייתון להפעלת הדגמה זו, כך שאם אינך מכיר את פייתון, תוכל לעבור על הבלוגים הבאים:

  1. כיצד ללמוד פיתון 3 מ- Scratch - מדריך למתחילים

עכשיו הגיע הזמן ללכלך את הידיים ולהתחיל בקידוד.

הצהרת בעיה: ללמוד מערך נתוני פטריות ולבנות מודל למידת מכונה שיכול לסווג פטרייה כרעילה או לא, על ידי ניתוח התכונות שלה.

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

הִגָיוֹן: לבנות מודל למידת מכונה על ידי שימוש באלגוריתמי Boosting על מנת לחזות אם פטרייה אכילה או לא.

להמיר תאריך מחרוזת לתאריך

שלב 1: ייבא את החבילות הנדרשות

מ- sklearn.ensemble מייבא AdaBoostClassifier מ- sklearn.preprocessing ייבוא ​​LabelEncoder מ- sklearn.tree יבוא DecisionTreeClassifier מייבא פנדות כ- pd # ייבוא ​​train_test_split מפונקציה sklearn.model_selection יבוא train_test_split # יבוא מדד מדד skikit למד חישוב מדד מדויק עבור חישוב מדדי מדד מדויק

שלב 2: ייבא את מערך הנתונים

# טען במערך הנתונים = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

שלב 3: עיבוד נתונים

# הגדר את שמות העמודות dataset.column = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'חבורות', 'ריח', 'zill-attachment', 'gill-spacing ',' גודל זימים ',' צבע זימים ',' צורת גבעול ',' גבעול-שורש ',' גבעול-משטח-מעל טבעת ',' גבעול-משטח-מתחת לטבעת ',' גבעול-צבע -על טבעת ',' גבעול-צבע מתחת לטבעת ',' סוג רעלה ',' צבע רעלה ',' מספר טבעת ',' סוג טבעת ',' נבג-הדפסת צבע ',' אוכלוסייה ',' בית גידול '] עבור התווית במערך הנתונים. עמודות: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) # הצגת מידע אודות הדפסת מערך הנתונים (dataset.info ( )) Int64Index: 8124 ערכים, 6074 עד 686 עמודות נתונים (סה'כ 23 עמודות): יעד 8124 non-null int32 cap-shape 8124 non-null int32 cap-surface 8124 non-null int32 cap-color 8124 non-null int32 חבורות 8124 ריח int32 לא ריק 8124 מצמד זיזים int32 8324 מרווח זימים int32 8124 non32 ריק32 גודל זימים 8124 int32 צבע זימים 8124 int32 צורה גבעול int12 8124 int32 intull גבעול-שורש 8124 int32 int-null גבעול-משטח-מעל-טבעת 8124 לא-ריק int32 גבעול-משטח-מתחת לטבעת 8124 לא-null int32 גבעול-צבע-מעל-טבעת 8124 לא-null int32 גבעול-צבע מתחת לטבעת 8124 לא-null int32 רעלה- סוג 8124 int32 int32 רעלה-צבע 8124 int32 int32 טבעת-מספר 8124 non-null int32 טבעת-סוג 8124 non-null int32 נבג-הדפסת צבע 8124 non-null int32 אוכלוסייה 8124 non-null int32 בית גידול 8124 לא- null int32 dtypes: int32 (23) שימוש בזיכרון: 793.4 KB

שלב 4: שחבור נתונים

X = dataset.drop (['target'], axis = 1) Y = dataset ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

שלב 5: בנה את המודל

מודל = DecisionTreeClassifier (קריטריון = 'אנטרופיה', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

בקטע הקוד שלמעלה יישמנו את האלגוריתם AdaBoost. הפונקציה 'AdaBoostClassifier' לוקחת שלושה פרמטרים חשובים:

  • base_estimator: אומדן הבסיס (לומד חלש) הוא עצות החלטה כברירת מחדל
  • n_estimator: שדה זה מציין את מספר הלומדים הבסיסיים שיש להשתמש בהם.
  • learning_rate: שדה זה מציין את קצב הלמידה, אותו הגדרנו לערך ברירת המחדל, כלומר 1.
# התאם את המודל עם נתוני אימון boostmodel = AdaBoost.fit (X_train, Y_train)

שלב 6: הערכת מודל

# הערך את הדיוק של המודל y_pred = boostmodel.predict (X_test) התחזיות = מדדים.דיוק_סקור (Y_test, y_pred) # חישוב הדיוק באחוזי הדפסה ('הדיוק הוא:', חיזויים * 100, '%') הדיוק הוא: 100.0%

קיבלנו דיוק של 100% וזה מושלם!

אז עם זה, אנו מגיעים לסוף הבלוג הזה של למידת מכונות Boosting. אם ברצונך ללמוד עוד על Machine Learning, תוכל לקרוא את הבלוגים הבאים:

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