חיזוי של כמה סדרות זמן באמצעות מודל חד-משתני של ARIMA_PLUS

במדריך הזה תלמדו איך להשתמש בARIMA_PLUS מודל חד-משתני של סדרת זמנים כדי לחזות את הערך העתידי של עמודה מסוימת, על סמך הערכים ההיסטוריים של העמודה הזו.

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

במדריך הזה נעשה שימוש בנתונים מהטבלה הציבורית bigquery-public-data.new_york.citibike_trips. הטבלה הזו מכילה מידע על נסיעות ב-Citi Bike בניו יורק.

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

מטרות

במדריך הזה מוסבר איך לבצע את הפעולות הבאות:

עלויות

במדריך הזה נעשה שימוש ברכיבים של Google Cloudשחלים עליהם חיובים, כולל:

  • BigQuery
  • BigQuery ML

מידע נוסף על העלויות ב-BigQuery זמין בדף תמחור ב-BigQuery.

מידע נוסף על העלויות של BigQuery ML זמין במאמר תמחור ב-BigQuery ML.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. ‫BigQuery מופעל באופן אוטומטי בפרויקטים חדשים. כדי להפעיל את BigQuery בפרויקט קיים, עוברים אל

    מפעילים את BigQuery API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

ההרשאות הנדרשות

  • כדי ליצור את מערך הנתונים, אתם צריכים את ההרשאה bigquery.datasets.create ב-IAM.

  • כדי ליצור את המודל, צריך את ההרשאות הבאות:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
  • כדי להריץ הסקה, אתם צריכים את ההרשאות הבאות:

    • bigquery.models.getData
    • bigquery.jobs.create

במאמר מבוא ל-IAM יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery.

יצירת מערך נתונים

יוצרים מערך נתונים ב-BigQuery לאחסון מודל ה-ML.

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    לדף BigQuery

  2. בחלונית Explorer, לוחצים על שם הפרויקט.

  3. לוחצים על הצגת פעולות > יצירת מערך נתונים.

  4. בדף Create dataset, מבצעים את הפעולות הבאות:

    • בשדה Dataset ID (מזהה מערך הנתונים), מזינים bqml_tutorial.

    • בקטע Location type, בוחרים באפשרות Multi-region ואז בוחרים באפשרות US.

    • משאירים את הגדרות ברירת המחדל שנותרו כמו שהן ולוחצים על Create dataset (יצירת מערך נתונים).

BQ

כדי ליצור מערך נתונים חדש, משתמשים בפקודה bq mk --dataset.

  1. יוצרים מערך נתונים בשם bqml_tutorial עם מיקום הנתונים שמוגדר ל-US.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. בודקים שמערך הנתונים נוצר:

    bq ls

API

מבצעים קריאה לשיטה datasets.insert עם משאב מוגדר של מערך נתונים.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

BigQuery DataFrames

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames. מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.

import google.cloud.bigquery

bqclient = google.cloud.bigquery.Client()
bqclient.create_dataset("bqml_tutorial", exists_ok=True)

המחשת נתוני הקלט

לפני שיוצרים את המודל, אפשר להציג את נתוני הסדרות העיתיות של הקלט כדי לקבל מושג לגבי הפיזור. אפשר לעשות זאת באמצעות Data Studio.

SQL

ההצהרה SELECT של השאילתה הבאה משתמשת בפונקציה EXTRACT כדי לחלץ את פרטי התאריך מהעמודה starttime. השאילתה משתמשת בסעיף COUNT(*) כדי לקבל את המספר הכולל של הנסיעות ב-Citi Bike ביום.

כדי להציג את נתוני סדרת הזמנים:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):

    SELECT
     EXTRACT(DATE from starttime) AS date,
     COUNT(*) AS num_trips
    FROM
    `bigquery-public-data.new_york.citibike_trips`
    GROUP BY date;
  3. כשהשאילתה מסתיימת, לוחצים על Open in (פתיחה ב) > Data Studio. ‫Data Studio ייפתח בכרטיסייה חדשה. מבצעים את השלבים הבאים בכרטיסייה החדשה.

  4. ב-Data Studio, לוחצים על הוספה > תרשים של סדרת זמנים.

  5. בחלונית תרשים, בוחרים בכרטיסייה הגדרה.

  6. בקטע Metric, מוסיפים את השדה num_trips ומסירים את מדד ברירת המחדל Record Count. התרשים שיתקבל ייראה כך:

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

BigQuery DataFrames

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames. מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.


import bigframes.pandas as bpd

df = bpd.read_gbq("bigquery-public-data.new_york.citibike_trips")

features = bpd.DataFrame(
    {
        "num_trips": df.starttime,
        "date": df["starttime"].dt.date,
    }
)
date = df["starttime"].dt.date
df.groupby([date])
num_trips = features.groupby(["date"]).count()

# Results from running "print(num_trips)"

#                num_trips
# date
# 2013-07-01      16650
# 2013-07-02      22745
# 2013-07-03      21864
# 2013-07-04      22326
# 2013-07-05      21842
# 2013-07-06      20467
# 2013-07-07      20477
# 2013-07-08      21615
# 2013-07-09      26641
# 2013-07-10      25732
# 2013-07-11      24417
# 2013-07-12      19006
# 2013-07-13      26119
# 2013-07-14      29287
# 2013-07-15      28069
# 2013-07-16      29842
# 2013-07-17      30550
# 2013-07-18      28869
# 2013-07-19      26591
# 2013-07-20      25278
# 2013-07-21      30297
# 2013-07-22      25979
# 2013-07-23      32376
# 2013-07-24      35271
# 2013-07-25      31084

num_trips.plot.line(
    # Rotate the x labels so they are more visible.
    rot=45,
)

יצירת מודל של סדרת זמנים

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

SQL

בשאילתה הבאה, הפסקה OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) מציינת שאתם יוצרים מודל של סדרת זמנים שמבוסס על ARIMA. משתמשים באפשרות time_series_id_col של הצהרת CREATE MODEL כדי לציין עמודה אחת או יותר בנתוני הקלט שרוצים לקבל לגביהם תחזיות. במקרה הזה, תחנת Citi Bike, שמיוצגת על ידי העמודה start_station_name. השתמשנו בפסקה WHERE כדי להגביל את תחנות המוצא לאלה שכוללות Central Park בשם שלהן. האפשרות auto_arima_max_order של הצהרת CREATE MODEL שולטת במרחב החיפוש של כוונון היפרפרמטרים באלגוריתם auto.ARIMA. אפשרות ברירת המחדל של decompose_time_series במשפט CREATE MODEL היא TRUE, כך שכשמעריכים את המודל בשלב הבא, מוחזר מידע על נתוני סדרת הזמנים.

כדי ליצור את המודל:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):

    CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model_group`
    OPTIONS
    (model_type = 'ARIMA_PLUS',
     time_series_timestamp_col = 'date',
     time_series_data_col = 'num_trips',
     time_series_id_col = 'start_station_name',
     auto_arima_max_order = 5
    ) AS
    SELECT
     start_station_name,
     EXTRACT(DATE from starttime) AS date,
     COUNT(*) AS num_trips
    FROM
    `bigquery-public-data.new_york.citibike_trips`
    WHERE start_station_name LIKE '%Central Park%'
    GROUP BY start_station_name, date;

    השאילתה נמשכת כ-24 שניות, ולאחר מכן אפשר לגשת למודל nyc_citibike_arima_model_group. מכיוון שהשאילתה משתמשת בהצהרת CREATE MODEL, לא מוצגות תוצאות של השאילתה.

השאילתה הזו יוצרת 12 מודלים של סדרות זמן, אחד לכל אחת מ-12 תחנות ההתחלה של Citi Bike בנתוני הקלט. עלות הזמן, כ-24 שניות, גבוהה רק פי 1.4 מזו של יצירת מודל יחיד של סדרת זמנים, בגלל המקביליות. עם זאת, אם מסירים את סעיף WHERE ... LIKE ..., יהיו יותר מ-600 סדרות זמן לתחזית, והתחזית לא תתבצע במקביל באופן מלא בגלל מגבלות הקיבולת של המשבצות. במקרה כזה, השלמת השאילתה תימשך כ-15 דקות. כדי לקצר את זמן הריצה של השאילתה, תוך התפשרות על ירידה קלה באיכות המודל, אפשר להקטין את הערך של auto_arima_max_order. כך מצמצמים את מרחב החיפוש של כוונון ההיפר-פרמטרים באלגוריתם auto.ARIMA. מידע נוסף זמין במאמר Large-scale time series forecasting best practices.

BigQuery DataFrames

בקטע הקוד הבא, אנחנו יוצרים מודל של סדרת זמנים שמבוסס על ARIMA.

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames. מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.

from bigframes.ml import forecasting
import bigframes.pandas as bpd

model = forecasting.ARIMAPlus(
    # To reduce the query runtime with the compromise of a potential slight
    # drop in model quality, you could decrease the value of the
    # auto_arima_max_order. This shrinks the search space of hyperparameter
    # tuning in the auto.ARIMA algorithm.
    auto_arima_max_order=5,
)

df = bpd.read_gbq("bigquery-public-data.new_york.citibike_trips")

# This query creates twelve time series models, one for each of the twelve
# Citi Bike start stations in the input data. If you remove this row
# filter, there would be 600+ time series to forecast.
df = df[df["start_station_name"].str.contains("Central Park")]

features = bpd.DataFrame(
    {
        "start_station_name": df["start_station_name"],
        "num_trips": df["starttime"],
        "date": df["starttime"].dt.date,
    }
)
num_trips = features.groupby(
    ["start_station_name", "date"],
    as_index=False,
).count()

X = num_trips["date"].to_frame()
y = num_trips["num_trips"].to_frame()

model.fit(
    X,
    y,
    # The input data that you want to get forecasts for,
    # in this case the Citi Bike station, as represented by the
    # start_station_name column.
    id_col=num_trips["start_station_name"].to_frame(),
)

# The model.fit() call above created a temporary model.
# Use the to_gbq() method to write to a permanent location.
model.to_gbq(
    your_model_id,  # For example: "bqml_tutorial.nyc_citibike_arima_model",
    replace=True,
)

הפעולה הזו יוצרת 12 מודלים של סדרות זמנים, אחד לכל אחת מ-12 תחנות ההתחלה של Citi Bike בנתוני הקלט. עלות הזמן, כ-24 שניות, גבוהה רק פי 1.4 מזו של יצירת מודל יחיד של סדרת זמן, בגלל המקביליות.

הערכת המודל

SQL

כדי להעריך את מודל הסדרות העיתיות, משתמשים בפונקציה ML.ARIMA_EVALUATE. הפונקציה ML.ARIMA_EVALUATE מציגה את מדדי ההערכה שנוצרו עבור המודל במהלך התהליך של כוונון אוטומטי של היפר-פרמטרים.

כדי להעריך את המודל, פועלים לפי השלבים הבאים:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):

    SELECT
    *
    FROM
    ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`);

    התוצאות אמורות להיראות כך:

    מדדי הערכה למודל של סדרת זמנים.

    הפונקציה auto.ARIMA מעריכה עשרות מודלים אפשריים של ARIMA לכל סדרת זמן, אבל כברירת מחדל הפונקציה ML.ARIMA_EVALUATE מציגה רק את המידע של המודל הכי טוב כדי שטבלת הפלט תהיה קומפקטית. כדי להציג את כל המודלים המועמדים, אפשר להגדיר את הארגומנט show_all_candidate_model של הפונקציה ML.ARIMA_EVALUATE לערך TRUE.

BigQuery DataFrames

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames. מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.

# Evaluate the time series models by using the summary() function. The summary()
# function shows you the evaluation metrics of all the candidate models evaluated
# during the process of automatic hyperparameter tuning.
summary = model.summary()
print(summary.peek())

# Expected output:
#    start_station_name                  non_seasonal_p  non_seasonal_d   non_seasonal_q  has_drift  log_likelihood           AIC     variance ...
# 1         Central Park West & W 72 St               0               1                5      False    -1966.449243   3944.898487  1215.689281 ...
# 8            Central Park W & W 96 St               0               0                5      False     -274.459923    562.919847   655.776577 ...
# 9        Central Park West & W 102 St               0               0                0      False     -226.639918    457.279835    258.83582 ...
# 11        Central Park West & W 76 St               1               1                2      False    -1700.456924   3408.913848   383.254161 ...
# 4   Grand Army Plaza & Central Park S               0               1                5      False    -5507.553498  11027.106996   624.138741 ...

בעמודה start_station_name מוגדרת עמודת נתוני הקלט שעבורה נוצרו סדרות הזמן. זו העמודה שציינתם באמצעות האפשרות time_series_id_col כשייצרתם את המודל.

עמודות הפלט non_seasonal_p, non_seasonal_d, non_seasonal_q ו-has_drift מגדירות מודל ARIMA בצינור העיבוד לאימון. עמודות הפלט log_likelihood, AIC ו-variance רלוונטיות לתהליך ההתאמה של מודל ARIMA. תהליך ההתאמה קובע את מודל ה-ARIMA הטוב ביותר באמצעות האלגוריתם auto.ARIMA, אחד לכל סדרת זמן.

האלגוריתם auto.ARIMA משתמש במבחן KPSS כדי לקבוע את הערך הטוב ביותר ל-non_seasonal_d, שבמקרה הזה הוא 1. כשהערך של non_seasonal_d הוא 1, אלגוריתם auto.ARIMA מאמן 42 מודלים שונים של ARIMA במקביל. בדוגמה הזו, כל 42 המודלים האפשריים תקפים, ולכן הפלט מכיל 42 שורות, אחת לכל מודל ARIMA אפשרי. במקרים שבהם חלק מהמודלים לא תקפים, הם לא נכללים בפלט. המודלים האלה מוצגים בסדר עולה לפי AIC. למודל בשורה הראשונה יש את ערך ה-AIC הנמוך ביותר, והוא נחשב למודל הטוב ביותר. המודל הכי טוב נשמר כמודל הסופי ומשמש לחיזוי נתונים, להערכת המודל ולבדיקת המקדמים של המודל, כמו שמוצג בשלבים הבאים.

העמודה seasonal_periods מכילה מידע על הדפוס העונתי שזוהה בנתוני הסדרות העיתיות. לכל סדרת זמן יכולים להיות דפוסים עונתיים שונים. לדוגמה, מהאיור אפשר לראות שלסדרת זמן אחת יש דפוס שנתי, אבל לאחרות אין.

העמודות has_holiday_effect,‏ has_spikes_and_dips ו-has_step_changes מתמלאות רק כשמגדירים את decompose_time_series=TRUE. העמודות האלה משקפות גם מידע על נתוני סדרות הזמן של הקלט, והן לא קשורות למודל ARIMA. הערכים בעמודות האלה זהים בכל שורות הפלט.

בדיקת המקדמים של המודל

SQL

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

כדי לאחזר את המקדמים של המודל:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):

    SELECT
    *
    FROM
    ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`);

    השלמת השאילתה נמשכת פחות משנייה. התוצאות אמורות להיראות כך:

    מקדמים למודל של סדרת הזמנים.

    מידע נוסף על עמודות הפלט זמין במאמר בנושא הפונקציה ML.ARIMA_COEFFICIENTS.

BigQuery DataFrames

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

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames. מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.

coef = model.coef_
print(coef.peek())

# Expected output:
#    start_station_name                                              ar_coefficients                                   ma_coefficients intercept_or_drift
# 5    Central Park West & W 68 St                                                [] [-0.41014089  0.21979212 -0.59854213 -0.251438...                0.0
# 6         Central Park S & 6 Ave                                                [] [-0.71488957 -0.36835772  0.61008532  0.183290...                0.0
# 0    Central Park West & W 85 St                                                [] [-0.39270166 -0.74494638  0.76432596  0.489146...                0.0
# 3    W 82 St & Central Park West                         [-0.50219511 -0.64820817]             [-0.20665325  0.67683137 -0.68108631]                0.0
# 11  W 106 St & Central Park West [-0.70442887 -0.66885553 -0.25030325 -0.34160669]                                                []                0.0

בעמודה start_station_name מוגדרת עמודת נתוני הקלט שעבורה נוצרו סדרות הזמן. זו העמודה שציינתם באפשרות time_series_id_col כשיוצרים את המודל.

בעמודת הפלט ar_coefficients מוצגים מקדמי המודל של החלק האוטוגרסיבי (AR) של מודל ARIMA. באופן דומה, בעמודת הפלט ma_coefficients מוצגים מקדמי המודל של החלק של הממוצע הנע (MA) במודל ARIMA. שתי העמודות האלה מכילות ערכי מערך, והאורך שלהן שווה ל-non_seasonal_p ול-non_seasonal_q, בהתאמה. הערך של intercept_or_drift הוא האיבר הקבוע במודל ARIMA.

שימוש במודל כדי לחזות נתונים

SQL

אפשר לחזות ערכים עתידיים של סדרות זמן באמצעות הפונקציה ML.FORECAST.

בשאילתת GoogleSQL הבאה, פסוקית STRUCT(3 AS horizon, 0.9 AS confidence_level) מציינת שהשאילתה חוזה 3 נקודות זמן עתידיות, ומפיקה מרווח חיזוי עם רמת סמך של 90%.

כדי לחזות נתונים באמצעות המודל:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):

    SELECT
    *
    FROM
    ML.FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`,
     STRUCT(3 AS horizon, 0.9 AS confidence_level))
  3. לוחצים על Run.

    השלמת השאילתה נמשכת פחות משנייה. התוצאות אמורות להיראות כך:

    הפלט של ML.FORECAST.

מידע נוסף על עמודות הפלט זמין במאמר בנושא הפונקציה ML.FORECAST.

BigQuery DataFrames

כדי לחזות ערכים עתידיים של סדרת זמן, משתמשים בפונקציה predict.

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames. מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.

prediction = model.predict(horizon=3, confidence_level=0.9)

print(prediction.peek())
# Expected output:
#            forecast_timestamp                             start_station_name  forecast_value  standard_error  confidence_level ...
# 4   2016-10-01 00:00:00+00:00                         Central Park S & 6 Ave      302.377201       32.572948               0.9 ...
# 14  2016-10-02 00:00:00+00:00  Central Park North & Adam Clayton Powell Blvd      263.917567       45.284082               0.9 ...
# 1   2016-09-25 00:00:00+00:00                    Central Park West & W 85 St      189.574706       39.874856               0.9 ...
# 20  2016-10-02 00:00:00+00:00                    Central Park West & W 72 St      175.474862       40.940794               0.9 ...
# 12  2016-10-01 00:00:00+00:00                   W 106 St & Central Park West        63.88163       18.088868               0.9 ...

בעמודה הראשונה, start_station_name, מופיעה הערה לגבי סדרת הזמנים שלפיה מותאם כל מודל של סדרת זמנים. לכל start_station_name יש שלוש שורות של תוצאות צפויות, כפי שמצוין בערך horizon.

לכל start_station_name, שורות הפלט מסודרות לפי סדר כרונולוגי לפי הערך בעמודה forecast_timestamp. בתחזית של סדרת זמן, מרווח החיזוי, שמיוצג על ידי הערכים בעמודות prediction_interval_lower_bound ו-prediction_interval_upper_bound, חשוב לא פחות מהערך בעמודה forecast_value. הערך של forecast_value הוא נקודת האמצע של מרווח החיזוי. מרווח החיזוי תלוי בערכים של העמודות standard_error ו-confidence_level.

הסבר על תוצאות התחזית

SQL

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

הסעיף STRUCT(3 AS horizon, 0.9 AS confidence_level) שמשמש בפונקציה ML.EXPLAIN_FORECAST מציין שהשאילתה חוזה 3 נקודות זמן עתידיות ויוצרת רווח בר-סמך עם רמת סמך של 90%.

כדי להסביר את התוצאות של המודל:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):

    SELECT
    *
    FROM
    ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`,
     STRUCT(3 AS horizon, 0.9 AS confidence_level));

    השלמת השאילתה נמשכת פחות משנייה. התוצאות אמורות להיראות כך:

    תשע העמודות הראשונות של הפלט של נתוני התחזית וההסברים לתחזית. עמודות הפלט העשירית עד השבע-עשרה של נתוני התחזית וההסברים לתחזית. שש עמודות הפלט האחרונות של נתוני התחזית והסברים על התחזית.

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

    השורות בפלט מסודרות קודם לפי start_station_name, ואז לפי הערך בעמודה time_series_timestamp בסדר כרונולוגי. בתחזיות של סדרות זמן, מרווח החיזוי, שמיוצג על ידי הערכים בעמודות prediction_interval_lower_bound ו-prediction_interval_upper_bound, חשוב לא פחות מהערך בעמודה forecast_value. הערך של forecast_value הוא נקודת האמצע של מרווח החיזוי. מרווח החיזוי תלוי בערכים של העמודות standard_error ו-confidence_level.

    מידע נוסף על עמודות הפלט זמין במאמר ML.EXPLAIN_FORECAST.

BigQuery DataFrames

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

הסעיף horizon=3, confidence_level=0.9 שמשמש בפונקציה predict_explain מציין שהשאילתה חוזה 3 נקודות זמן עתידיות ויוצרת רווח בר-סמך עם רמת סמך של 90%.

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames. מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.

explain = model.predict_explain(horizon=3, confidence_level=0.9)

print(explain.peek(5))
# Expected output:
#   time_series_timestamp	        start_station_name	            time_series_type	    time_series_data	    time_series_adjusted_data	    standard_error	    confidence_level	    prediction_interval_lower_bound	    prediction_interval_upper_bound	    trend	    seasonal_period_yearly	    seasonal_period_quarterly	    seasonal_period_monthly	    seasonal_period_weekly	    seasonal_period_daily	    holiday_effect	    spikes_and_dips	    step_changes	    residual
# 0	2013-07-01 00:00:00+00:00	Central Park S & 6 Ave	                history	                  69.0	                   154.168527	              32.572948	             <NA>	                        <NA>	                            <NA>	                 0.0	          35.477484	                       <NA>	                        <NA>	                  -28.402102	                 <NA>	                <NA>	               0.0	         -85.168527	        147.093145
# 1	2013-07-01 00:00:00+00:00	Grand Army Plaza & Central Park S	    history	                  79.0	                      79.0	                  24.982769	             <NA>	                        <NA>	                            <NA>	                 0.0	          43.46428	                       <NA>	                        <NA>	                  -30.01599	                     <NA>	                <NA>	               0.0	            0.0	             65.55171
# 2	2013-07-02 00:00:00+00:00	Central Park S & 6 Ave	                history	                  180.0	                   204.045651	              32.572948	             <NA>	                        <NA>	                            <NA>	              147.093045	      72.498327	                       <NA>	                        <NA>	                  -15.545721	                 <NA>	                <NA>	               0.0	         -85.168527	         61.122876
# 3	2013-07-02 00:00:00+00:00	Grand Army Plaza & Central Park S	    history	                  129.0	                    99.556269	              24.982769	             <NA>	                        <NA>	                            <NA>	               65.551665	      45.836432	                       <NA>	                        <NA>	                  -11.831828	                 <NA>	                <NA>	               0.0	            0.0	             29.443731
# 4	2013-07-03 00:00:00+00:00	Central Park S & 6 Ave	                history	                  115.0	                   205.968236	              32.572948	             <NA>	                        <NA>	                            <NA>	               191.32754	      59.220766	                       <NA>	                        <NA>	                  -44.580071	                 <NA>	                <NA>	               0.0	         -85.168527	        -5.799709

השורות בפלט מסודרות קודם לפי time_series_timestamp, ואז לפי הערך בעמודה start_station_name בסדר כרונולוגי. בתחזיות של סדרות זמן, מרווח החיזוי, שמיוצג על ידי הערכים בעמודות prediction_interval_lower_bound ו-prediction_interval_upper_bound, חשוב לא פחות מהערך בעמודה forecast_value. הערך של forecast_value הוא נקודת האמצע של מרווח החיזוי. מרווח החיזוי תלוי בערכים של העמודות standard_error ו-confidence_level.

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

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

מחיקת מערך נתונים

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

  1. אם צריך, פותחים את הדף BigQuery במסוףGoogle Cloud .

    לדף BigQuery

  2. בחלונית הניווט, לוחצים על מערך הנתונים bqml_tutorial שיצרתם.

  3. לוחצים על מחיקת מערך הנתונים כדי למחוק את מערך הנתונים, את הטבלה ואת כל הנתונים.

  4. בתיבת הדו-שיח מחיקת מערך נתונים, מקלידים את שם מערך הנתונים (bqml_tutorial) כדי לאשר את פקודת המחיקה, ואז לוחצים על מחיקה.

מחיקת פרויקט

כדי למחוק את הפרויקט:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

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