במדריך הזה תלמדו איך להשתמש ב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.
מידע נוסף על העלויות של BigQuery ML זמין במאמר תמחור ב-BigQuery ML.
לפני שמתחילים
-
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 לאחסון מודל ה-ML.המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית Explorer, לוחצים על שם הפרויקט.
לוחצים על הצגת פעולות > יצירת מערך נתונים.
בדף Create dataset, מבצעים את הפעולות הבאות:
בשדה Dataset ID (מזהה מערך הנתונים), מזינים
bqml_tutorial.בקטע Location type, בוחרים באפשרות Multi-region ואז בוחרים באפשרות 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.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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 ייפתח בכרטיסייה חדשה. מבצעים את השלבים הבאים בכרטיסייה החדשה.
ב-Data Studio, לוחצים על הוספה > תרשים של סדרת זמנים.
בחלונית תרשים, בוחרים בכרטיסייה הגדרה.
בקטע 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 מכוונן אוטומטית את ההיפרפרמטרים במודל. האלגוריתם מתאים לעשרות מודלים פוטנציאליים ובוחר את המודל הטוב ביותר, שהוא המודל עם קריטריון המידע של אקייק (AIC) הנמוך ביותר.
אפשרות data_frequency של הצהרות CREATE MODEL מוגדרת כברירת מחדל לערך AUTO_FREQUENCY, כך שתהליך האימון מסיק אוטומטית את תדירות הנתונים של סדרת הזמן של הקלט. אפשרות ברירת המחדל של decompose_time_series במשפט CREATE MODEL היא TRUE, כך שכשמעריכים את המודל בשלב הבא, מוחזר מידע על נתוני סדרת הזמנים.
כדי ליצור את המודל:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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 מציגה את מדדי ההערכה של כל המודלים המועמדים שהוערכו במהלך תהליך הכוונון האוטומטי של היפרפרמטרים.
כדי להעריך את המודל, פועלים לפי השלבים הבאים:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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.
כדי לאחזר את המקדמים של המודל:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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%.
כדי לחזות נתונים באמצעות המודל:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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%.
כדי להסביר את התוצאות של המודל:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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 שיצרתם.
בצד שמאל של החלון, לוחצים על מחיקת מערך נתונים. הפעולה הזו מוחקת את מערך הנתונים, את הטבלה ואת כל הנתונים.
בתיבת הדו-שיח מחיקת מערך נתונים, מקלידים את שם מערך הנתונים (
bqml_tutorial) כדי לאשר את פקודת המחיקה, ואז לוחצים על מחיקה.
מחיקת פרויקט
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- איך יוצרים תחזית של סדרת זמנים אחת באמצעות מודל רב-משתני
- איך יוצרים תחזית של כמה סדרות זמנים באמצעות מודל חד-משתני
- איך משתמשים במודל חד-משתני כדי לחזות כמה סדרות זמן בכמה שורות
- איך יוצרים תחזית היררכית של כמה סדרות זמן באמצעות מודל חד-משתני
- סקירה כללית על BigQuery ML זמינה במאמר מבוא ל-AI ול-ML ב-BigQuery.