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

במדריך הזה תלמדו איך לבצע חיזוי רב-משתני בסדרת זמן אחת באמצעות הפונקציה AI.FORECAST עם המודל TimesFM 3.0 שמוטמע ב-BigQuery ML. תחזיות מרובות משתנים עוזרות לשפר את דיוק התחזיות על ידי שילוב של משתנים אחרים שמשפיעים על היעד.

במדריך הזה מוסבר איך לחזות את מכירות הוודקה והוויסקי באמצעות שילוב של ערכי עסקאות היסטוריים (משתנה משותף מהעבר) ושל נתונים לגבי היום בשבוע (משתנה משותף מהעתיד).

מטרות

  • להכין קבוצת נתונים מאוחדת אחת לתחזית מרובת משתנים.
  • משתמשים בפונקציה AI.FORECAST עם המודל TimesFM 3.0 כדי ליצור תחזיות.

עלויות

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

  • BigQuery
  • BigQuery ML

מידע נוסף זמין במאמרים תמחור ב-BigQuery ותמחור ב-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 API לא מופעל, מפעילים אותו.

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

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

    להפעלת ה-API

    בפרויקטים חדשים, BigQuery API מופעל באופן אוטומטי.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות להשלמת המשימות במדריך הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

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

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

  • יוצרים את מערך הנתונים: bigquery.datasets.create
  • יוצרים את המודל:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
  • מריצים הסקה:
    • bigquery.models.getData
    • bigquery.jobs.create

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

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

הכנת נתוני הקלט

בניגוד למודלים אחרים של משתנים רבים שעשויים לדרוש טבלאות נפרדות עבור משתני עזר היסטוריים ועתידיים, הפונקציה AI.FORECAST עם TimesFM 3.0 מצפה לטבלת קלט או לשאילתה אחת.

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

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

טבלת הקלט צריכה לכלול עמודות עם הנתונים הבאים:

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

חיזוי של סדרת זמן רב-משתנית יחידה

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

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

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

    כניסה ל-BigQuery

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

    WITH historical_sales AS (
      SELECT
        date AS sales_date,
        store_number,
        SUM(CASE WHEN category_name LIKE '%VODKA%' THEN bottles_sold ELSE 0 END) AS vodka_bottles,
        SUM(CASE WHEN category_name LIKE '%WHISKEY%' THEN bottles_sold ELSE 0 END) AS whiskey_bottles,
        AVG(sale_dollars) AS avg_transaction_value,                          -- Past covariate
        IF(EXTRACT(DAYOFWEEK FROM date) IN (1, 7), 1.0, 0.0) AS is_weekend   -- Future covariate
      FROM `bigquery-public-data.iowa_liquor_sales.sales`
      WHERE date BETWEEN '2023-01-01' AND '2023-06-30'
        AND store_number = '2633'
      GROUP BY sales_date, store_number
    ),
    future_horizon AS (
      SELECT
        future_date AS sales_date,
        store_number,
        CAST(NULL AS INT64) AS vodka_bottles,
        CAST(NULL AS INT64) AS whiskey_bottles,
        CAST(NULL AS FLOAT64) AS avg_transaction_value,
        IF(EXTRACT(DAYOFWEEK FROM future_date) IN (1, 7), 1.0, 0.0) AS is_weekend
      FROM UNNEST(GENERATE_DATE_ARRAY('2023-07-01', '2023-07-14')) AS future_date
      CROSS JOIN (SELECT DISTINCT store_number FROM historical_sales)
    ),
    combined_sales AS (
      SELECT * FROM historical_sales
      UNION ALL
      SELECT * FROM future_horizon
    )
    SELECT
      FORMAT_DATE('%Y-%m-%d', sales_date) AS sales_date,
      vodka_bottles.value AS vodka_value,
      vodka_bottles.prediction_interval_lower_bound AS vodka_lower,
      vodka_bottles.prediction_interval_upper_bound AS vodka_upper,
      whiskey_bottles.value AS whiskey_value,
      whiskey_bottles.prediction_interval_lower_bound AS whiskey_lower,
      whiskey_bottles.prediction_interval_upper_bound AS whiskey_upper
    FROM AI.FORECAST(
      TABLE combined_sales,
      model => 'TimesFM 3.0',
      timestamp_col => 'sales_date',
      target_cols => ['vodka_bottles', 'whiskey_bottles'],
      past_covariate_cols => ['avg_transaction_value'],
      future_covariate_cols => ['is_weekend'],
      id_cols => ['store_number'],
      horizon => 14,
      confidence_level => 0.90
    );
    

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

+------------+-------------+-------------+-------------+---------------+---------------+---------------+
| sales_date | vodka_value | vodka_lower | vodka_upper | whiskey_value | whiskey_lower | whiskey_upper |
+------------+-------------+-------------+-------------+---------------+---------------+---------------+
| 2023-07-01 | 408         | -334        | 1977        | 21            | -34           | 113           |
| 2023-07-02 | 806         | -281        | 2992        | 29            | -23           | 149           |
| ...        | ...         | ...         | ...         | ...           | ...           | ...           |
+------------+-------------+-------------+-------------+---------------+---------------+---------------+

הסרת המשאבים

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

מחיקת פרויקט

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

    כניסה לדף Manage resources

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

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