Prophet הוא מודל חיזוי שמתוחזק על ידי Meta. פרטים על האלגוריתם מופיעים במאמר על Prophet, ומידע נוסף על הספרייה מופיע במסמכי התיעוד.
בדומה ל-BigQuery ML ARIMA_PLUS, Prophet מנסה לפרק כל סדרת זמן למגמות, לעונות ולחגים, ומפיק תחזית באמצעות צבירה של ההסקות של המודלים האלה. עם זאת, יש הבדל חשוב: ב-BQML ARIMA+ נעשה שימוש ב-ARIMA כדי ליצור מודל של רכיב המגמה, ואילו ב-Prophet נעשה ניסיון להתאים עקומה באמצעות מודל לוגיסטי או ליניארי חלקי.
Google Cloud offers a pipeline for training a Prophet model and a pipeline for getting batch inferences from a Prophet model. שני צינורות הנתונים הם מופעים של Gemini Enterprise Agent Platform Pipelines מתוך Google Cloud Pipeline Components (GCPC).
שילוב של Prophet עם Agent Platform מאפשר לכם:
- משתמשים בפיצול נתונים ובאסטרטגיות של חלונות בפלטפורמת הסוכנים.
- קריאת נתונים מטבלאות BigQuery או מקובצי CSV שמאוחסנים ב-Cloud Storage. ב-Agent Platform, כל שורה צריכה להיות באותו פורמט כמו ב-Agent Platform Forecasting.
למרות ש-Prophet הוא מודל רב-משתנים, Agent Platform תומכת רק בגרסה חד-משתנית שלו.
מידע על חשבונות השירות שמשמשים בתהליך העבודה הזה מופיע במאמר חשבונות שירות ל-Tabular Workflows.
Workflow APIs
תהליך העבודה הזה משתמש בממשקי ה-API הבאים:
- Agent Platform
- Dataflow
- BigQuery
- Cloud Storage
אימון מודל באמצעות Prophet
Prophet מיועד לסדרת זמן אחת. Agent Platform צובר נתונים לפי מזהה של סדרת זמן ומאמן מודל Prophet לכל סדרת זמן. צינור האימון של המודל מבצע כוונון של היפרפרמטרים באמצעות חיפוש רשת והלוגיקה המובנית של בדיקה לאחור של Prophet.
כדי לתמוך במספר סדרות זמן, צינור עיבוד הנתונים משתמש במשימת אימון מותאמת אישית של Agent Platform וב-Dataflow כדי לאמן כמה מודלים של Prophet במקביל. באופן כללי, מספר המודלים שאומנו הוא המכפלה של מספר סדרות הזמן ומספר הניסיונות של כוונון ההיפרפרמטרים.
בדוגמת הקוד הבאה אפשר לראות איך מריצים צינור להכשרת מודל Prophet:
job = aiplatform.PipelineJob(
...
template_path=train_job_spec_path,
parameter_values=train_parameter_values,
...
)
job.run(service_account=SERVICE_ACCOUNT)
הפרמטר האופציונלי service_account ב-job.run() מאפשר לכם להגדיר את חשבון השירות של Gemini Enterprise Agent Platform Pipelines לחשבון לפי בחירתכם.
הפונקציה הבאה מגדירה את צינור הנתונים ואת ערכי הפרמטרים.
(
train_job_spec_path,
train_parameter_values,
) = utils.get_prophet_train_pipeline_and_parameters(
...
)
זו קבוצת משנה של פרמטרים של get_prophet_train_pipeline_and_parameters:
| שם הפרמטר | סוג | הגדרה |
|---|---|---|
project |
String | מזהה הפרויקט. |
location |
String | האזור שלכם. |
root_dir |
String | המיקום ב-Cloud Storage שבו יישמר הפלט. |
target_column |
String | העמודה (הערך) שהמודל הזה צריך לחזות. |
time_column |
String | עמודת הזמן. חובה לציין עמודת זמן, ולכל שורה בעמודה הזו צריך להיות ערך. בעמודה 'זמן' מצוין הזמן שבו בוצעה תצפית מסוימת. |
time_series_identifier_column |
String | העמודה של מזהה סדרת הזמנים. חובה לציין עמודה של מזהה סדרת זמן, ולכל שורה צריך להיות ערך בעמודה הזו. נתוני האימון לחיזוי בדרך כלל כוללים כמה סדרות זמן, והמזהה מציין ל-Agent Platform לאיזו סדרת זמן שייכת תצפית מסוימת בנתוני האימון. לכל השורות בסדרת זמן נתונה יש את אותו ערך בעמודה של מזהה סדרת הזמן. חלק מהמזהים הנפוצים של סדרות זמן הם מזהה המוצר, מזהה החנות או האזור. אפשר לאמן מודל חיזוי על סדרת זמן אחת, עם ערך זהה לכל השורות בעמודה של מזהה סדרת הזמן. עם זאת, Agent Platform מתאימה יותר לנתוני אימון שמכילים שתי סדרות זמן או יותר. כדי לקבל את התוצאות הטובות ביותר, מומלץ להשתמש לפחות ב-10 סדרות עיתיות לכל עמודה שבה משתמשים כדי לאמן את המודל. |
data_granularity_unit |
String | היחידה שבה משתמשים לגרנולריות של נתוני האימון, לאופק התחזית ולחלון ההקשר. הערך יכול להיות minute, hour, day, week, month או year. איך בוחרים את רמת הפירוט של הנתונים |
data_source_csv_filenames |
String | URI של קובץ CSV שמאוחסן ב-Cloud Storage. |
data_source_bigquery_table_path |
String | כתובת URI של טבלה ב-BigQuery. |
forecast_horizon |
מספר שלם | אופק התחזית קובע עד כמה רחוק בעתיד המודל חוזה את ערך היעד לכל שורה של נתוני הסקה. אופק התחזית מצוין ביחידות של רמת הפירוט של הנתונים. מידע נוסף |
optimization_objective |
String | יעד האופטימיזציה של המודל. מידע נוסף |
max_num_trials |
מספר שלם | מספר הניסיונות המקסימלי לשיפור הביצועים שיתבצעו לכל סדרת זמן. |
פרמטרים של Dataflow
זו קבוצת משנה של get_prophet_train_pipeline_and_parameters פרמטרים להתאמה אישית של Dataflow:
| שם הפרמטר | סוג | הגדרה |
|---|---|---|
trainer_dataflow_machine_type |
String | סוג המכונה של Dataflow שמשמש לאימון. |
trainer_dataflow_max_num_workers |
מספר שלם | המספר המקסימלי של עובדי Dataflow שישמשו לאימון. |
evaluation_dataflow_machine_type |
String | סוג המכונה ב-Dataflow שבה יש להשתמש לצורך הערכה. |
evaluation_dataflow_max_num_workers |
מספר שלם | מספר העובדים המקסימלי ב-Dataflow שייעשה בו שימוש לצורך הערכה. |
dataflow_service_account |
String | חשבון שירות מותאם אישית להרצת משימות Dataflow. אפשר להגדיר את עבודת Dataflow כך שתשתמש בכתובות IP פרטיות וברשת משנה ספציפית של VPC. הפרמטר הזה משמש כשינוי של חשבון השירות שמוגדר כברירת מחדל לעובד Dataflow. |
משימות האימון של Prophet מופעלות ב-Dataflow, ולכן יש זמן הפעלה ראשוני של 5 עד 7 דקות. כדי לצמצם את זמן הריצה הנוסף, אפשר להגדיל את הקיבולת או להרחיב את הפריסה. לדוגמה, כדי להגדיל את הקיבולת, משנים את סוג המכונה מ-n1-standard-1 ל-e2-highcpu-8. כדי להרחיב את הקיבולת, מגדילים את מספר העובדים מ-1 ל-200.
פרמטרים של פיצול נתונים
צינור האימון מציע את האפשרויות הבאות לפיצול הנתונים:
| פיצול נתונים | תיאור | פרמטרים |
|---|---|---|
| פיצול ברירת מחדל | Agent Platform בוחרת באופן אקראי 80% משורות הנתונים שלכם לקבוצת נתונים לאימון, 10% לקבוצת נתונים לתיקוף ו-10% לקבוצת נתונים לבדיקה. Agent Platform משתמשת בעמודה Time (זמן) כדי לקבוע את הסדר הכרונולוגי של שורות הנתונים. | ללא |
| פיצול שבר | Agent Platform משתמשת בערכים שאתם מספקים כדי לחלק את הנתונים לקבוצת נתונים לאימון, לקבוצת נתונים לתיקוף ולקבוצת נתונים לבדיקה. Agent Platform משתמשת בעמודה Time (זמן) כדי לקבוע את הסדר הכרונולוגי של שורות הנתונים. |
|
| פיצול חותמת הזמן | Agent Platform משתמשת בערכים training_fraction, validation_fraction ו-test_fraction כדי לחלק את הנתונים לקבוצת נתונים לאימון, לקבוצת נתונים לתיקוף ולקבוצת נתונים לבדיקה. Agent Platform משתמשת בעמודה timestamp_split_key כדי לקבוע את הסדר הכרונולוגי של שורות הנתונים. |
|
| חלוקה ידנית (מוגדרת מראש) | Agent Platform מפצלת את הנתונים באמצעות הערכים TRAIN, VALIDATE או TEST בעמודה predefined_split_key. |
|
כך מגדירים את פרמטרים של פיצול הנתונים ב-get_prophet_train_pipeline_and_parameters:
| שם הפרמטר | סוג | הגדרה |
|---|---|---|
predefined_split_key |
String | שם העמודה שמכילה את הערכים TRAIN, VALIDATE או TEST. מגדירים את הערך הזה אם משתמשים בפיצול ידני (מוגדר מראש). |
training_fraction |
Float | אחוז הנתונים שיוקצו לקבוצת נתונים לאימון. צריך להגדיר את הערך הזה אם משתמשים בפיצול של שבר או בפיצול של חותמת זמן. |
validation_fraction |
Float | אחוז הנתונים שיוקצו לקבוצת נתונים לתיקוף. צריך להגדיר את הערך הזה אם משתמשים בפיצול של שבר או בפיצול של חותמת זמן. |
test_fraction |
Float | אחוז הנתונים שיוקצו לקבוצת נתונים לבדיקה. צריך להגדיר את הערך הזה אם משתמשים בפיצול של שבר או בפיצול של חותמת זמן. |
timestamp_split_key |
String | שם העמודה שמכילה את חותמות הזמן של פיצול הנתונים. צריך להגדיר את הערך הזה אם משתמשים בפיצול של חותמת זמן. |
פרמטרים של חלון
Gemini Enterprise Agent Platform יוצר חלונות של תחזיות מנתוני הקלט באמצעות אסטרטגיה של חלון נע. אם לא מגדירים את פרמטרים של חלון, Agent Platform משתמשת באסטרטגיית הספירה עם ערך מקסימלי של ברירת מחדל של 100,000,000. צינור ההדרכה
מציע את שיטות החלון הנע הבאות:
| אסטרטגיה של חלון נע | תיאור | פרמטרים |
|---|---|---|
| ספירה |
מספר החלונות שנוצרים על ידי Agent Platform לא יכול לחרוג מהמספר המקסימלי שצוין על ידי המשתמש. אם מספר השורות במערך נתוני הקלט קטן ממספר החלונות המקסימלי, כל שורה משמשת ליצירת חלון.
אחרת, Agent Platform מבצע דגימה אקראית כדי לבחור את השורות.
ערך ברירת המחדל של המספר המקסימלי של חלונות הוא 100,000,000.
המספר המקסימלי של חלונות לא יכול לעלות על 100,000,000.
|
window_max_count |
| Stride |
Agent Platform משתמשת בשורה אחת מכל X שורות קלט כדי ליצור חלון, עד למקסימום של 100,000,000 חלונות. האפשרות הזו שימושית להסקת מסקנות עונתית או תקופתית. לדוגמה, אפשר להגביל את התחזיות ליום אחד בשבוע על ידי הגדרת הערך של אורך פסיעה ל-7. הערך יכול להיות בין 1 ל-1000.
|
window_stride_length |
| עמודה |
אפשר להוסיף עמודה לנתוני הקלט שבה הערכים הם True או False. פלטפורמת Agent יוצרת חלון לכל שורת קלט שבה הערך של העמודה הוא True. אפשר להגדיר את הערכים True ו-False בכל סדר, כל עוד המספר הכולל של השורות True קטן מ-100,000,000. מומלץ להשתמש בערכים בוליאניים, אבל אפשר להשתמש גם בערכי מחרוזת. ערכי מחרוזת לא תלויי-רישיות.
|
window_column |
אתם מגדירים את פרמטרים של חלון ההמרה ב-get_prophet_train_pipeline_and_parameters באופן הבא:
| שם הפרמטר | סוג | הגדרה |
|---|---|---|
window_column |
String | השם של העמודה עם הערכים True ו-False. |
window_stride_length |
מספר שלם | הערך של אורך הפסיעה. |
window_max_count |
מספר שלם | המספר המקסימלי של חלונות. |
הסקת מסקנות באמצעות Prophet
צינור האימון של מודל Prophet בפלטפורמת הסוכנים יוצר מודל Prophet אחד לכל סדרת זמן בנתונים. צינור ההסקה מצטבר נתוני קלט לפי מזהה סדרת זמן ומחשב את ההסקות בנפרד לכל סדרת זמן. לאחר מכן, צינור הנתונים מפרק את תוצאות ההסקה כדי להתאים לפורמט של חיזוי בפלטפורמת הסוכנים.
בדוגמת הקוד הבאה אפשר לראות איך מריצים צינור עיבוד נתונים של Prophet:
job = aiplatform.PipelineJob(
...
template_path=prediction_job_spec_path,
parameter_values=prediction_parameter_values,
...
)
job.run(...)
הפונקציה הבאה מגדירה את צינור הנתונים ואת ערכי הפרמטרים.
(
prediction_job_spec_path,
prediction_parameter_values,
) = utils.get_prophet_prediction_pipeline_and_parameters(
...
)
זו קבוצת משנה של פרמטרים של get_prophet_prediction_pipeline_and_parameters:
| שם הפרמטר | סוג | הגדרה |
|---|---|---|
project |
String | מזהה הפרויקט. |
location |
String | האזור שלכם. |
model_name |
String | השם של משאב Model. הפורמט של המחרוזת הוא: projects/{project}/locations/{location}/models/{model}. |
time_column |
String | עמודת הזמן. חובה לציין עמודת זמן, ולכל שורה בעמודה הזו צריך להיות ערך. בעמודה 'זמן' מצוין הזמן שבו בוצעה תצפית מסוימת. |
time_series_identifier_column |
String | העמודה של מזהה סדרת הזמנים. חובה לציין עמודה של מזהה סדרת זמן, ולכל שורה צריך להיות ערך בעמודה הזו. נתוני האימון לחיזוי בדרך כלל כוללים כמה סדרות זמן, והמזהה מציין ל-Agent Platform לאיזו סדרת זמן שייכת תצפית מסוימת בנתוני האימון. לכל השורות בסדרת זמן נתונה יש את אותו ערך בעמודה של מזהה סדרת הזמן. חלק מהמזהים הנפוצים של סדרות זמן הם מזהה המוצר, מזהה החנות או האזור. אפשר לאמן מודל חיזוי על סדרת זמן אחת, עם ערך זהה לכל השורות בעמודה של מזהה סדרת הזמן. עם זאת, Agent Platform מתאימה יותר לנתוני אימון שמכילים שתי סדרות זמן או יותר. כדי לקבל את התוצאות הטובות ביותר, מומלץ להשתמש לפחות ב-10 סדרות עיתיות לכל עמודה שבה משתמשים כדי לאמן את המודל. |
target_column |
String | העמודה (הערך) שהמודל הזה צריך לחזות. |
data_source_csv_filenames |
String | URI של קובץ CSV שמאוחסן ב-Cloud Storage. |
data_source_bigquery_table_path |
String | כתובת URI של טבלה ב-BigQuery. |
bigquery_destination_uri |
String | URI של מערך נתוני היעד שנבחר. אם לא מגדירים את הערך הזה, המשאבים נוצרים במערך נתונים חדש בפרויקט. |
machine_type |
String | סוג המכונה שבה צריך להשתמש להסקת מסקנות באצווה. |
max_num_workers |
מספר שלם | מספר העובדים המקסימלי לשימוש בהסקת מסקנות באצווה. |