בדף הזה מוסבר איך Agent Platform עובד עם סוגים שונים של נתונים טבלאיים עבור מודלים של AutoML.
מבוא לטרנספורמציות ב-Gemini Enterprise Agent Platform
אימון המודל
צריך לבצע טרנספורמציה של נתונים טבלאיים שמוזנים למודל לפני שאפשר להשתמש בהם לאימון המודל. הטרנספורמציה מציינת את הפונקציה של מאפיין נתונים מסוים.
הטרנספורמציות הבאות נתמכות:
אם מקור הנתונים הוא קובץ CSV ב-Cloud Storage, צריך להשתמש בפסיקים (,") בתור התו שמפריד בין הערכים. Agent Platform משתמשת בפורמט CSV של RFC 4180.
אם מקור הנתונים שלכם הוא BigQuery ואתם מבצעים סיווג או רגרסיה, אתם יכולים לכלול נתונים שמורכבים מכמה נתונים פרימיטיביים. צריך לבצע עיבוד מוקדם של סוגי הנתונים המורכבים האלה לפני שאפשר להחיל עליהם טרנספורמציות. סוגי הנתונים המורכבים הבאים נתמכים:
אם חסר ערך של סוג או שהערך הוא null, פלטפורמת האגנטים של Gemini Enterprise מטפלת בערך בהתאם ליעד של המודל ולהמרה שחלה על התכונה הזו. לפרטים נוספים, אפשר לעיין במאמר איך המערכת מטפלת בערכים חסרים או בערכים מסוג null.
חיזוי (Prediction)
הפורמט של הנתונים שמשמשים לחיזוי צריך להיות זהה לפורמט ששימש לאימון. פרטים נוספים מופיעים במאמר בנושא פורמט הנתונים לתחזיות.
טרנספורמציות ב-Agent Platform
קטגורי
החלת טרנספורמציה קטגורית גורמת לכך שהתכונה מייצגת ערכים בקטגוריה. כלומר, ברמה נומינלית. הערכים שונים רק על סמך השם שלהם, ללא סדר. אפשר להשתמש במספרים כדי לייצג ערכים קטגוריים, אבל אין קשר מספרי בין הערכים. כלומר, ערך קטגורי של 1 לא "גדול" מערך קטגורי של 0.
ריכזנו כאן כמה דוגמאות לערכים קטגוריים:
- בוליאני –
true,false. - מדינה –
"USA","Canada","China"וכן הלאה. - קוד סטטוס של HTTP –
"200","404","500"וכן הלאה.
הערכים הקטגוריים הם תלויי-רישיות (case-sensitive). וריאציות איות נחשבות לקטגוריות שונות (לדוגמה, 'Color' ו-'Colour' לא משולבות).
כשמאמנים מודל עם תכונה שכוללת טרנספורמציה קטגורית, Agent Platform מחילה על התכונה את הטרנספורמציות הבאות של הנתונים, ומשתמשת בכל טרנספורמציה שמספקת אות לאימון:
- מחרוזת הקטגוריה כמו שהיא – ללא שינוי באותיות רישיות, בפיסוק, באיות, בזמן וכן הלאה.
- להמיר את שם הקטגוריה לאינדקס של חיפוש במילון וליצור הטמעה לכל אינדקס.
- קטגוריות שמופיעות פחות מ-5 פעמים בקבוצת הנתונים לאימון מטופלות כקטגוריה 'לא ידוע'. הקטגוריה 'לא ידועים' מקבלת אינדקס חיפוש מיוחד משלה והטמעה משלה.
אפשר להחיל טרנספורמציות קטגוריות על נתוני STRING בקובצי CSV או על סוגי הנתונים הבאים ב-BigQuery:
- INT64
- NUMERIC, BIGNUMERIC
- FLOAT64
- BOOL
- מחרוזת
- תאריך
- DATETIME
- שעות
- TIMESTAMP
טקסט
המרת טקסט גורמת לשימוש בתכונה כטקסט חופשי, בדרך כלל שמורכב מאסימוני טקסט.
הנה כמה דוגמאות לערכי טקסט:
"The quick brown fox""This restaurant is the best! The food is delicious"
במודלים של תחזיות, המרת טקסט לא אפשרית בתכונות של משתנה מסביר.
כשמאמנים מודל עם תכונה שכוללת טרנספורמציה של טקסט, Agent Platform מחילה את הטרנספורמציות הבאות על התכונה ומשתמשת בכל טרנספורמציה שמספקת אות לאימון:
- הטקסט כמו שהוא – ללא שינוי באותיות רישיות, בפיסוק, באיות, בזמן וכו'.
-
הופכים טקסט לאסימונים של מילים ויוצרים 1-גרם ו-2-גרם ממילים. ממירים כל n-גרם לאינדקס של חיפוש במילון ויוצרים הטמעה לכל אינדקס. משלבים את ההטמעה של כל הרכיבים להטמעה אחת באמצעות הממוצע.
טוקניזציה מבוססת על גבולות של סקריפטים ביוניקוד.
- ערכים חסרים מקבלים אינדקס חיפוש משלהם והטמעה משלהם.
- מילות עצירה לא מקבלות יחס מיוחד ולא מוסרות.
אפשר להחיל טרנספורמציות של טקסט על נתוני STRING בקובצי CSV או על סוגי הנתונים הבאים ב-BigQuery:
- מחרוזת
- DATETIME
Numeric
טרנספורמציה מספרית גורמת לשימוש בעמודה כמספר סדרתי או כמותי. אפשר להשוות בין המספרים האלה. כלומר, שני מספרים שונים יכולים להיות קטנים או גדולים אחד מהשני.
המערכת תחתוך רווחים בתחילת השורה או בסופה.
בטבלה הבאה מוצגים כל הפורמטים התואמים להמרת מספרים:
| פורמט | דוגמאות | הערות |
| מחרוזת מספרית | "101", 101.5" | הנקודה (".") היא המפריד העשרוני התקין היחיד. המחרוזות "101,5" ו-"100,000" הן לא מחרוזות מספריות תקינות. |
| סימון מדעי | "1.12345E+11", "1.12345e+11" | הערה לגבי מחרוזות מספריות בנושא תווי הפרדה עשרוניים. |
| לא מספר | "NAN", "nan", "+NAN" | אין חשיבות לאותיות רישיות או קטנות. המערכת מתעלמת מתווים של פלוס (+) או מינוס (-) שמופיעים לפני המספר. הערך יפורש כערך NULL. |
| Infinity | "INF", "+inf" | אין חשיבות לאותיות רישיות או קטנות. המערכת מתעלמת מתווים של פלוס (+) או מינוס (-) שמופיעים לפני המספר. הערך יפורש כערך NULL. |
אם ערך בעמודה עם המרה מספרית לא תואם לאחד מהפורמטים האלה, השורה כולה לא נכללת באימון או שהערך נחשב כ-null. כשבוחרים את ההמרה המספרית, צריך לבחור בין התוצאות האלה.
כשמאמנים מודל עם תכונה שכוללת טרנספורמציה מספרית, Agent Platform מחילה את הטרנספורמציות הבאות על התכונה ומשתמשת בכל טרנספורמציה שמספקת אות לאימון:
- הערך שהומר ל-float32.
- ציון ה-Z של הערך.
- אינדקס של קטגוריה של הערך על סמך קוונטילים. גודל הקטגוריה הוא 100.
- log(value+1) אם הערך גדול מ-0 או שווה לו. אחרת, הטרנספורמציה הזו לא מוחלת והערך נחשב כערך חסר.
- ציון Z של log(value+1) אם הערך גדול מ-0 או שווה לו. אחרת, הטרנספורמציה הזו לא מוחלת והערך נחשב כערך חסר.
- ערך בוליאני שמציין אם הערך הוא null.
- שורות עם קלט מספרי לא תקין (לדוגמה, מחרוזת שלא ניתן לנתח ל-float32) לא נכללות באימון ובחיזוי.
- המערכת לא מתייחסת באופן מיוחד לערכים קיצוניים או חריגים.
אפשר להחיל המרות מספריות על נתוני STRING בקובצי CSV או על סוגי הנתונים הבאים ב-BigQuery:
- INT64
- NUMERIC, BIGNUMERIC
- FLOAT64
- מחרוזת
- TIMESTAMP
חותמת הזמן
טרנספורמציה של חותמת זמן גורמת לשימוש בתכונה כנקודה בזמן, שמיוצגת כשעה אזרחית עם אזור זמן או כחותמת זמן של מערכת Unix. אפשר להשתמש בעמודת הזמן רק בתכונות עם טרנספורמציה של חותמת זמן.
אם לא מציינים אזור זמן עם השעה המקומית, ברירת המחדל היא UTC.
בטבלה הבאה מוצגים כל הפורמטים התואמים של מחרוזות חותמת זמן:
| פורמט | דוגמה | הערות |
|---|---|---|
%E4Y-%m-%d |
"2017-01-30" | במאמר תיעוד של Abseil מופיע תיאור של הפורמט הזה. |
%E4Y/%m/%d |
"2017/01/30" | |
%Y/%m/%d %H:%M:%E*S |
"2017/01/30 23:59:58" | |
%d-%m-%E4Y |
"30-11-2018" | |
%d/%m/%E4Y |
"30/11/2018" | |
%d-%B-%E4Y |
"30-November-2018" | |
%Y-%m-%dT%H:%M:%E*S%Ez |
"2019-05-17T23:56:09.05+00:00" | RFC 3339. מציינים את ההפרש מאזור הזמן (z) בפורמט: ±HH:MM[:SS[.ffffff]]
|
| מחרוזת של חותמת זמן של מערכת Unix בשניות | "1541194447" | רק לתקופות שבין 01/Jan/1990 לבין 01/Jan/2030. |
| מחרוזת של חותמת זמן של מערכת Unix באלפיות השנייה | "1541194447000" | |
| מחרוזת של חותמת זמן של מערכת Unix במיקרו-שניות | "1541194447000000" | |
| מחרוזת של חותמת זמן של מערכת Unix בננו-שניות | "1541194447000000000" |
אם ערך בעמודה עם טרנספורמציה של חותמת זמן לא תואם לאחד מהפורמטים האלה, השורה כולה לא נכללת באימון או שהערך נחשב כ-null. כשבוחרים את ההמרה של חותמת הזמן, בוחרים בין התוצאות האלה.
כשמאמנים מודל עם תכונה שכוללת טרנספורמציה של חותמת זמן, Agent Platform מחילה על התכונה את טרנספורמציות הנתונים הבאות, ומשתמשת בכל טרנספורמציה שמספקת אות לאימון:
- מחילים את הטרנספורמציות על עמודות מספריות.
- קביעת השנה, החודש, היום והיום בשבוע. התייחסו לכל ערך מתוך חותמת הזמן כאל עמודה קטגורית.
- ערכים מספריים לא תקינים (לדוגמה, ערכים שנמצאים מחוץ לטווח של חותמת זמן טיפוסית, או ערכים קיצוניים) לא מקבלים טיפול מיוחד ולא מוסרים.
- שורות עם קלט לא תקין של חותמת זמן (לדוגמה, מחרוזת לא תקינה של חותמת זמן) לא נכללות באימון ובחיזוי.
אפשר להחיל המרות של חותמות זמן על נתוני STRING בקובצי CSV או על סוגי הנתונים הבאים ב-BigQuery:
- INT64
- מחרוזת
- תאריך
- DATETIME
- TIMESTAMP
סוגי נתונים מורכבים
לפעמים צריך לכלול נתונים שמורכבים מכמה נתונים פרימיטיביים, כמו מערך או מבנה. סוגי נתונים מורכבים זמינים רק כשמשתמשים ב-BigQuery כמקור נתונים, והם לא נתמכים במודלים של תחזיות.
Struct
אפשר להשתמש במבנה כדי לייצג קבוצה של שדות עם תוויות. למבנה יש רשימה של שמות שדות, שכל אחד מהם משויך לסוג נתונים. רשימת השדות וסוגי הנתונים שלהם חייבת להיות זהה לכל ערכי המבנה בעמודה.
הנה כמה דוגמאות למבנים:
- לחץ דם –
{"timestamp": 1535761416, "systolic": 110, "diastolic": 70} - מוצר –
{"name": "iPhone", price: 1000}
משתמשים בסוג הנתונים STRUCT של BigQuery כדי לייצג מבנים.
ערכי המבנה משוטחים אוטומטית לשדות. Agent Platform מבצעת את טרנספורמציית הנתונים בשדות המשוטחים בהתאם לסוג הטרנספורמציה שלהם.
מערך
אפשר להשתמש במערך כדי לייצג רשימת ערכים. הערכים שכלולים בו צריכים להיות מאותו סוג טרנספורמציה. אפשר לכלול מבנים במערכים, אבל לכל המבנים במערך צריך להיות אותו מבנה.
פלטפורמת הסוכן מעבדת מערכים כייצוג של משקל יחסי. במילים אחרות, לפריטים שמופיעים מאוחר יותר במערך יש משקל גבוה יותר מאשר לפריטים שמופיעים בתחילת המערך.
ריכזנו כאן כמה דוגמאות למערכים:
קטגוריות מוצרים:
["Clothing", "Women", "Dress", ...]הרכישות האחרונות:
["iPhone", "Laptop", "Suitcase", ...]רשומות משתמשים:
[{"name": "Joelle", ID: 4093}, {"name": "Chloe", ID: 2047}, {"name": "Neko", ID: 3432}, ...]
משתמשים בסוג הנתונים ARRAY של BigQuery כדי לייצג מערכים.
הנתונים ש-Agent Platform מחילה תלויים בסוג הטרנספורמציה שמוחל על המערך:
| סוג המערך | שינוי |
|---|---|
| מערך מספרי |
|
| מערך קטגורי |
|
| מערך טקסט |
|
| מערך של חותמות זמן |
|
| מערך של מבנים |
|
איך המערכת מטפלת בערכים חסרים או בערכי null
האופן שבו המערכת מטפלת בערכים חסרים תלוי ביעד של המודל ובהמרה שחלה על התכונה הזו.
סיווג ורגרסיה
במודלים של סיווג ורגרסיה, ערכי null מובילים להטמעה של טרנספורמציות של טקסט וקטגוריות. בטרנספורמציות אחרות, ערך ה-null נשאר null.
תחזיות
במודלים של תחזיות, ערכי null מחושבים מתוך הנתונים שמסביב. (אין אפשרות להשאיר ערך null כ-null). אם אתם מעדיפים לשלוט באופן שבו מתבצעת השלמת ערכים מסוג null, אתם יכולים להשלים אותם באופן מפורש. הערכים הכי טובים לשימוש עשויים להיות תלויים בנתונים ובבעיה העסקית שלכם.
מותרות שורות חסרות (לדוגמה, אם אין שורה לתאריך מסוים, וגרנולריות הנתונים היא יומית), אבל Agent Platform לא משלים ערכים לנתונים החסרים. שורות חסרות עלולות להפחית את איכות המודל, ולכן מומלץ להימנע מהן ככל האפשר. לדוגמה, אם חסרה שורה כי כמות המכירות באותו יום הייתה אפס, צריך להוסיף שורה לאותו יום ולהגדיר במפורש את נתוני המכירות כ-0.
אילו ערכים נחשבים לערכי null
כשמאמנים מודל טבלאי של AutoML, Agent Platform מתייחס לערכים הבאים כאל ערכי null:
ערך NULL ב-BigQuery.
ערכים מספריים של NaN או אינסוף.
מחרוזת ריקה. Agent Platform לא מסירה רווחים ממחרוזות. כלומר, הערך ' ' לא נחשב כערך Null.
מחרוזת שאפשר להמיר ל-NaN או לערך מספרי אינסופי.
- NAN: לא תלוי-רישיות, עם סימן פלוס או מינוס אופציונליים בתחילת המחרוזת.
- INF: לא תלוי-רישיות, עם סימן פלוס או מינוס אופציונליים לפני.
חסרים ערכים.
ערכים בעמודה עם טרנספורמציה מסוג Numeric או Timestamp שלא נמצאים בפורמט תקין לטרנספורמציה של העמודה. במקרה כזה, אם ציינתם שהשורה עם הערך הלא תקין תשמש לאימון, הערך הלא תקין ייחשב כ-null.
פורמט הנתונים לחיזויים
הפורמט של הנתונים שמשמשים לחיזוי צריך להיות זהה לפורמט שמשמש לאימון.
אם אימנתם את המודל על נתונים בקובץ CSV ב-Cloud Storage, סוג הנתונים היה STRING. אם אתם משתמשים באובייקט JSON כדי לשלוח את בקשת החיזוי, ודאו שכל הערכים בצמדי המפתח/ערך הם גם מסוג STRING.
אם אימנתם את המודל על נתונים שמאוחסנים ב-BigQuery ואתם משתמשים באובייקט JSON כדי לשלוח את בקשת החיזוי, סוגי הנתונים של הערכים בזוגות של מפתח/ערך ב-JSON צריכים להתאים למיפוי שבטבלה שלמטה.
| סוג נתונים ב-BigQuery | סוג הנתונים JSON |
|---|---|
| INT64 | String |
| NUMERIC, BIGNUMERIC | מספר |
| FLOAT64 | מספר |
| BOOL | בוליאני |
| מחרוזת | String |
| תאריך | String |
| DATETIME | String |
| שעות | String |
| TIMESTAMP | String |
| מערך | מערך |
| STRUCT | אובייקט |
לדוגמה, אם נתוני האימון מכילים length תכונות מסוג FLOAT64, צמד המפתח-ערך הבא ב-JSON הוא נכון:
"length":3.6,
לעומת זאת, צמד המפתח-ערך הבא ב-JSON יגרום לשגיאה:
"length":"3.6",
המאמרים הבאים
- מידע נוסף על סוגי נתונים ב-BigQuery
- איך מכינים את נתוני האימון בפורמט טבלאי
- שיטות מומלצות ליצירת נתוני אימון בפורמט טבלאי