המונח מאפיין הוא שם נרדף למספר הרכיבים בוקטור מאפיינים. חלק מהתכונות הקטגוריות הן בעלות מאפיינים פחות מגוונים. לדוגמה:
שם התכונה | מספר הקטגוריות | קטגוריות לדוגמה |
---|---|---|
snowed_today | 2 | True, False |
skill_level | 3 | מתחילים, משתמשים מתקדמים, מומחים |
season | 4 | חורף, אביב, קיץ, סתיו |
day_of_week | 7 | שני, שלישי, רביעי |
כוכב לכת | 8 | כוכב חמה, נוגה, כדור הארץ |
אם למאפיין קטגוריאלי יש מספר קטן של קטגוריות אפשריות, אפשר לקודד אותו כמילון. כשמשתמשים בקידוד של אוצר מילים, המודל מתייחס לכל ערך קטגורי אפשרי כמאפיין נפרד. במהלך האימון, המודל לומד משקלים שונים לכל קטגוריה.
לדוגמה, נניח שאתם יוצרים מודל לחיזוי המחיר של רכב על סמך, בין היתר, מאפיין קטגוריאלי בשם car_color
.
יכול להיות שמכוניות אדומות שווה יותר ממכוניות ירוקות.
מאחר שהיצרנים מציעים מספר מוגבל של צבעים חיצוניים, המאפיין car_color
הוא מאפיין קטגוריאלי בעל ממדים נמוכים.
באיור הבא מוצגת מילון (ערכים אפשריים) של car_color
:
תרגול: בדיקת ההבנה
מספרי מדדים
מודלים של למידת מכונה יכולים לבצע מניפולציות רק במספרים בספרות עשרוניות. לכן צריך להמיר כל מחרוזת למספר אינדקס ייחודי, כמו באיור הבא:
אחרי שממירים מחרוזות למספרי אינדקס ייחודיים, צריך לעבד את הנתונים בצורה נוספת כדי לייצג אותם בדרכים שיעזרו למודל ללמוד קשרים משמעותיים בין הערכים. אם נתוני המאפיינים הקטגוריים יישארו כמספרים שלמים עם אינדקס ויוטמעו במודל, המודל יתייחס לערכים עם האינדקס כמספרים רציפים של נקודה צפה. לאחר מכן, המודל יחשב שהסיכוי ל'סגול' גבוה פי שישה מהסיכוי ל'כתום'.
קידוד One-hot
השלב הבא ביצירת אוצר מילים הוא להמיר כל מספר אינדקס לקידוד one-hot שלו. בקידוד one-hot:
- כל קטגוריה מיוצגת על ידי וקטור (מערך) של N אלמנטים, כאשר N הוא מספר הקטגוריות. לדוגמה, אם ל-
car_color
יש שמונה קטגוריות אפשריות, אז וקטור ה-one-hot שמייצג אותו יכלול שמונה רכיבים. - בדיוק אחד מהאלמנטים בוקטור one-hot מקבל את הערך 1.0, וכל שאר הרכיבים מקבלים את הערך 0.0.
לדוגמה, בטבלה הבאה מוצגת הקידוד של one-hot לכל ערך ב-car_color
:
תכונה | אדום | Orange | כחול | צהוב | ירוק | שחור | סגול | חום |
---|---|---|---|---|---|---|---|---|
'אדום' | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
"Orange" | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
'כחול' | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
'צהוב' | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
'ירוק' | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
'Black' | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
'Purple' | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
'חום' | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
הווקטור של המאפיין היחיד, ולא המחרוזת או מספר האינדקס, מועבר לווקטור המאפיינים. המודל לומד משקל נפרד לכל רכיב של ווקטור המאפיינים.
באיור הבא מוצגות הטרנספורמציות השונות שמייצגות את אוצר המילים:
ייצוג דליל
מאפיין שהערכים שלו הם בעיקר אפס (או ריקים) נקרא מאפיין דל. הרבה תכונות קטגוריות, כמו car_color
, הן בדרך כלל תכונות דלילות.
ייצוג דל פירושו שמאחסנים את המיקום של הערך 1.0 בווקטור דל. לדוגמה, הווקטור החד-חם של "Blue"
הוא:
[0, 0, 1, 0, 0, 0, 0, 0]
מכיוון ש-1
נמצא במיקום 2 (כשמתחילים את הספירה ב-0), הייצוג הדליל של וקטור ה-one-hot הקודם הוא:
2
שימו לב שהייצוג הדליל צורך הרבה פחות זיכרון מאשר הווקטור של שמונה הרכיבים מסוג one-hot. חשוב לזכור שהאימון של המודל צריך להתבצע על הווקטור של ה-one-hot, ולא על הייצוג הדליל.
חריגים בנתונים קטגוריים
בדומה לנתונים מספריים, גם נתונים קטגוריאליים מכילים ערכים חריגים. נניח ש-car_color
מכיל לא רק את הצבעים הפופולריים, אלא גם כמה צבעים חריגים שמשמשים לעיתים רחוקות, כמו "Mauve"
או "Avocado"
.
במקום להקצות לכל אחד מהצבעים החריגים האלה קטגוריה נפרדת, אפשר לקבץ אותם בקטגוריה אחת כללית שנקראת out-of-vocabulary (OOV). במילים אחרות, כל הצבעים של ערכים חריגים מקובצים לקטגוריה אחת של ערכים חריגים. המערכת לומדת משקל יחיד לקטגוריה הזו של חריגים.
קידוד של מאפיינים קטגוריאליים בממדים גבוהים
למאפיינים קטגוריאליים מסוימים יש מספר רב של מאפיינים, כמו אלה שמפורטים בטבלה הבאה:
שם התכונה | מספר הקטגוריות | קטגוריות לדוגמה |
---|---|---|
words_in_english | כ-500,000 | "happy", "walking" |
US_postal_codes | כ-42,000 | "02114", "90301" |
last_names_in_Germany | ~850,000 | "Schmidt", "Schneider" |
כשמספר הקטגוריות גבוה, בדרך כלל לא כדאי להשתמש בקידוד one-hot. בדרך כלל, הטמעות, שמפורטות במודול נפרד בנושא הטמעות, הן בחירה טובה יותר. הטמעות (embeddings) מפחיתות באופן משמעותי את מספר המאפיינים, וכך תורמות למודלים בשתי דרכים חשובות:
- בדרך כלל, אימון המודל מתבצע מהר יותר.
- בדרך כלל, המודל שנוצר מסיק תחזיות מהר יותר. כלומר, זמן האחזור של המודל נמוך יותר.
גיבוב (נקרא גם טריק הגיבוב) הוא דרך פחות נפוצה לצמצום מספר המאפיינים.
מידע נוסף על גיבוב (hashing)