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