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

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

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

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

במדריך הזה נעשה שימוש בנתונים מהטבלה הציבורית bigquery-public-data.iowa_liquor.sales.sales. הטבלה הזו מכילה מידע על יותר ממיליון מוצרי אלכוהול בחנויות שונות, באמצעות נתוני מכירות אלכוהול ציבוריים באיווה.

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

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

  • כדי ליצור את מערך הנתונים, אתם צריכים את ההרשאה 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.

מטרות

במדריך הזה תשתמשו ב:

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

עלויות

במדריך הזה נעשה שימוש ברכיבים של 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, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

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

יוצרים מערך נתונים ב-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"
  }
}

יצירת מודל של סדרת זמן

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

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

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

הפסקה OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) מציינת שאתם יוצרים מודל של סדרת זמנים שמבוסס על ARIMA. כברירת מחדל, auto_arima=TRUE, כך שהאלגוריתם auto.ARIMA מכוונן אוטומטית את ההיפר-פרמטרים במודלים של ARIMA_PLUS. האלגוריתם מתאים עשרות מודלים פוטנציאליים ובוחר את המודל הטוב ביותר, שהוא המודל עם קריטריון המידע של אקייק (AIC) הנמוך ביותר. הגדרת האפשרות holiday_region לערך US מאפשרת בניית מודל מדויק יותר של נקודות הזמן של החגים בארצות הברית, אם יש דפוסי חגים בארצות הברית בסדרת הזמן.

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

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

    כניסה ל-BigQuery

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

    CREATE OR REPLACE MODEL `bqml_tutorial.liquor_forecast`
      OPTIONS (
        MODEL_TYPE = 'ARIMA_PLUS',
        TIME_SERIES_TIMESTAMP_COL = 'date',
        TIME_SERIES_DATA_COL = 'total_bottles_sold',
        TIME_SERIES_ID_COL = ['store_number', 'zip_code', 'city', 'county'],
        HOLIDAY_REGION = 'US')
    AS
    SELECT
      store_number,
      zip_code,
      city,
      county,
      date,
      SUM(bottles_sold) AS total_bottles_sold
    FROM
      `bigquery-public-data.iowa_liquor_sales.sales`
    WHERE
      date BETWEEN DATE('2015-01-01') AND DATE('2015-12-31')
      AND county IN ('POLK', 'LINN', 'SCOTT')
    GROUP BY store_number, date, city, zip_code, county;

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

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

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

בשאילתה הבאה, פסוקית STRUCT(20 AS horizon, 0.8 AS confidence_level) מציינת שהשאילתה חוזה 20 נקודות זמן עתידיות, ומפיקה מרווח חיזוי ברמת סמך של 80%.

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

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

    כניסה ל-BigQuery

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

    SELECT *
    FROM
      ML.FORECAST(
        MODEL `bqml_tutorial.liquor_forecast`,
        STRUCT(20 AS horizon, 0.8 AS confidence_level))
    ORDER BY store_number, county, city, zip_code, forecast_timestamp;

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

    כמה סדרות עיתיות עם מודל חד-משתני

    הפלט מתחיל עם הנתונים החזויים של סדרת הזמנים הראשונה: store_number=2190, zip_code=50314, city=DES MOINES, county=POLK. כשגוללים בין הנתונים, רואים את התחזיות לכל סדרת זמן ייחודית עוקבת. כדי ליצור תחזיות שמסכמות את הנתונים הכוללים של מימדים שונים, כמו תחזיות למחוז ספציפי, צריך ליצור תחזית היררכית.

יצירת מודל היררכי של נתוני סדרות עיתיות

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

השאילתה הבאה ב-GoogleSQL יוצרת מודל שמפיק תחזיות היררכיות לגבי המספר הכולל היומי של בקבוקים שנמכרו בשנת 2015 במחוזות פולק, לין וסקוט.

בשאילתה הבאה, האפשרות HIERARCHICAL_TIME_SERIES_COLS בהצהרה CREATE MODEL מציינת שאתם יוצרים תחזית היררכית על סמך קבוצה של עמודות שאתם מציינים. כל אחת מהעמודות האלה מסוכמת ומצטברת. לדוגמה, מהשאילתה הקודמת, המשמעות היא שערך העמודה store_number מסוכם כדי להציג תחזיות לכל ערך של county, city ו-zip_code. בנפרד, גם הערכים zip_code ו-store_number מסוכמים כדי להציג תחזיות לכל ערך של county ו-city. סדר העמודות חשוב כי הוא מגדיר את מבנה ההיררכיה.

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

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

    כניסה ל-BigQuery

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

    CREATE OR REPLACE MODEL `bqml_tutorial.liquor_forecast_hierarchical`
      OPTIONS (
        MODEL_TYPE = 'ARIMA_PLUS',
        TIME_SERIES_TIMESTAMP_COL = 'date',
        TIME_SERIES_DATA_COL = 'total_bottles_sold',
        TIME_SERIES_ID_COL = ['store_number', 'zip_code', 'city', 'county'],
        HIERARCHICAL_TIME_SERIES_COLS = ['zip_code', 'store_number'],
        HOLIDAY_REGION = 'US')
    AS
    SELECT
      store_number,
      zip_code,
      city,
      county,
      date,
      SUM(bottles_sold) AS total_bottles_sold
    FROM
      `bigquery-public-data.iowa_liquor_sales.sales`
    WHERE
      date BETWEEN DATE('2015-01-01') AND DATE('2015-12-31')
      AND county IN ('POLK', 'LINN', 'SCOTT')
    GROUP BY store_number, date, city, zip_code, county;

    השאילתה נמשכת כ-45 שניות, ולאחר מכן אפשר לגשת למודל בחלונית Explorer.bqml_tutorial.liquor_forecast_hierarchical השאילתה משתמשת בהצהרה CREATE MODEL כדי ליצור מודל, ולכן אין תוצאות לשאילתה.

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

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

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

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

    כניסה ל-BigQuery

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

    SELECT
      *
    FROM
      ML.FORECAST(
        MODEL `bqml_tutorial.liquor_forecast_hierarchical`,
        STRUCT(30 AS horizon, 0.8 AS confidence_level))
    WHERE city = 'LECLAIRE'
    ORDER BY county, city, zip_code, store_number, forecast_timestamp;

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

    דוגמה לסדרת זמן היררכית.

    שימו לב איך התחזית המצטברת מוצגת עבור העיר לה קלייר, store_number=NULL, zip_code=NULL, city=LECLAIRE, county=SCOTT. כשבודקים את שאר השורות, אפשר לראות את התחזיות לגבי קבוצות המשנה האחרות. לדוגמה, בתמונה הבאה מוצגים נתוני התחזית המצטברים עבור המיקוד 52753, store_number=NULL, zip_code=52753, city=LECLAIRE, county=SCOTT:

    דוגמה לסדרת זמן היררכית.

הסרת המשאבים

כדי להימנע מחיובים בחשבון 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.

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