עיבוד מקדים אוטומטי של תכונות

‫BigQuery ML מבצע עיבוד מקדים אוטומטי במהלך האימון באמצעות הצהרת CREATE MODEL. עיבוד מקדים אוטומטי כולל השלמת ערכים חסרים ושינויים בתכונות.

מידע על תמיכה בעיבוד מקדים של תכונות ב-BigQuery ML זמין במאמר סקירה כללית על עיבוד מקדים של תכונות.

השלמת נתונים חסרים

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

סוג העמודה שיטת השלמת נתונים חסרים
Numeric גם בשלב האימון וגם בשלב החיזוי, ערכי NULL בעמודות מספריות מוחלפים בערך הממוצע של העמודה הנתונה, כפי שמחושב על ידי עמודת התכונות בנתוני הקלט המקוריים.
קידוד one-hot/multi-hot גם באימון וגם בחיזוי, ערכי NULL בעמודות המקודדות ממופים לקטגוריה נוספת שנוספת לנתונים. לנתונים שלא נראו בעבר מוקצה משקל של 0 במהלך החיזוי.
TIMESTAMP עמודות TIMESTAMP משתמשות בשילוב של שיטות השלמת נתונים מעמודות שעברו סטנדרטיזציה ומעמודות שעברו קידוד one-hot. בעמודת הזמן של מערכת Unix שנוצרה, BigQuery ML מחליף את הערכים בממוצע הזמן של מערכת Unix בעמודות המקוריות. לגבי ערכים אחרים שנוצרו, מערכת BigQuery ML מקצה אותם לקטגוריה NULL המתאימה לכל תכונה שחולצה.
STRUCT גם באימון וגם בחיזוי, כל שדה של STRUCT מיוחס בהתאם לסוג שלו.

טרנספורמציות של תכונות

כברירת מחדל, BigQuery ML מבצע את השינויים הבאים בפיצ'רים של הקלט:

סוג נתוני הקלט שיטת הטרנספורמציה פרטים
INT64
NUMERIC
BIGNUMERIC
FLOAT64
סטנדרטיזציה ברוב המודלים, BigQuery ML מבצע סטנדרטיזציה של עמודות מספריות וממרכז אותן באפס לפני שהוא מעביר אותן לאימון. יוצאים מן הכלל הם מודלים של עצים מחוזקים ומודלים של יערות אקראיים, שבהם לא מתבצעת סטנדרטיזציה, ומודלים של k-means, שבהם האפשרות STANDARDIZE_FEATURES קובעת אם תכונות מספריות יעברו סטנדרטיזציה.
BOOL
STRING
BYTES
DATE
DATETIME
TIME
קידוד "חם-יחיד" (one-hot) לכל העמודות הלא מספריות והלא מערכיות, מלבד TIMESTAMP, BigQuery ML מבצעת טרנספורמציה של קידוד one-hot לכל המודלים מלבד מודלים של עצים מחוזקים ויערות אקראיים. הטרנספורמציה הזו יוצרת תכונה נפרדת לכל ערך ייחודי בעמודה. השינוי Label encoding מוחל כדי לאמן מודלים של עצים מחוזקים ויערות אקראיים, כדי להמיר כל ערך ייחודי לערך מספרי.
ARRAY קידוד רב-חם עבור כל העמודות הלא מספריות ARRAY, ‏ BigQuery ML מבצע המרה של קידוד רב-ערכי. הטרנספורמציה הזו יוצרת מאפיין נפרד לכל רכיב ייחודי ב-ARRAY.
TIMESTAMP טרנספורמציה של חותמת זמן כשמודל רגרסיה לינארית או רגרסיה לוגיסטית נתקל בעמודה TIMESTAMP, הוא מחלץ קבוצה של רכיבים מ-TIMESTAMP ומבצע שילוב של סטנדרטיזציה וקידוד one-hot ברכיבים שחולצו. לרכיב של זמן תקופת UNIX בשניות, נעשה שימוש בסטנדרטיזציה ב-BigQuery ML. לכל שאר הרכיבים, המערכת משתמשת בקידוד one-hot.

מידע נוסף זמין בטבלת הטרנספורמציות של תכונות חותמת הזמן.
STRUCT הרחבת מבנה כש-BigQuery ML נתקל בעמודה STRUCT, הוא מרחיב את השדות בתוך STRUCT כדי ליצור עמודה אחת. צריך לתת שם לכל השדות של STRUCT. אסור להשתמש ב-STRUCTs מקוננים. שמות העמודות אחרי ההרחבה הם בפורמט {struct_name}_{field_name}.
ARRAY מתוך STRUCT ללא טרנספורמציה
ARRAY מתוך NUMERIC ללא טרנספורמציה

TIMESTAMP טרנספורמציה של תכונה

בטבלה הבאה מוצגים הרכיבים שחולצו מעמודות TIMESTAMP ושיטת ההמרה המתאימה.

רכיב TIMESTAMP תוצאה אחת (processed_input) שיטת הטרנספורמציה
זמן ראשית זמן יוניקס (Unix epoch) בשניות [COLUMN_NAME] תקינה
היום בחודש _TS_DOM_[COLUMN_NAME] קידוד חם-יחיד
יום בשבוע _TS_DOW_[COLUMN_NAME] קידוד חם-יחיד
החודש בשנה _TS_MOY_[COLUMN_NAME] קידוד חם-יחיד
שעה ביום _TS_HOD_[COLUMN_NAME] קידוד חם-יחיד
דקה בשעה _TS_MOH_[COLUMN_NAME] קידוד חם-יחיד
שבוע בשנה (השבועות מתחילים ביום ראשון) _TS_WOY_[COLUMN_NAME] קידוד חם-יחיד
שנה _TS_YEAR_[COLUMN_NAME] קידוד חם-יחיד

קידוד של תכונות הקטגוריה

לתכונות שמקודדות בשיטת one-hot encoding, אפשר לציין שיטת קידוד שונה שמוגדרת כברירת מחדל באמצעות אפשרות המודל CATEGORY_ENCODING_METHOD. במודלים ליניאריים מוכללים (GLM), אפשר להגדיר את CATEGORY_ENCODING_METHOD לאחד מהערכים הבאים:

קידוד חם-יחיד

בקידוד one-hot, כל קטגוריה של מאפיין ממופה למאפיין בינארי משלה, כאשר 0 מייצג את היעדר המאפיין ו-1 מייצג את הנוכחות שלו (המאפיין הזה נקרא משתנה דמה). המיפוי הזה יוצר N עמודות חדשות של תכונות, כאשר N הוא מספר הקטגוריות הייחודיות של התכונה בטבלת האימון.

לדוגמה, נניח שלטבלת האימון יש עמודת מאפיינים בשם fruit עם הקטגוריות Apple,‏ Banana ו-Cranberry, כמו בדוגמה הבאה:

Row פירות
1 Apple
2 בננה
3 חמוציות

במקרה הזה, האפשרות CATEGORY_ENCODING_METHOD='ONE_HOT_ENCODING' משנה את הטבלה לייצוג הפנימי הבא:

Row fruit_Apple fruit_Banana fruit_Cranberry
1 1 0 0
2 0 1 0
3 0 0 1

קידוד חם-יחיד נתמך על ידי מודלים של רגרסיה לינארית ולוגיסטית ושל עץ מחוזק.

קידוד פיקטיבי

קידוד משתני דמה דומה לקידוד "חם-יחיד", שבו מאפיין קטגורי מומר לקבוצה של משתני פלייסהולדר. קידוד פיקטיבי משתמש במשתני placeholder‏ N-1 במקום במשתני placeholder‏ N כדי לייצג קטגוריות של תכונה N. לדוגמה, אם מגדירים את CATEGORY_ENCODING_METHOD ל-'DUMMY_ENCODING' עבור אותה עמודת מאפיינים fruit שמוצגת בדוגמה הקודמת של קידוד one-hot, הטבלה משתנה לייצוג הפנימי הבא:

Row fruit_Apple fruit_Banana
1 1 0
2 0 1
3 0 0

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

קבוצת המשקלים הסופית מתוך ML.WEIGHTS עדיין כוללת את הקטגוריה שהוסרה, אבל המשקל שלה תמיד 0.0. עבור ML.ADVANCED_WEIGHTS, סטיית התקן וערך ה-p של המשתנה שהוסר הם NaN.

אם משתמשים ב-warm_start במודל שאומן בהתחלה באמצעות 'DUMMY_ENCODING', אותו משתנה placeholder יוסר מהרצת האימון הראשונה. אי אפשר לשנות את שיטות הקידוד בין הרצות של אימון המודלים.

קידוד משתנה פיקטיבי נתמך על ידי מודלים של רגרסיה לינארית ולוגיסטית.

קידוד תוויות

קידוד תווית ממיר את הערך של תכונה קטגורית לערך INT64 ב-[0, <number of categories>].

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

שם ז'אנר
ספר 1 פנטזיה
ספר 2 בישול
ספר 3 היסטוריה
Book 4 בישול

הערכים המקודדים של התווית יכולים להיראות כך:

שם ז'אנר (טקסט) ז'אנר (מספרי)
ספר 1 פנטזיה 1
ספר 2 בישול 2
ספר 3 היסטוריה 3
Book 4 בישול 2

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

קידוד תוויות נתמך על ידי מודלים של עצים משופרים.

קידוד היעד

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

דוגמה לתכונות שעברו קידוד לפי טרגט:

# Classification model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, target_1) |     0.5              |
| (category_1, target_2) |     0.5              |
| (category_2, target_1) |     0.0              |
+------------------------+----------------------+

# Regression model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, 2)        |     2.5              |
| (category_1, 3)        |     2.5              |
| (category_2, 1)        |     1.5              |
| (category_2, 2)        |     1.5              |
+------------------------+----------------------+

קידוד טירגוט נתמך על ידי מודלים של עצים מחוזקים.

המאמרים הבאים

מידע נוסף על פונקציות והצהרות SQL נתמכות במודלים שתומכים בעיבוד מקדים אוטומטי של תכונות זמין במסמכים הבאים: