במדריך הזה תלמדו איך להשתמש במודל סדרת זמנים חד-משתני של ARIMA_PLUS כדי לחזות את הערך העתידי של עמודה נתונה, על סמך הערכים ההיסטוריים של אותה עמודה.
במדריך הזה נחזה סדרת זמנים אחת. ערכי התחזית מחושבים פעם אחת לכל נקודת זמן בנתוני הקלט.
במדריך הזה אנחנו משתמשים בנתונים מטבלת הדוגמה הציבורית של bigquery-public-data.google_analytics_sample.ga_sessions. הטבלה הזו מכילה נתוני מסחר אלקטרוני מוסתרים מ-Google Merchandise Store.
מטרות
במדריך הזה מוסבר איך לבצע את הפעולות הבאות:
- יצירת מודל של סדרת זמנים כדי לחזות את התנועה באתר באמצעות ההצהרה
CREATE MODEL. - הערכת המידע על הממוצע הנע המשולב האוטו-רגרסיבי (ARIMA) במודל באמצעות הפונקציה
ML.ARIMA_EVALUATE. - בדיקת מקדמי המודל באמצעות הפונקציה
ML.ARIMA_COEFFICIENTS. - אחזור המידע החזוי על תנועת הגולשים באתר מהמודל באמצעות הפונקציה
ML.FORECAST. - אחזור רכיבים של סדרת הזמן, כמו עונתיות ומגמה, באמצעות הפונקציה
ML.EXPLAIN_FORECAST. אפשר לבדוק את הרכיבים האלה של סדרת הזמן כדי להסביר את הערכים החזויים.
עלויות
במדריך הזה משתמשים ברכיבים של Google Cloudשהשימוש בהם כרוך בתשלום, כולל:
- BigQuery
- BigQuery ML
למידע נוסף על העלויות של BigQuery, קראו את הדף תמחור ב-BigQuery.
לפני שמתחילים
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
- BigQuery מופעל באופן אוטומטי בפרויקטים חדשים.
כדי להפעיל את BigQuery בפרויקט קיים, עוברים אל
מפעילים את BigQuery API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?
ההרשאות הנדרשות
כדי ליצור את קבוצת הנתונים, אתם צריכים את ההרשאה
bigquery.datasets.createב-IAM.כדי ליצור את המודל, צריך את ההרשאות הבאות:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
כדי להריץ הסקה, צריך את ההרשאות הבאות:
bigquery.models.getDatabigquery.jobs.create
במאמר מבוא ל-IAM תוכלו לקרוא מידע נוסף על התפקידים וההרשאות של IAM ב-BigQuery.
יצירת קבוצת נתונים
כדי ליצור מערך נתונים ב-BigQuery, בוחרים אחת מהאפשרויות הבאות:המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על Expand left pane כדי לפתוח אותה.
ב-Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
בדף Datasets, לוחצים על Create dataset.
בחלונית Create dataset:
בשדה Dataset ID, מזינים
bqml_tutorial.בקטע Data location (מיקום הנתונים), בוחרים באפשרות US (ארה"ב).
משאירים את שאר הגדרות ברירת המחדל כמו שהן.
לוחצים על Create dataset.
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 DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
המחשה חזותית של נתוני הקלט
לפני שיוצרים את המודל, אפשר להציג באופן חזותי את נתוני הקלט של סדרת הזמנים כדי לקבל מושג לגבי ההתפלגות. אפשר לעשות את זה באמצעות Data Studio.
כדי להציג את נתוני סדרת הזמנים:
SQL
בשאילתת GoogleSQL הבאה, ההצהרה SELECT מנתחת את העמודה date מטבלת הקלט לסוג TIMESTAMP ומשנה את השם שלה ל-parsed_date, ומשתמשת בסעיף SUM(...) ובסעיף GROUP BY date כדי ליצור ערך totals.visits יומי.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date;
כשהשאילתה מסתיימת, לוחצים על Open in > Data Studio. Data Studio ייפתח בכרטיסייה חדשה. מבצעים את השלבים הבאים בכרטיסייה החדשה.
ב-Looker Studio, לוחצים על Insert > Time series chart.
בחלונית תרשים, בוחרים בכרטיסייה הגדרה.
בקטע Metric, מוסיפים את השדה total_visits ומסירים את המדד שמוגדר כברירת מחדל, Record Count. התרשים שנוצר נראה כך:
בתרשים אפשר לראות שלסדרת הזמנים של הקלט יש דפוס עונתי שבועי.
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאה אמורה להיראות כך:
יצירת המודל של סדרת הזמנים
יוצרים מודל של סדרת זמנים כדי לחזות את סך כל הביקורים באתר, כפי שהם מיוצגים בעמודה totals.visits, ומאמנים אותו על הנתונים של Google Analytics 360.
SQL
בשאילתה הבאה, הסעיף OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) מציין שאתם יוצרים מודל של סדרת זמנים שמבוסס על ARIMA. האפשרות auto_arima של ההצהרה CREATE MODEL מוגדרת כברירת מחדל ל-TRUE, כך שהאלגוריתם auto.ARIMA מכוונן באופן אוטומטי את הפרמטרים של היפר-מודל במודל. האלגוריתם מתאים עשרות מודלים מועמדים ובוחר את המודל הטוב ביותר, שהוא המודל עם קריטריון המידע של Akaike (AIC) הנמוך ביותר.
ערך ברירת המחדל של האפשרות data_frequency בהצהרות CREATE MODEL הוא AUTO_FREQUENCY, כך שתהליך האימון מסיק באופן אוטומטי את תדירות הנתונים של סדרת הזמן של הקלט. האפשרות decompose_time_series של ההצהרה CREATE MODEL מוגדרת כברירת מחדל ל-TRUE, כך שמידע על נתוני סדרת הזמנים מוחזר כשמעריכים את המודל בשלב הבא.
כדי ליצור את המודל:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
CREATE OR REPLACE MODEL `bqml_tutorial.ga_arima_model` OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'parsed_date', time_series_data_col = 'total_visits', auto_arima = TRUE, data_frequency = 'AUTO_FREQUENCY', decompose_time_series = TRUE ) AS SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date;
השאילתה מסתיימת תוך כ-4 שניות, ואז אפשר לגשת למודל
ga_arima_model. מכיוון שהשאילתה משתמשת בהצהרתCREATE MODELכדי ליצור מודל, לא מוצגות תוצאות שאילתה.
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
הערכת המודלים המועמדים
SQL
מעריכים את המודלים של סדרות הזמן באמצעות הפונקציה ML.ARIMA_EVALUATE. הפונקציה ML.ARIMA_EVALUATE מציגה את מדדי ההערכה של כל המודלים המועמדים שהוערכו במהלך תהליך הכוונון האוטומטי של היפר-פרמטרים.
כדי להעריך את המודל:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT * FROM ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.ga_arima_model`);
התוצאות אמורות להיראות כך:
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
עמודות הפלט non_seasonal_p, non_seasonal_d, non_seasonal_q ו-has_drift מגדירות מודל ARIMA בצינור עיבוד הנתונים לאימון. עמודות הפלט log_likelihood, AIC ו-variance רלוונטיות לתהליך ההתאמה של מודל ARIMA.
האלגוריתם auto.ARIMA משתמש בבדיקת KPSS כדי לקבוע את הערך הטוב ביותר ל-non_seasonal_d, שבמקרה הזה הוא 1. כשהערך של non_seasonal_d הוא 1, האלגוריתם auto.ARIMA מאמן 42 מודלים שונים של ARIMA במקביל.
בדוגמה הזו, כל 42 המודלים המועמדים תקינים, ולכן הפלט מכיל 42 שורות, אחת לכל מודל ARIMA מועמד. במקרים שבהם חלק מהמודלים לא תקינים, הם לא נכללים בפלט. המודלים המועמדים האלה מוחזרים בסדר עולה לפי AIC. למודל בשורה הראשונה יש את ה-AIC הנמוך ביותר, והוא נחשב למודל הטוב ביותר. המודל הטוב ביותר נשמר כמודל הסופי, ומשמש כשמפעילים פונקציות כמו ML.FORECAST במודל.
העמודה seasonal_periods מכילה מידע על הדפוס העונתי שזוהה בנתונים של סדרת הזמנים. הוא לא קשור למודל ARIMA, ולכן יש לו ערך זהה בכל שורות הפלט. הוא מדווח על דפוס שבועי, שתואם לתוצאות שראיתם אם בחרתם להציג את נתוני הקלט.
העמודות has_holiday_effect, has_spikes_and_dips ו-has_step_changes מאוכלסות רק כש-decompose_time_series=TRUE. העמודות האלה גם משקפות מידע על נתוני הקלט של סדרת הזמנים, והן לא קשורות למודל ARIMA. גם בעמודות האלה יש ערכים זהים בכל שורות הפלט.
בעמודה error_message מוצגות שגיאות שקרו במהלך תהליך ההתאמה של auto.ARIMA. אחת מהסיבות האפשריות לשגיאות היא שהעמודות שנבחרו (non_seasonal_p, non_seasonal_d, non_seasonal_q ו-has_drift) לא יכולות לייצב את הסדרה העתית. כדי לאחזר את הודעת השגיאה של כל המודלים המועמדים, מגדירים את האפשרות show_all_candidate_models ל-TRUE כשיוצרים את המודל.
מידע נוסף על עמודות הפלט זמין במאמר הפונקציה ML.ARIMA_EVALUATE.
בדיקת המקדמים של המודל
SQL
בודקים את המקדמים של מודל סדרת הזמנים באמצעות הפונקציה ML.ARIMA_COEFFICIENTS.
כדי לאחזר את המקדמים של המודל:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT * FROM ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.ga_arima_model`);
בעמודת הפלט ar_coefficients מוצגים מקדמי המודל של החלק של הרגרסיה האוטומטית (AR) במודל ARIMA. באופן דומה, בעמודת הפלט ma_coefficients מוצגים מקדמי המודל של החלק של הממוצע הנע (MA) במודל ARIMA. שתי העמודות האלה מכילות ערכי מערך, שהאורכים שלהם שווים ל-non_seasonal_p ול-non_seasonal_q, בהתאמה. בפלט של הפונקציה ML.ARIMA_EVALUATE ראיתם שלמודל הכי טוב יש ערך non_seasonal_p של 2 וערך non_seasonal_q של 3. לכן, בפלט של ML.ARIMA_COEFFICIENTS, הערך של ar_coefficients הוא מערך של 2 רכיבים והערך של ma_coefficients הוא מערך של 3 רכיבים. הערך intercept_or_drift הוא האיבר הקבוע במודל ARIMA.
למידע נוסף על עמודות הפלט, ראו הפונקציה ML.ARIMA_COEFFICIENTS.
BigQuery DataFrames
בודקים את המקדמים של מודל סדרת הזמנים באמצעות הפונקציה coef_.
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
בעמודת הפלט ar_coefficients מוצגים מקדמי המודל של החלק של הרגרסיה האוטומטית (AR) במודל ARIMA. באופן דומה, בעמודת הפלט ma_coefficients מוצגים מקדמי המודל של החלק של הממוצע הנע (MA) במודל ARIMA. שתי העמודות האלה מכילות ערכי מערך, שהאורכים שלהם שווים ל-non_seasonal_p ול-non_seasonal_q, בהתאמה.
שימוש במודל לחיזוי נתונים
SQL
חיזוי ערכים עתידיים של סדרות זמנים באמצעות הפונקציה ML.FORECAST.
בשאילתת GoogleSQL הבאה, הסעיף STRUCT(30 AS horizon, 0.8 AS confidence_level) מציין שהשאילתה חוזה 30 נקודות זמן עתידיות, ויוצרת מרווח חיזוי עם רמת סמך של 80%.
כדי לחזות נתונים באמצעות המודל, פועלים לפי השלבים הבאים:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT * FROM ML.FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level));
התוצאות אמורות להיראות כך:
BigQuery DataFrames
חיזוי ערכים עתידיים של סדרות זמנים באמצעות הפונקציה predict.
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
שורות הפלט מסודרות בסדר כרונולוגי לפי הערך בעמודה forecast_timestamp. בחיזוי של סדרת זמנים, מרווח החיזוי, שמיוצג על ידי ערכי העמודות prediction_interval_lower_bound ו-prediction_interval_upper_bound, חשוב כמו ערך העמודה forecast_value. הערך forecast_value הוא נקודת האמצע של מרווח החיזוי. מרווח החיזוי תלוי בערכים של העמודות standard_error ו-confidence_level.
למידע נוסף על עמודות הפלט, ראו הפונקציה ML.FORECAST.
הסבר על תוצאות התחזית
SQL
כדי לקבל מדדי הסבר בנוסף לנתוני התחזית, אפשר להשתמש בפונקציה ML.EXPLAIN_FORECAST. הפונקציה ML.EXPLAIN_FORECAST חוזה ערכים עתידיים של סדרות זמנים, וגם מחזירה את כל הרכיבים הנפרדים של סדרות הזמנים.
בדומה לפונקציה ML.FORECAST, הסעיף STRUCT(30 AS horizon, 0.8 AS confidence_level) שמשמש בפונקציה ML.EXPLAIN_FORECAST מציין שהשאילתה חוזה 30 נקודות זמן עתידיות ויוצרת רווח בר-סמך של 80% לחיזוי.
כדי להסביר את תוצאות המודל:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run:
SELECT * FROM ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level));
התוצאות אמורות להיראות כך:
שורות הפלט מסודרות בסדר כרונולוגי לפי הערך בעמודה
time_series_timestamp.למידע נוסף על עמודות הפלט, ראו הפונקציה
ML.EXPLAIN_FORECAST.
BigQuery DataFrames
כדי לקבל מדדי הסבר בנוסף לנתוני התחזית, אפשר להשתמש בפונקציה predict_explain. הפונקציה predict_explain חוזה ערכים עתידיים של סדרת זמנים, וגם מחזירה את כל הרכיבים הנפרדים של סדרת הזמנים.
בדומה לפונקציה predict, הסעיף horizon=30, confidence_level=0.8 שמשמש בפונקציה predict_explain מציין שהשאילתה חוזה 30 נקודות זמן עתידיות ויוצרת רווח בר-סמך של 80%.
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
כדי להציג את התוצאות באופן חזותי, אפשר להשתמש ב-Data Studio כמו שמתואר בקטע הצגה חזותית של נתוני הקלט, וליצור תרשים באמצעות העמודות הבאות כמדדים:
time_series_dataprediction_interval_lower_boundprediction_interval_upper_boundtrendseasonal_period_weeklystep_changes
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים הנפרדים.
- אתם יכולים למחוק את הפרויקט שיצרתם.
- אפשר גם להשאיר את הפרויקט ולמחוק את מערך הנתונים.
מחיקת מערך הנתונים
מחיקת הפרויקט תסיר את כל מערכי הנתונים ואת כל הטבלאות בפרויקט. אם אתם מעדיפים להשתמש שוב בפרויקט, אתם יכולים למחוק את קבוצת הנתונים שיצרתם במדריך הזה:
אם צריך, פותחים את הדף של BigQuery במסוףGoogle Cloud .
בניווט, לוחצים על מערך הנתונים bqml_tutorial שיצרתם.
לוחצים על מחיקת מערך הנתונים בצד שמאל של החלון. הפעולה הזו מוחקת את מערך הנתונים, את הטבלה ואת כל הנתונים.
בתיבת הדו-שיח Delete dataset, מאשרים את פקודת המחיקה על ידי הקלדת שם מערך הנתונים (
bqml_tutorial) ולוחצים על Delete.
מחיקת הפרויקט
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- איך יוצרים תחזית של סדרת זמנים אחת באמצעות מודל רב-משתני
- איך יוצרים תחזית של כמה סדרות זמנים באמצעות מודל חד-משתני
- איך משנים את קנה המידה של מודל חד-משתני כשיוצרים תחזית של כמה סדרות זמנים על פני שורות רבות
- איך יוצרים תחזית היררכית של כמה סדרות זמנים באמצעות מודל חד-משתני
- לסקירה כללית על BigQuery ML, קראו את המאמר מבוא ל-AI ול-ML ב-BigQuery.