עיבוד מקדים אוטומטי של תכונות
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 מבצע את השינויים הבאים בפיצ'רים של הקלט:
| סוג נתוני הקלט | שיטת הטרנספורמציה | פרטים |
|---|---|---|
INT64NUMERICBIGNUMERICFLOAT64 |
סטנדרטיזציה | ברוב המודלים, BigQuery ML מבצע סטנדרטיזציה של עמודות מספריות וממרכז אותן באפס לפני שהוא מעביר אותן לאימון. יוצאים מן הכלל הם מודלים של עצים מחוזקים ומודלים של יערות אקראיים, שבהם לא מתבצעת סטנדרטיזציה, ומודלים של k-means, שבהם האפשרות STANDARDIZE_FEATURES קובעת אם תכונות מספריות יעברו סטנדרטיזציה. |
BOOLSTRINGBYTESDATEDATETIMETIME |
קידוד "חם-יחיד" (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 נתמכות במודלים שתומכים בעיבוד מקדים אוטומטי של תכונות זמין במסמכים הבאים:
- תהליכים שהמשתמשים עוברים מתחילת האינטראקציה ועד סופה במודלים של ML
- תהליכים מלאים שעוברים משתמשים במודלים של חיזוי סדרות זמן