במדריך הזה נסביר איך להשתמש בפונקציה AI.DETECT_ANOMALIES עם מודל TimesFM המובנה של BigQuery ML כדי לזהות חריגות בנתונים של סדרות זמן.
במדריך הזה נעשה שימוש בנתונים מהטבלה הציבורית bigquery-public-data.san_francisco_bikeshare.bikeshare_trips.
מטרות
במדריך הזה מוסבר איך להשתמש בפונקציה AI.DETECT_ANOMALIES עם מודל TimesFM המובנה כדי לזהות חריגות בנסיעות באופניים שיתופיים. בחלק הראשון מוסבר איך לזהות אנומליות ולהציג את התוצאות בסדרת זמן אחת. בקטע השני מוסבר איך לזהות חריגות בכמה סדרות זמן.
עלויות
במדריך הזה נעשה שימוש ברכיבים של Cloud de Confiance by S3NSשחלים עליהם חיובים, כולל הרכיבים הבאים:
- BigQuery
- BigQuery ML
מידע נוסף על העלויות ב-BigQuery זמין בדף תמחור ב-BigQuery.
מידע נוסף על העלויות של BigQuery ML זמין במאמר תמחור ב-BigQuery ML.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance project.
- BigQuery מופעל באופן אוטומטי בפרויקטים חדשים.
כדי להפעיל את BigQuery בפרויקט קיים,
מפעילים את BigQuery API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
זיהוי חריגות בסדרת נתונים מבוססת זמן של נסיעות בודדות בשירות שיתוף אופניים
כדי לזהות חריגות בנתונים של סדרות זמנים, משתמשים בפונקציה AI.DETECT_ANOMALIES.
השאילתה הבאה מזהה אנומליות במספר הנסיעות בשירות השכרת אופניים בכל שעה בחודש אוגוסט 2017, על סמך הנתונים ההיסטוריים מהחודש הקודם. הארגומנט anomaly_prob_threshold מציין את הסף לזיהוי אנומליה.
כדי לזהות חריגות באמצעות מודל TimesFM:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run. השאילתה תימשך דקה או שתיים:
WITH bike_share_trips AS ( SELECT TIMESTAMP_TRUNC(start_date, HOUR) AS trip_hour, COUNT(*) AS num_trips FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips` GROUP BY TIMESTAMP_TRUNC(start_date, HOUR) ) SELECT * FROM AI.DETECT_ANOMALIES( ( SELECT * FROM bike_share_trips WHERE trip_hour >= TIMESTAMP('2017-07-01') AND trip_hour < TIMESTAMP('2017-08-01') ), ( SELECT * FROM bike_share_trips WHERE trip_hour >= TIMESTAMP('2017-08-01') AND trip_hour < TIMESTAMP('2017-09-01') ), anomaly_prob_threshold => 0.95, timestamp_col => 'trip_hour', data_col => 'num_trips');
התוצאות אמורות להיראות כך:
+-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | time_series_timestamp | time_series_data | is_anomaly | lower_bound | upper_bound | anomaly_probability | ai_detect_anomalies_status| +-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | 2017-08-01 00:00:00 UTC | 13.0 | false | -1.97939332204... | 27.604928623830... | 0.38048622012138... | | +-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | 2017-08-01 01:00:00 UTC | 6.0 | false | -9.42939322810... | 20.154928628380... | 0.38048622012138... | | +-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | ... | ... | ... | ... | ... | ... | ... | +-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+
כשהשאילתה מסיימת לפעול, לוחצים על הכרטיסייה Visualization (הדמיה). התרשים שיתקבל ייראה כך:
אפשר לזהות את האנומליות שבהן הערך של
time_series_dataחורג מהטווח שלlower_boundו-upper_bound.
זיהוי חריגות בסדרות זמן של נסיעות רבות באופניים שיתופיים
השאילתה הבאה מזהה אנומליות במספר הנסיעות באופניים להשכרה לפי סוג מנוי ולפי שעה בחודש אוגוסט 2017, על סמך הנתונים ההיסטוריים מהחודש הקודם.
כדי לזהות חריגות באמצעות מודל TimesFM:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
WITH bike_share_trips AS ( SELECT TIMESTAMP_TRUNC(start_date, HOUR) AS trip_hour, COUNT(*) AS num_trips, subscriber_type FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips` GROUP BY TIMESTAMP_TRUNC(start_date, HOUR), subscriber_type ) SELECT * FROM AI.DETECT_ANOMALIES( ( SELECT * FROM bike_share_trips WHERE trip_hour >= TIMESTAMP('2017-07-01') AND trip_hour < TIMESTAMP('2017-08-01') ), ( SELECT * FROM bike_share_trips WHERE trip_hour >= TIMESTAMP('2017-08-01') AND trip_hour < TIMESTAMP('2017-09-01') ), anomaly_prob_threshold => 0.95, timestamp_col => 'trip_hour', data_col => 'num_trips', id_cols => ['subscriber_type']);
התוצאות אמורות להיראות כך:
+-----------------+-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | subscriber_type | time_series_timestamp | time_series_data | is_anomaly | lower_bound | upper_bound | anomaly_probability | ai_detect_anomalies_status| +-----------------+-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | Customer | 2017-08-01 00:00:00 UTC | 13.0 | false | -1.97939332204... | 27.604928623830... | 0.38048622012138... | | +-----------------+-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | Customer | 2017-08-01 01:00:00 UTC | 3.0 | false | -5.12345678901... | 10.123456789012... | 0.12345678901234... | | +-----------------+-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | ... | ... | ... | ... | ... | ... | ... | ... | +-----------------+-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | Subscriber | 2017-08-01 00:00:00 UTC | 13.0 | false | -1.97939332204... | 27.604928623830... | 0.38048622012138... | | +-----------------+-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | Subscriber | 2017-08-01 01:00:00 UTC | 3.0 | false | -5.12345678901... | 10.123456789012... | 0.12345678901234... | | +-----------------+-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+ | ... | ... | ... | ... | ... | ... | ... | ... | +-----------------+-------------------------+------------------+------------+--------------------+---------------------+---------------------+---------------------------+
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת פרויקט
כדי למחוק את הפרויקט:
- במסוף Cloud de Confiance , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- סקירה כללית על BigQuery ML זמינה במאמר מבוא ל-AI ול-ML ב-BigQuery.