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

בדף הזה מוסבר איך Agent Platform עובד עם סוגים שונים של נתונים טבלאיים עבור מודלים של AutoML.

מבוא לטרנספורמציות ב-Gemini Enterprise Agent Platform

אימון המודל

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

אפשר להשתמש בהמרות הבאות:

אם מקור הנתונים הוא קובץ CSV ב-Cloud Storage, צריך להשתמש בפסיקים (,") בתור התו שמפריד בין הערכים. ב-Agent Platform נעשה שימוש בפורמט CSV‏ RFC 4180.

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

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

חיזוי (prediction)

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

טרנספורמציות ב-Agent Platform

כדי להתכונן לאימון מודל AutoML, אפשר להחיל טרנספורמציות של קטגוריות, טקסט, מספרים או חותמות זמן.

קטגורי

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

  • הטקסט כמו שהוא – ללא שינוי של גודל האותיות, סימני הפיסוק, האיות או הזמן.
  • פיצול טקסט למילים ויצירת 1-גרם ו-2-גרם ממילים. ממירים כל n-gram לאינדקס של חיפוש במילון ויוצרים הטמעה לכל אינדקס. משלבים את ההטמעה של כל הרכיבים להטמעה אחת באמצעות הממוצע.

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

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

אפשר להחיל טרנספורמציות של טקסט על נתוני 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

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

ריכזנו כאן כמה דוגמאות של מבנים:

  • לחץ דם – {"timestamp": 1535761416, "systolic": 110, "diastolic": 70}
  • מוצר – {"name": "iPhone", price: 1000}

משתמשים בסוג הנתונים STRUCT של BigQuery כדי לייצג מבנים.

המערכת משטחת אוטומטית ערכי Struct לשדות. האפליקציה Agent Platform מחילה את שינוי הנתונים על השדות המפושטים בהתאם לסוג השינוי שלהם.

מערך

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

מערך ב-Agent Platform מעובד כמשקל יחסי. במילים אחרות, לפריטים שמופיעים בהמשך המערך יש משקל גבוה יותר מאשר לפריטים שמופיעים בתחילת המערך.

ריכזנו כאן כמה דוגמאות למערכים:

  • קטגוריות מוצרים:

    ["Clothing", "Women", "Dress", ...]

  • הרכישות האחרונות:

    ["iPhone", "Laptop", "Suitcase", ...]

  • רשומות משתמשים:

    [{"name": "Joelle", ID: 4093}, {"name": "Chloe", ID: 2047}, {"name": "Neko", ID: 3432}, ...]

משתמשים בסוג הנתונים ARRAY של BigQuery כדי לייצג מערכים.

השינוי בנתונים שפלטפורמת הסוכנים מחילה תלוי בסוג השינוי שחל על המערך:

סוג המערך שינוי
מערך מספרי
  • כל השינויים עבור סוגי מספרים שחלים על הממוצע של 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). אם אתם מעדיפים לשלוט באופן שבו מתבצעת השלמת ערכים חסרים, אתם יכולים להשלים אותם באופן מפורש. הערכים הכי טובים לשימוש עשויים להיות תלויים בנתונים ובבעיה העסקית שלכם.

מותרות שורות חסרות (לדוגמה, אין שורה לתאריך מסוים, עם רמת פירוט של נתונים יומית), אבל Agent Platform לא משלים ערכים לנתונים החסרים. שורות חסרות עלולות להפחית את איכות המודל, ולכן מומלץ להימנע משורות חסרות ככל האפשר. לדוגמה, אם שורה חסרה כי כמות המכירות באותו יום הייתה אפס, צריך להוסיף שורה לאותו יום ולהגדיר במפורש את נתוני המכירות כ-0.

אילו ערכים נחשבים לערכי null

כשמאמנים מודל טבלאי של AutoML, Agent Platform מתייחס לערכים הבאים כאל ערכי null:

  • ערך NULL ב-BigQuery.

  • ערכים מספריים של NaN או אינסוף.

  • מחרוזת ריקה. Agent Platform לא מסירה רווחים ממחרוזות. כלומר, הערך ' ' לא נחשב כערך Null.

  • מחרוזת שאפשר להמיר ל-NaN או לערך מספרי אינסופי.

    • ‫NAN: לא תלוי-רישיות, עם סימן פלוס או מינוס אופציונליים בתחילת המחרוזת.
    • ‫INF: לא תלוי-רישיות, עם סימן פלוס או מינוס אופציונלי לפני.
  • חסרים ערכים.

  • ערכים בעמודה עם המרה מסוג 'מספר' או 'חותמת זמן' שלא נמצאים בפורמט תקין להמרה של העמודה. במקרה כזה, אם ציינתם שהשורה עם הערך הלא תקין תשמש לאימון, הערך הלא תקין ייחשב כערך 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",

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