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

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

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

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

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

מטרות

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

עלויות

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

  • BigQuery
  • BigQuery ML

למידע נוסף על העלויות של BigQuery, קראו את הדף תמחור ב-BigQuery.

כאן תוכלו לקרוא מידע נוסף על העלויות של BigQuery ML.

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

  1. 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

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

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

    מפעילים את BigQuery API, אם הוא עדיין לא מופעל.

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

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

    להפעלת ה-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, בוחרים אחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

    אם החלונית הימנית לא מוצגת, לוחצים על Expand left pane כדי לפתוח אותה.

  3. ב-Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.

  4. בדף Datasets, לוחצים על Create dataset.

  5. בחלונית Create dataset:

    • בשדה Dataset ID, מזינים bqml_tutorial.

    • בקטע Data location (מיקום הנתונים), בוחרים באפשרות US (ארה"ב).

    משאירים את שאר הגדרות ברירת המחדל כמו שהן.

  6. לוחצים על 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. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-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. ב-Looker Studio, לוחצים על Insert > Time series chart.

  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. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-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 סדרות זמנים לחזות, והן לא ייחזו באופן מקביל לחלוטין בגלל מגבלות הקיבולת של יחידות הקיבולת (Slot). במקרה כזה, השאילתה תסתיים תוך כ-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. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-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. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-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. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-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. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-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. לוחצים על Delete dataset כדי למחוק את מערך הנתונים, הטבלה וכל הנתונים.

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

מחיקת הפרויקט

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

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

    כניסה לדף Manage resources

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

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