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