במדריך הזה תלמדו איך להשתמש במודל של סדרת זמנים מרובת משתנים כדי לחזות את הערך העתידי של עמודה מסוימת, על סמך הערך ההיסטורי של כמה תכונות קלט.
במדריך הזה נסביר איך ליצור תחזית לכמה סדרות עיתיות. הערכים החזויים מחושבים לכל נקודת זמן, לכל ערך בעמודה אחת או יותר שצוינו. לדוגמה, אם רוצים לחזות את מזג האוויר ומציינים עמודה שמכילה נתוני מדינה, הנתונים החזויים יכללו תחזיות לכל נקודות הזמן עבור מדינה א', ואז ערכים חזויים לכל נקודות הזמן עבור מדינה ב', וכן הלאה. אם רוצים לחזות את מזג האוויר ומציינים עמודות שמכילות נתונים של מדינה ועיר, הנתונים החזויים יכללו תחזיות לכל נקודות הזמן של מדינה א' ועיר א', ואז ערכים חזויים לכל נקודות הזמן של מדינה א' ועיר ב', וכן הלאה.
במדריך הזה נעשה שימוש בנתונים מהטבלאות הציבוריות bigquery-public-data.iowa_liquor_sales.sales ו-bigquery-public-data.covid19_weathersource_com.postal_code_day_history. הטבלה bigquery-public-data.iowa_liquor_sales.sales מכילה נתוני מכירות של משקאות חריפים שנאספו מכמה ערים במדינת איווה. בטבלה bigquery-public-data.covid19_weathersource_com.postal_code_day_history מופיעים נתוני מזג אוויר היסטוריים, כמו טמפרטורה ולחות, מכל העולם.
לפני שקוראים את המדריך הזה, מומלץ מאוד לקרוא את המאמר בנושא יצירת תחזית של סדרת זמן יחידה באמצעות מודל רב-משתני.
מטרות
במדריך הזה מוסבר איך לבצע את הפעולות הבאות:
- יצירת מודל של סדרת זמנים כדי לחזות הזמנות של חנות משקאות באמצעות ההצהרה
CREATE MODEL. - שליפת ערכי ההזמנות החזויים מהמודל באמצעות הפונקציה
ML.FORECAST. - אחזור רכיבים של סדרת הזמן, כמו עונתיות, מגמה ושיוכי תכונות, באמצעות הפונקציה
ML.EXPLAIN_FORECAST. אפשר לבדוק את הרכיבים האלה של סדרות הזמן כדי להסביר את הערכים החזויים. - כדי להעריך את רמת הדיוק של המודל, משתמשים בפונקציה
ML.EVALUATE. - אפשר לזהות חריגות באמצעות המודל עם הפונקציה
ML.DETECT_ANOMALIES.
עלויות
במדריך הזה נעשה שימוש ברכיבים של Cloud de Confiance by S3NSשהשימוש בהם כרוך בתשלום, כולל הרכיבים הבאים:
- BigQuery
- BigQuery ML
מידע נוסף על העלויות ב-BigQuery זמין בדף תמחור ב-BigQuery.
מידע נוסף על העלויות של BigQuery ML זמין במאמר תמחור ב-BigQuery ML.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
- BigQuery מופעל באופן אוטומטי בפרויקטים חדשים.
כדי להפעיל את BigQuery בפרויקט קיים, עוברים אל
אם BigQuery API לא מופעל, מפעילים אותו.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
יצירת מערך נתונים
כדי ליצור מערך נתונים ב-BigQuery, בוחרים באחת מהאפשרויות הבאות:
המסוף
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בסייר, מרחיבים את הפרויקט ואז לוחצים על מערכי נתונים.
בדף Datasets (מערכי נתונים), לוחצים על Create dataset (יצירת מערך נתונים).
בחלונית Create dataset:
בשדה Dataset ID (מזהה קבוצת נתונים), מזינים
bqml_tutorial.בקטע Data location, בוחרים באפשרות US.
משאירים את שאר הגדרות ברירת המחדל כמו שהן.
לוחצים על יצירת מערך נתונים.
BQ
כדי ליצור מערך נתונים חדש, משתמשים בפקודה bq mk --dataset.
יוצרים מערך נתונים בשם
bqml_tutorialעם מיקום הנתונים שמוגדר ל-US:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
בודקים שמערך הנתונים נוצר:
bq ls
API
מפעילים את השיטה datasets.insert עם משאב מוגדר של מערך נתונים:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
יצירת טבלה של נתוני קלט
ליצור טבלת נתונים שאפשר להשתמש בה כדי לאמן ולהעריך את המודל. בטבלה הזו משולבות עמודות מהטבלאות bigquery-public-data.iowa_liquor_sales.sales ו-bigquery-public-data.covid19_weathersource_com.postal_code_day_history כדי לנתח את ההשפעה של מזג האוויר על הסוג והמספר של הפריטים שהוזמנו בחנויות משקאות חריפים. יוצרים גם את העמודות הנוספות הבאות שאפשר להשתמש בהן כמשתני קלט למודל:
-
date: תאריך ההזמנה -
store_number: המספר הייחודי של החנות שביצעה את ההזמנה -
item_number: המספר הייחודי של הפריט שהוזמן -
bottles_sold: מספר הבקבוקים שהוזמנו מהפריט המשויך -
temperature: הטמפרטורה הממוצעת במיקום החנות בתאריך ההזמנה -
humidity: הלחות הממוצעת במיקום החנות בתאריך ההזמנה
כדי ליצור את טבלת נתוני הקלט:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
CREATE OR REPLACE TABLE `bqml_tutorial.iowa_liquor_sales_with_weather` AS WITH sales AS ( SELECT DATE, store_number, item_number, bottles_sold, SAFE_CAST(SAFE_CAST(zip_code AS FLOAT64) AS INT64) AS zip_code FROM `bigquery-public-data.iowa_liquor_sales.sales` AS sales WHERE SAFE_CAST(zip_code AS FLOAT64) IS NOT NULL ), aggregated_sales AS ( SELECT DATE, store_number, item_number, ANY_VALUE(zip_code) AS zip_code, SUM(bottles_sold) AS bottles_sold, FROM sales GROUP BY DATE, store_number, item_number ), weather AS ( SELECT DATE, SAFE_CAST(postal_code AS INT64) AS zip_code, avg_temperature_air_2m_f AS temperature, avg_humidity_specific_2m_gpkg AS humidity, FROM `bigquery-public-data.covid19_weathersource_com.postal_code_day_history` WHERE country = 'US' AND SAFE_CAST(postal_code AS INT64) IS NOT NULL ) SELECT aggregated_sales.date, aggregated_sales.store_number, aggregated_sales.item_number, aggregated_sales.bottles_sold, weather.temperature AS temperature, weather.humidity AS humidity FROM aggregated_sales LEFT JOIN weather ON aggregated_sales.zip_code=weather.zip_code AND aggregated_sales.DATE=weather.DATE;
יצירת מודל של סדרת זמנים
יוצרים מודל של סדרת זמנים כדי לחזות את מספר הבקבוקים שנמכרו לכל שילוב של מזהה חנות ומזהה פריט, לכל תאריך בטבלה bqml_tutorial.iowa_liquor_sales_with_weather לפני 1 בספטמבר 2022. משתמשים בטמפרטורה הממוצעת וברמת הלחות במיקום החנות בכל תאריך כמאפיינים להערכה במהלך התחזית. יש בערך מיליון שילובים שונים של מספר פריט ומספר חנות בטבלה bqml_tutorial.iowa_liquor_sales_with_weather, כלומר יש מיליון סדרות זמן שונות שאפשר לחזות.
כדי ליצור את המודל:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
CREATE OR REPLACE MODEL `bqml_tutorial.multi_time_series_arimax_model` OPTIONS( model_type = 'ARIMA_PLUS_XREG', time_series_id_col = ['store_number', 'item_number'], time_series_data_col = 'bottles_sold', time_series_timestamp_col = 'date' ) AS SELECT * FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE < DATE('2022-09-01');
השלמת השאילתה תימשך כ-38 דקות, ולאחר מכן תוכלו לגשת למודל
multi_time_series_arimax_model. מכיוון שהשאילתה משתמשת בהצהרתCREATE MODELכדי ליצור מודל, לא מוצגות תוצאות של השאילתה.
שימוש במודל לחיזוי נתונים
אפשר לחזות ערכים עתידיים של סדרות עיתיות באמצעות הפונקציה ML.FORECAST.
בשאילתת GoogleSQL הבאה, סעיף STRUCT(5 AS horizon, 0.8 AS confidence_level) מציין שהשאילתה חוזה 5 נקודות זמן עתידיות, ומפיקה רווח חיזוי עם רמת סמך של 80%.
חתימת הנתונים של נתוני הקלט לפונקציה ML.FORECAST זהה לחתימת הנתונים של נתוני האימון ששימשו ליצירת המודל. העמודה bottles_sold לא נכללת בקלט, כי אלה הנתונים שהמודל מנסה לחזות.
כדי לחזות נתונים באמצעות המודל:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT * FROM ML.FORECAST ( model `bqml_tutorial.multi_time_series_arimax_model`, STRUCT (5 AS horizon, 0.8 AS confidence_level), ( SELECT * EXCEPT (bottles_sold) FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE>=DATE('2022-09-01') ) );
התוצאות אמורות להיראות כך:
השורות של הפלט מסודרות לפי הערך של
store_number, אחר כך לפי הערך שלitem_ID, ואז לפי סדר כרונולוגי של הערך בעמודהforecast_timestamp. בתחזית של סדרת זמן, מרווח החיזוי, שמיוצג על ידי ערכי העמודותprediction_interval_lower_boundו-prediction_interval_upper_bound, חשוב לא פחות מערך העמודהforecast_value. הערך שלforecast_valueהוא נקודת האמצע של מרווח החיזוי. מרווח החיזוי תלוי בערכים של העמודותstandard_errorו-confidence_level.מידע נוסף על עמודות הפלט זמין במאמר
ML.FORECAST.
הסבר על תוצאות התחזית
אפשר לקבל מדדים של יכולת הסבר בנוסף לנתוני התחזית באמצעות הפונקציה ML.EXPLAIN_FORECAST. הפונקציה ML.EXPLAIN_FORECAST חוזה ערכים עתידיים של סדרות זמן, וגם מחזירה את כל הרכיבים הנפרדים של סדרת הזמן.
בדומה לפונקציה ML.FORECAST, פסוקית STRUCT(5 AS horizon, 0.8 AS confidence_level) שמשמשת בפונקציה ML.EXPLAIN_FORECAST מציינת שהשאילתה חוזה 30 נקודות זמן עתידיות ומפיקה רווח בר-סמך עם רמת סמך של 80%.
הפונקציה ML.EXPLAIN_FORECAST מספקת נתונים היסטוריים ונתוני תחזית. כדי לראות רק את נתוני התחזית, מוסיפים את האפשרות time_series_type לשאילתה ומציינים את הערך forecast כאפשרות.
כדי להסביר את התוצאות של המודל:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT * FROM ML.EXPLAIN_FORECAST ( model `bqml_tutorial.multi_time_series_arimax_model`, STRUCT (5 AS horizon, 0.8 AS confidence_level), ( SELECT * EXCEPT (bottles_sold) FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE >= DATE('2022-09-01') ) );
התוצאות אמורות להיראות כך:
שורות הפלט מסודרות בסדר כרונולוגי לפי ערך העמודה
time_series_timestampמידע נוסף על עמודות הפלט זמין במאמר
ML.EXPLAIN_FORECAST.
הערכת רמת הדיוק של התחזיות
כדי להעריך את דיוק התחזית של המודל, מריצים אותו על נתונים שהמודל לא אומן עליהם. כדי לעשות את זה, משתמשים בפונקציה ML.EVALUATE. הפונקציה ML.EVALUATE מבצעת הערכה של כל סדרת זמן בנפרד.
בשילתת GoogleSQL הבאה, המשפט השני SELECT מספק את הנתונים עם התכונות העתידיות, שמשמשות לחיזוי הערכים העתידיים כדי להשוות אותם לנתונים בפועל.
כדי להעריך את רמת הדיוק של המודל:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT * FROM ML.EVALUATE ( model `bqml_tutorial.multi_time_series_arimax_model`, ( SELECT * FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE >= DATE('2022-09-01') ) );
התוצאות אמורות להיראות כך:
מידע נוסף על עמודות הפלט זמין במאמר
ML.EVALUATE.
שימוש במודל כדי לזהות אנומליות
מזהים חריגות בנתוני האימון באמצעות הפונקציה ML.DETECT_ANOMALIES.
בשילוב עם הפונקציה ML.DETECT_ANOMALIES, סעיף STRUCT(0.95 AS anomaly_prob_threshold) בשאילתה הבאה מאפשר לזהות נקודות נתונים אנומליות ברמת סמך של 95%.
כדי לזהות אנומליות בנתוני האימון:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT * FROM ML.DETECT_ANOMALIES ( model `bqml_tutorial.multi_time_series_arimax_model`, STRUCT (0.95 AS anomaly_prob_threshold) );
התוצאות אמורות להיראות כך:
בעמודה
anomaly_probabilityבתוצאות מופיעה הסבירות שערך נתון בעמודהbottles_soldהוא אנומליה.מידע נוסף על עמודות הפלט זמין במאמר
ML.DETECT_ANOMALIES.
זיהוי חריגות בנתונים חדשים
כדי לזהות חריגות בנתונים החדשים, מספקים נתוני קלט לפונקציה ML.DETECT_ANOMALIES. הנתונים החדשים צריכים להיות בעלי חתימת נתונים זהה לזו של נתוני האימון.
כדי לזהות אנומליות בנתונים חדשים:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT * FROM ML.DETECT_ANOMALIES ( model `bqml_tutorial.multi_time_series_arimax_model`, STRUCT (0.95 AS anomaly_prob_threshold), ( SELECT * FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE >= DATE('2022-09-01') ) );
התוצאות אמורות להיראות כך:
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
- אתם יכולים למחוק את הפרויקט שיצרתם.
- אפשר גם להשאיר את הפרויקט ולמחוק את קבוצת הנתונים.
מחיקת מערך הנתונים
מחיקה של פרויקט מסירה את כל מערכי הנתונים ואת כל הטבלאות בפרויקט. אם אתם מעדיפים להשתמש מחדש בפרויקט, אתם יכולים למחוק את מערך הנתונים שיצרתם במדריך הזה:
אם צריך, פותחים את הדף BigQuery במסוףCloud de Confiance .
בחלונית הניווט, לוחצים על מערך הנתונים bqml_tutorial שיצרתם.
לוחצים על מחיקת מערך נתונים בצד שמאל של החלון. הפעולה הזו מוחקת את מערך הנתונים, את הטבלה ואת כל הנתונים.
בתיבת הדו-שיח מחיקת מערך נתונים, מקלידים את השם של מערך הנתונים (
bqml_tutorial) כדי לאשר את פקודת המחיקה, ואז לוחצים על מחיקה.
מחיקת פרויקט
כדי למחוק את הפרויקט:
- במסוף Cloud de Confiance , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- איך יוצרים תחזית של סדרת זמנים אחת באמצעות מודל חד-משתני
- איך יוצרים תחזית של כמה סדרות זמנים באמצעות מודל חד-משתני
- איך משתמשים במודל חד-משתני כדי לחזות כמה סדרות זמן בכמה שורות
- איך יוצרים תחזית היררכית של כמה סדרות זמן באמצעות מודל חד-משתני
- סקירה כללית על BigQuery ML זמינה במאמר מבוא ל-AI ול-ML ב-BigQuery.