במדריך הזה נסביר איך להשתמש בכוונון היפר-פרמטרים ב-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, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
ההרשאות הנדרשות
כדי ליצור את מערך הנתונים, צריך את הרשאת
bigquery.datasets.createב-IAM.כדי ליצור את המודל, צריך את ההרשאות הבאות:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
כדי להריץ הסקה, צריך את ההרשאות הבאות:
bigquery.models.getDatabigquery.jobs.create
במאמר מבוא ל-IAM יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery.
יצירת מערך נתונים
כדי ליצור מערך נתונים ב-BigQuery, בוחרים באחת מהאפשרויות הבאות:
המסוף
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בסייר, מרחיבים את הפרויקט ואז לוחצים על מערכי נתונים.
בדף Datasets (מערכי נתונים), לוחצים על Create dataset (יצירת מערך נתונים).
בחלונית Create dataset:
בשדה Dataset ID (מזהה קבוצת נתונים), מזינים
bqml_tutorial.בקטע Data location, בוחרים באפשרות US.
משאירים את שאר הגדרות ברירת המחדל כמו שהן.
לוחצים על יצירת מערך נתונים.
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 של מודל הבסיס הוא שלילי, מה שמצביע על התאמה גרועה לנתונים. ככל שציון R2 קרוב יותר ל-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 .