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

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

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

מטרות

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

עלויות

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

  • BigQuery
  • BigQuery ML

מידע נוסף זמין במאמרים תמחור ב-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 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 מצפה לטבלת קלט או לשאילתה אחת.

כדי ליצור תחזית של כמה סדרות זמן, הנתונים צריכים לכלול עמודה אחת או יותר של מזהים כדי להפריד את הנתונים לסדרות זמן נפרדות. בדוגמה הזו, אחת מסדרות הזמן מכילה נתונים של מיקום האיסוף 132 (נמל התעופה JFK), וסדרת הזמן השנייה מכילה נתונים של מיקום האיסוף 138 (נמל התעופה לה-גוארדיה). צריך לוודא שהנתונים עומדים בדרישות הבאות לכל סדרת זמן בנפרד:

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

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

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

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

השאילתה הבאה חוזה את מספר הנסיעות ואת המחיר הממוצע ליום ב-14 הימים הבאים באזורי האיסוף JFK ו-LaGuardia. היא מגדירה את past_cov_avg_distance כתכונה שמוכרת רק מבחינה היסטורית. צריך לספק את הארגומנט id_cols כדי שהמודל יידע איך להפריד בין סדרות הזמנים השונות.

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

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

    כניסה ל-BigQuery

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

    SELECT
      pickup_location_id,
      FORMAT_DATE("%Y-%m-%d", pickup_date) AS pickup_date,
      # Extract the forecast value and prediction intervals for the number of trips target
      target_num_trips.value AS forecasted_num_trips,
      target_num_trips.prediction_interval_lower_bound AS num_trips_lower,
      target_num_trips.prediction_interval_upper_bound AS num_trips_upper,
      # Extract the forecast value and prediction intervals for the average fare target
      target_avg_fare.value AS forecasted_avg_fare,
      target_avg_fare.prediction_interval_lower_bound AS avg_fare_lower,
      target_avg_fare.prediction_interval_upper_bound AS avg_fare_upper
    FROM AI.FORECAST(
      (
        SELECT
          DATE(pickup_datetime) AS pickup_date,
          pickup_location_id,
          COUNT(*) AS target_num_trips,
          AVG(fare_amount) AS target_avg_fare,
          AVG(trip_distance) AS past_cov_avg_distance
        FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2022`
        WHERE pickup_datetime >= "2022-01-01" AND pickup_datetime < "2022-04-01"
          AND pickup_location_id IN ("132", "138") -- JFK and LaGuardia Airports
        GROUP BY 1, 2
      ),
      model => "TimesFM 3.0",
      target_cols => ["target_num_trips", "target_avg_fare"],
      past_covariate_cols => ["past_cov_avg_distance"],
      timestamp_col => "pickup_date",
      id_cols => ["pickup_location_id"],
      horizon => 14
    )
    ORDER BY pickup_date;
    

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

+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| pickup_location_id | pickup_date | forecasted_num_trips | num_trips_lower | num_trips_upper | forecasted_avg_fare | avg_fare_lower | avg_fare_upper |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| 132                | 2022-04-01  | 5240                 | 4633            | 5842            | 47                  | 46             | 48             |
| 138                | 2022-04-01  | 3451                 | 2848            | 4008            | 32                  | 31             | 34             |
| ...                | ...         | ...                  | ...             | ...             | ...                 | ...            | ...            |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+

בתוצאות מוצג מספר הנסיעות הצפוי וסכום התעריף הממוצע ל-14 הימים הבאים באזורי האיסוף בנמל התעופה JFK ובנמל התעופה לה גוארדיה. התוצאות כוללות גם את הגבול התחתון והגבול העליון של מרווח החיזוי של 95% לכל ערך שחזיתם.

הסרת המשאבים

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

מחיקת פרויקט

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

    כניסה לדף Manage resources

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

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