במדריך הזה נסביר איך לבצע חיזוי רב-משתני על פני כמה סדרות זמן באמצעות הפונקציה AI.FORECAST עם המודל TimesFM 3.0 שמוטמע ב-BigQuery ML. תחזיות מרובות משתנים עוזרות לשפר את דיוק התחזיות על ידי שילוב של משתנים אחרים (משתני משנה) שמשפיעים על היעד.
אם מציינים עמודות מזהה, אפשר ליצור תחזיות לכמה ישויות נפרדות בו-זמנית. במדריך הזה נסביר איך לחזות את הנסיעות במוניות בניו יורק ואת התעריפים שלהן באזורי איסוף שונים, על ידי שילוב של נתונים היסטוריים של מרחקי נסיעה, שהם משתני עזר מהעבר.
מטרות
- הכנת מערך נתונים מאוחד לכמה סדרות זמן.
- ליצור תחזיות לנתוני מוניות בניו יורק באמצעות הפונקציה
AI.FORECASTעם המודלTimesFM 3.0.
עלויות
במדריך הזה נעשה שימוש ברכיבים של Google Cloudשהשימוש בהם כרוך בתשלום, כולל הרכיבים הבאים:
- BigQuery
- BigQuery ML
מידע נוסף זמין במאמרים תמחור ב-BigQuery ותמחור ב-BigQuery ML.
לפני שמתחילים
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
אם BigQuery API לא מופעל, מפעילים אותו.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםבפרויקטים חדשים, BigQuery API מופעל באופן אוטומטי.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להשלמת המשימות במדריך הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
יוצרים את מערך הנתונים:
עריכה של נתוני BigQuery (
roles/bigquery.dataEditor) -
יוצרים את המודל:
- עריכה של נתוני BigQuery (
roles/bigquery.dataEditor) - BigQuery Job User (
roles/bigquery.jobUser)
- עריכה של נתוני BigQuery (
-
מריצים הסקה:
- עריכה של נתוני BigQuery (
roles/bigquery.dataEditor) - BigQuery Job User (
roles/bigquery.jobUser)
- עריכה של נתוני BigQuery (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לביצוע המשימות במדריך הזה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לבצע את המשימות במדריך הזה, צריך את ההרשאות הבאות:
-
יוצרים את מערך הנתונים:
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:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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 בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת פרויקט
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.