במדריך הזה תלמדו איך להשתמש בכוונון היפר-פרמטרים ב-BigQuery ML כדי לכוונן מודל של למידת מכונה ולשפר את הביצועים שלו.
כדי לבצע כוונון היפר-פרמטרים, מציינים את האפשרות NUM_TRIALS של הצהרת CREATE MODEL, בשילוב עם אפשרויות אחרות שספציפיות למודל. כשמגדירים את האפשרויות האלה, מערכת BigQuery ML מאמנת כמה גרסאות, או ניסיונות של המודל, כל אחת עם פרמטרים שונים במקצת, ומחזירה את הניסיון עם הביצועים הכי טובים.
במדריך הזה נעשה שימוש בטבלת הדוגמה הציבורית tlc_yellow_trips_2018, שמכילה מידע על נסיעות במוניות בניו יורק בשנת 2018.
מטרות
במדריך הזה מוסבר איך לבצע את הפעולות הבאות:
- שימוש במשפט
CREATE MODELכדי ליצור מודל בסיסי של רגרסיה ליניארית. - הערכת מודל הבסיס באמצעות הפונקציה
ML.EVALUATE. - שימוש בהצהרה
CREATE MODELעם אפשרויות כוונון היפר-פרמטרים כדי לאמן 20 ניסויים של מודל רגרסיה ליניארית. - סקירת תקופות הניסיון באמצעות הפונקציה
ML.TRIAL_INFO. - הערכת תקופות הניסיון באמצעות הפונקציה
ML.EVALUATE. - כדי לקבל תחזיות לגבי נסיעות במוניות מהמודל האופטימלי מבין הניסויים, משתמשים בפונקציה
ML.PREDICT.
עלויות
במדריך הזה נעשה שימוש ברכיבים של Cloud de Confiance by S3NS, והשימוש בהם כרוך בתשלום, כולל:
- BigQuery
- BigQuery ML
מידע נוסף על העלויות ב-BigQuery זמין בדף תמחור ב-BigQuery.
לפני שמתחילים
-
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. איך מקצים תפקידים
ההרשאות הנדרשות
כדי ליצור את מערך הנתונים, אתם צריכים את ההרשאה
bigquery.datasets.createב-IAM.כדי ליצור את המודל, צריך את ההרשאות הבאות:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
כדי להריץ הסקה, אתם צריכים את ההרשאות הבאות:
bigquery.models.getDatabigquery.jobs.create
במאמר מבוא ל-IAM יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery.
יצירת מערך נתונים
יוצרים מערך נתונים ב-BigQuery לאחסון מודל ה-ML.
המסוף
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בחלונית Explorer, לוחצים על שם הפרויקט.
לוחצים על הצגת פעולות > יצירת מערך נתונים.
בדף Create dataset, מבצעים את הפעולות הבאות:
בשדה Dataset ID (מזהה מערך הנתונים), מזינים
bqml_tutorial.בקטע Location type, בוחרים באפשרות Multi-region ואז בוחרים באפשרות US.
משאירים את הגדרות ברירת המחדל שנותרו כמו שהן ולוחצים על Create dataset (יצירת מערך נתונים).
BQ
כדי ליצור מערך נתונים חדש, משתמשים בפקודה bq mk --dataset.
יוצרים מערך נתונים בשם
bqml_tutorialעם מיקום הנתונים שמוגדר ל-US.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
בודקים שמערך הנתונים נוצר:
bq ls
API
מבצעים קריאה לשיטה datasets.insert
עם משאב מוגדר של מערך נתונים.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
יצירת טבלה של נתוני אימון
יצירת טבלה של נתוני אימון על סמך קבוצת משנה של נתוני הטבלה tlc_yellow_trips_2018.
כדי ליצור את הטבלה:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
CREATE OR REPLACE TABLE `bqml_tutorial.taxi_tip_input` AS SELECT * EXCEPT (tip_amount), tip_amount AS label FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018` WHERE tip_amount IS NOT NULL LIMIT 100000;
יצירת מודל בסיסי של רגרסיה ליניארית
תצרו מודל רגרסיה לינארית בלי כוונון של היפרפרמטרים ותאמנו אותו על נתוני הטבלה taxi_tip_input.
כדי ליצור את המודל:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
CREATE OR REPLACE MODEL `bqml_tutorial.baseline_taxi_tip_model` OPTIONS ( MODEL_TYPE = 'LINEAR_REG' ) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`;
השלמת השאילתה נמשכת כ-2 דקות.
הערכת מודל הבסיס
מעריכים את הביצועים של המודל באמצעות הפונקציה ML.EVALUATE.
הפונקציה ML.EVALUATE מעריכה את סיווגי התוכן החזויים שמוחזרים על ידי המודל ביחס למדדי ההערכה שמחושבים במהלך אימון המודל.
כדי להעריך את המודל, פועלים לפי השלבים הבאים:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.baseline_taxi_tip_model`);
התוצאות אמורות להיראות כך:
+---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+ | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+ | 2.5853895559690323 | 23760.416358496139 | 0.017392406523370374 | 0.0044248227819481123 | -1934.5450533482465 | -1934.3513857946277 | +---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+
הערך r2_score של מודל הבסיס הוא שלילי, מה שמצביע על התאמה לא טובה לנתונים. ככל שציון R קרוב יותר ל-1, כך ההתאמה של המודל טובה יותר.
יצירת מודל רגרסיה ליניארית עם כוונון של היפרפרמטרים
צור מודל רגרסיה לינארית עם כוונון של היפרפרמטרים, ואמן אותו על נתוני הטבלה taxi_tip_input.
משתמשים באפשרויות הבאות של כוונון היפרפרמטרים בהצהרת CREATE MODEL:
- האפשרות
NUM_TRIALSלהגדרת מספר הניסיונות ל-20. - האפשרות
MAX_PARALLEL_TRIALSלהריץ שני ניסויים בכל משימת אימון, כך שיהיו בסך הכול עשר משימות ועשרים ניסויים. כך מקצרים את זמן האימון הנדרש. עם זאת, שתי תקופות הניסיון שמתנהלות במקביל לא נהנות מתוצאות האימון של כל אחת מהן. - האפשרות
L1_REGלנסות ערכים שונים של רגולריזציה L1 בניסויים השונים. רגולריזציה מסוג L1 מסירה מהמודל תכונות לא רלוונטיות, וכך עוזרת למנוע התאמת יתר.
אפשרויות אחרות לשינוי היפר-פרמטרים שנתמכות על ידי המודל משתמשות בערכי ברירת המחדל שלהן, באופן הבא:
L1_REG:0HPARAM_TUNING_ALGORITHM: 'VIZIER_DEFAULT'HPARAM_TUNING_OBJECTIVES:['R2_SCORE']
כדי ליצור את המודל:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
CREATE OR REPLACE MODEL `bqml_tutorial.hp_taxi_tip_model` OPTIONS ( MODEL_TYPE = 'LINEAR_REG', NUM_TRIALS = 20, MAX_PARALLEL_TRIALS = 2, L1_REG = HPARAM_RANGE(0, 5)) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`;
השלמת השאילתה נמשכת כ-20 דקות.
מידע על תקופות הניסיון של ההדרכות
כדי לקבל מידע על כל הניסויים, כולל ערכי ההיפרפרמטרים, היעדים והסטטוס שלהם, משתמשים בפונקציה ML.TRIAL_INFO. הפונקציה הזו מחזירה גם מידע על תקופת הניסיון שהניבה את הביצועים הכי טובים, על סמך המידע הזה.
כדי לקבל מידע על תקופת הניסיון, פועלים לפי השלבים הבאים:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT * FROM ML.TRIAL_INFO(MODEL `bqml_tutorial.hp_taxi_tip_model`) ORDER BY is_optimal DESC;
התוצאות אמורות להיראות כך:
+----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+ | trial_id | hyperparameters | hparam_tuning_evaluation_metrics | training_loss | eval_loss | status | error_message | is_optimal | +----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+ | 7 | {"l1_reg":"4.999999999999985"} | {"r2_score":"0.653653627638174"} | 4.4677841296238165 | 4.478469742512195 | SUCCEEDED | NULL | true | | 2 | {"l1_reg":"2.402163664510254E-11"} | {"r2_score":"0.6532493667964732"} | 4.457692508421795 | 4.483697081650438 | SUCCEEDED | NULL | false | | 3 | {"l1_reg":"1.2929452948742316E-7"} | {"r2_score":"0.653249366811995"} | 4.45769250849513 | 4.483697081449748 | SUCCEEDED | NULL | false | | 4 | {"l1_reg":"2.5787102060628228E-5"} | {"r2_score":"0.6532493698925899"} | 4.457692523040582 | 4.483697041615808 | SUCCEEDED | NULL | false | | ... | ... | ... | ... | ... | ... | ... | ... | +----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+הערך בעמודה
is_optimalמציין שהמודל האופטימלי שהוחזר על ידי ההתאמה הוא ניסיון 7.
הערכת הניסויים של המודל שעבר התאמה
כדי להעריך את הביצועים של תקופות הניסיון, משתמשים בפונקציה ML.EVALUATE.
הפונקציה ML.EVALUATE מעריכה את סיווגי התוכן החזויים שהוחזרו על ידי המודל ביחס למדדי ההערכה שחושבו במהלך האימון לכל הניסויים.
כדי להעריך את הניסויים של המודל, פועלים לפי השלבים הבאים:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.hp_taxi_tip_model`) ORDER BY r2_score DESC;
התוצאות אמורות להיראות כך:
+----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | trial_id | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | 7 | 1.151814398002232 | 4.109811493266523 | 0.4918733252641176 | 0.5736103414025084 | 0.6652110305659145 | 0.6652144696114834 | | 19 | 1.1518143358927102 | 4.109811921460791 | 0.4918672150119582 | 0.5736106106914161 | 0.6652109956848206 | 0.6652144346901685 | | 8 | 1.152747850702547 | 4.123625876152422 | 0.4897808307399327 | 0.5731702310239184 | 0.6640856984144734 | 0.664088410199906 | | 5 | 1.152895108945439 | 4.125775524878872 | 0.48939088205957937 | 0.5723300569616766 | 0.6639105860807425 | 0.6639132416838652 | | ... | ... | ... | ... | ... | ... | ... | +----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+
הערך
r2_scoreשל המודל האופטימלי, שהוא ניסיון 7, הוא0.66521103056591446, שמשקף שיפור משמעותי לעומת מודל הבסיס.
אפשר להעריך תקופת ניסיון ספציפית על ידי ציון הארגומנט TRIAL_ID בפונקציה ML.EVALUATE.
מידע נוסף על ההבדל בין ML.TRIAL_INFOיעדים לבין ML.EVALUATEמדדי הערכה זמין במאמר פונקציות לפרסום המודל.
שימוש במודל שעבר כוונון כדי לחזות טיפים לנהגי מוניות
משתמשים במודל האופטימלי שמוחזר על ידי ההתאמה כדי לחזות טיפים לנסיעות שונות במונית. המודל האופטימלי נמצא בשימוש אוטומטי על ידי הפונקציה ML.PREDICT, אלא אם בוחרים ניסוי אחר על ידי ציון הארגומנט TRIAL_ID. התחזיות מוחזרות בעמודה predicted_label.
כדי לקבל תחזיות, צריך לפעול לפי השלבים הבאים:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT * FROM ML.PREDICT( MODEL `bqml_tutorial.hp_taxi_tip_model`, ( SELECT * FROM `bqml_tutorial.taxi_tip_input` LIMIT 5 ));
התוצאות אמורות להיראות כך:
+----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+ | trial_id | predicted_label | vendor_id | pickup_datetime | dropoff_datetime | passenger_count | trip_distance | rate_code | store_and_fwd_flag | payment_type | fare_amount | extra | mta_tax | tolls_amount | imp_surcharge | total_amount | pickup_location_id | dropoff_location_id | data_file_year | data_file_month | label | +----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+ | 7 | 1.343367839584448 | 2 | 2018-01-15 18:55:15 | 2018-01-15 18:56:18 | 1 | 0 | 1 | N | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 193 | 193 | 2018 | 1 | 0 | | 7 | -1.176072791783461 | 1 | 2018-01-08 10:26:24 | 2018-01-08 10:26:37 | 1 | 0 | 5 | N | 3 | 0.01 | 0 | 0 | 0 | 0.3 | 0.31 | 158 | 158 | 2018 | 1 | 0 | | 7 | 3.839580104168765 | 1 | 2018-01-22 10:58:02 | 2018-01-22 12:01:11 | 1 | 16.1 | 1 | N | 1 | 54.5 | 0 | 0.5 | 0 | 0.3 | 55.3 | 140 | 91 | 2018 | 1 | 0 | | 7 | 4.677393985230036 | 1 | 2018-01-16 10:14:35 | 2018-01-16 11:07:28 | 1 | 18 | 1 | N | 2 | 54.5 | 0 | 0.5 | 0 | 0.3 | 55.3 | 138 | 67 | 2018 | 1 | 0 | | 7 | 7.938988937253062 | 2 | 2018-01-16 07:05:15 | 2018-01-16 08:06:31 | 1 | 17.8 | 1 | N | 1 | 54.5 | 0 | 0.5 | 0 | 0.3 | 66.36 | 132 | 255 | 2018 | 1 | 11.06 | +----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
- אתם יכולים למחוק את הפרויקט שיצרתם.
- אפשר גם להשאיר את הפרויקט ולמחוק את קבוצת הנתונים.
מחיקת מערך נתונים
אם מוחקים פרויקט, כל מערכי הנתונים וכל הטבלאות בפרויקט נמחקים. אם אתם מעדיפים להשתמש מחדש בפרויקט, אתם יכולים למחוק את מערך הנתונים שיצרתם במדריך הזה:
אם צריך, פותחים את הדף BigQuery במסוףCloud de Confiance .
בחלונית הניווט, לוחצים על מערך הנתונים bqml_tutorial שיצרתם.
בצד שמאל של החלון, לוחצים על מחיקת מערך נתונים. הפעולה הזו מוחקת את מערך הנתונים, את הטבלה ואת כל הנתונים.
בתיבת הדו-שיח מחיקת מערך נתונים, מקלידים את שם מערך הנתונים (
bqml_tutorial) כדי לאשר את פקודת המחיקה, ואז לוחצים על מחיקה.
מחיקת פרויקט
כדי למחוק את הפרויקט:
- במסוף Cloud de Confiance , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- מידע נוסף על למידת מכונה זמין בקורס המקוצר על למידת מכונה.
- סקירה כללית של BigQuery ML זמינה במאמר מבוא ל-BigQuery ML.
- מידע נוסף על מסוף Cloud de Confiance זמין במאמר בנושא שימוש במסוף Cloud de Confiance .