סוגי נתונים וטרנספורמציות

בדף הזה מוסבר איך 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 מחילה תלויים בסוג הטרנספורמציה שמוחל על המערך:

סוג המערך שינוי
מערך מספרי
  • כל השינויים עבור סוגי מספרים שחלים על הממוצע של N הפריטים האחרונים, כאשר N = {‎1, 2, 4, 8, all}. לכן, הפריטים שמוצגים בצורה הכי בולטת הם אלה שמופיעים לקראת סוף המערך, ולא אלה שמופיעים בתחילתו.
  • הממוצע של מערכים ריקים נחשב לאפס.
מערך קטגורי
  • לכל רכיב במערך של N הפריטים האחרונים שבהם N = {1, 2, 4, 8, all}, ממירים את שם הקטגוריה לאינדקס של מילון חיפוש ויוצרים הטמעה לכל אינדקס. משלבים את ההטמעה של כל הרכיבים להטמעה אחת באמצעות הממוצע.
  • מערכים ריקים נחשבים להטמעה של אפסים.
מערך טקסט
  • משרשרים את כל ערכי הטקסט במערך לערך טקסט יחיד באמצעות רווח (" ") כמפריד, ואז מתייחסים לתוצאה כאל ערך טקסט יחיד. החלת הטרנספורמציות על עמודות Text (טקסט).
  • מערכים ריקים נחשבים להטמעה של אפסים.
מערך של חותמות זמן
  • החלת הטרנספורמציות על עמודות מספריות לממוצע של N הפריטים האחרונים במערך. ‫N = {1, 2, 4, 8, all}. המשמעות היא שהפריטים שהכי חשובים הם אלה שמופיעים לקראת סוף המערך.
מערך של מבנים
  • המבנים במערך משוטחים לשדות נפרדים, ונוצרים מהם מערכים לפי שדה. הטרנספורמציה של המערך (כפי שמתואר בטבלה הזו) מוחלת בהתאם לסוג השדה של המערך.

איך המערכת מטפלת בערכים חסרים או בערכי 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",

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