במדריך הזה נסביר איך משתמשים בכוונון היפר-פרמטרים ב-BigQuery ML כדי לכוונן מודל למידת מכונה ולשפר את הביצועים שלו.
כדי לבצע כוונון של היפר-פרמטרים, מציינים את האפשרות NUM_TRIALS של ההצהרה CREATE MODEL, בשילוב עם אפשרויות אחרות שספציפיות למודל. כשמגדירים את האפשרויות האלה, BigQuery ML מאמן כמה גרסאות או ניסויים של המודל, כל אחד עם פרמטרים שונים במקצת, ומחזיר את הניסוי עם הביצועים הטובים ביותר.
במדריך הזה נשתמש בטבלה לדוגמה שזמינה לכולם ב-tlc_yellow_trips_2018, שמכילה מידע על נסיעות במוניות בניו יורק בשנת 2018.
מטרות
במדריך הזה מוסבר איך לבצע את הפעולות הבאות:
- שימוש בהצהרת
CREATE MODELכדי ליצור מודל בסיסי של רגרסיה ליניארית. - הערכת מודל הבסיס באמצעות הפונקציה
ML.EVALUATE. - שימוש בהצהרה
CREATE MODELעם אפשרויות כוונון של היפר-פרמטרים כדי לאמן עשרים ניסויים של מודל רגרסיה ליניארית. - בדיקת הניסויים באמצעות הפונקציה
ML.TRIAL_INFO. - הערכת הניסויים באמצעות הפונקציה
ML.EVALUATE. - כדי לקבל תחזיות לגבי נסיעות במונית מהמודל האופטימלי מבין הניסויים, משתמשים בפונקציה
ML.PREDICT.
עלויות
במדריך הזה משתמשים ברכיבים של Google Cloud, והשימוש בהם כרוך בתשלום, כולל:
- BigQuery
- BigQuery ML
למידע נוסף על העלויות של BigQuery, קראו את הדף תמחור ב-BigQuery.
לפני שמתחילים
-
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 מופעל באופן אוטומטי בפרויקטים חדשים.
כדי להפעיל את BigQuery בפרויקט קיים, עוברים אל
מפעילים את BigQuery API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (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, בוחרים אחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על Expand left pane כדי לפתוח אותה.
ב-Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
בדף Datasets, לוחצים על Create dataset.
בחלונית Create dataset:
בשדה Dataset ID, מזינים
bqml_tutorial.בקטע Data location (מיקום הנתונים), בוחרים באפשרות 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.
כדי ליצור את הטבלה:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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.
כדי ליצור את המודל:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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 מעריכה את סיווגי התוכן החזויים שהמודל מחזיר, בהשוואה למדדי ההערכה שחושבו במהלך אימון המודל.
כדי להעריך את המודל:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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כדי להריץ שני ניסויים בכל משימת אימון, כך שיהיו בסך הכול עשר משימות ו-20 ניסויים. כך אפשר לקצר את זמן האימון הנדרש. עם זאת, שני הניסויים שפועלים במקביל לא נהנים מתוצאות האימון אחד של השני. - האפשרות
L1_REGכדי לנסות ערכי רגולריזציה שונים של L1 בניסויים השונים. רגולריזציה מסוג L1 מסירה מהמודל תכונות לא רלוונטיות, וכך עוזרת למנוע התאמת יתר (overfitting).
האפשרויות האחרות לכוונון היפר-פרמטרים שנתמכות במודל משתמשות בערכי ברירת המחדל שלהן, באופן הבא:
L1_REG:0HPARAM_TUNING_ALGORITHM: 'VIZIER_DEFAULT'HPARAM_TUNING_OBJECTIVES:['R2_SCORE']
כדי ליצור את המודל:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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. הפונקציה הזו גם מחזירה מידע על הניסוי עם הביצועים הכי טובים, על סמך המידע הזה.
כדי לקבל מידע על תקופת הניסיון:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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 מעריכה את סיווגי התוכן החזויים שהמודל מחזיר, ביחס למדדי ההערכה שחושבו במהלך האימון בכל הניסויים.
כדי להעריך את ניסויי המודל, פועלים לפי השלבים הבאים:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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.
כדי לקבל תחזיות, פועלים לפי השלבים הבאים:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על 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 במסוףGoogle Cloud .
בחלונית הניווט, לוחצים על מערך הנתונים bqml_tutorial שיצרתם.
בצד שמאל של החלון, לוחצים על מחיקת מערך הנתונים. הפעולה הזו מוחקת את מערך הנתונים, את הטבלה ואת כל הנתונים.
בתיבת הדו-שיח Delete dataset, מאשרים את פקודת המחיקה על ידי הקלדת שם מערך הנתונים (
bqml_tutorial) ולוחצים על Delete.
מחיקת הפרויקט
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- מידע נוסף על למידת מכונה זמין בקורס המקוצר על למידת מכונה.
- לסקירה כללית על BigQuery ML, קראו את המאמר מבוא ל-BigQuery ML.
- מידע נוסף על מסוף Google Cloud זמין במאמר שימוש במסוף Google Cloud .