במדריך הזה נלמד איך להשתמש בסעיף TRANSFORM של הצהרת CREATE MODEL כדי לבצע הנדסת תכונות בו-זמנית עם יצירה ואימון של מודל. באמצעות פסוקית TRANSFORM, אפשר לציין פונקציית עיבוד מקדים אחת או יותר כדי לשנות את נתוני הקלט שמשמשים לאימון המודל. העיבוד המקדים שאתם מבצעים במודל מוחל אוטומטית כשמשתמשים במודל עם הפונקציות ML.EVALUATE ו-ML.PREDICT.
במדריך הזה נעשה שימוש במערך הנתונים bigquery-public-data.ml_datasets.penguin הציבורי.
מטרות
במדריך הזה מוסבר איך לבצע את הפעולות הבאות:
- יצירת מודל רגרסיה לינארית לחיזוי סוג השיחה לשירות באמצעות ההצהרה
CREATE MODEL. בתוך הצהרתCREATE MODEL, משתמשים בפונקציותML.QUANTILE_BUCKETIZEו-ML.FEATURE_CROSSכדי לעבד את הנתונים מראש. - הערכת המודל באמצעות הפונקציה
ML.EVALUATE. - קבלת תחזיות מהמודל באמצעות הפונקציה
ML.PREDICT.
עלויות
במדריך הזה נעשה שימוש ברכיבים של Google Cloud, והשימוש בהם כרוך בתשלום, כולל:
- BigQuery
- BigQuery ML
מידע נוסף על העלויות ב-BigQuery זמין בדף תמחור ב-BigQuery.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
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.
-
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, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
יצירת מערך נתונים
יוצרים מערך נתונים ב-BigQuery לאחסון מודל ה-ML.
המסוף
במסוף Google Cloud , עוברים לדף 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" } }
יצירת המודל
יוצרים מודל רגרסיה ליניארית כדי לחזות את משקל הפינגווין ומאמנים אותו על penguins טבלת הדוגמה.
הפסקה OPTIONS(model_type='linear_reg', input_label_cols=['body_mass_g'])
מציינת שאתם יוצרים מודל של רגרסיה לינארית. מודל רגרסיה לינארית יוצר ערך רציף משילוב לינארי של תכונות קלט. העמודה body_mass_g היא עמודת תוויות הקלט. במודלים של רגרסיה לינארית, עמודת התווית חייבת להכיל ערכים ממשיים (כלומר, ערכי העמודה חייבים להיות מספרים ממשיים).
הפסקה TRANSFORM בשאילתה הזו משתמשת בעמודות הבאות מההצהרה SELECT:
-
body_mass_g: משמש לאימון ללא שינוי. -
culmen_depth_mm: משמש לאימון ללא שינוי. -
flipper_length_mm: משמש לאימון ללא שינוי. -
bucketized_culmen_length: נוצר מ-culmen_length_mmעל ידי חלוקה לקבוצות (bucketizing) שלculmen_length_mmעל סמך חלוקה לעשירונים באמצעות פונקציית הניתוחML.QUANTILE_BUCKETIZE(). -
culmen_length_mm: הערך המקורי שלculmen_length_mm, שהומר לערךSTRINGושימש לאימון. -
species_sex: נוצר מהכפלה שלspeciesו-sexבאמצעות הפונקציהML.FEATURE_CROSS.
לא צריך להשתמש בכל העמודות מטבלת האימון בפסקה TRANSFORM.
הפסקה WHERE – WHERE body_mass_g IS NOT NULL AND RAND() < 0.2 –
מחריגה שורות שבהן המשקל של הפינגווינים הוא NULL, ומשתמשת בפונקציה RAND
כדי ליצור מדגם אקראי של הנתונים.
כדי ליצור את המודל:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
CREATE OR REPLACE MODEL `bqml_tutorial.penguin_transform` TRANSFORM( body_mass_g, culmen_depth_mm, flipper_length_mm, ML.QUANTILE_BUCKETIZE(culmen_length_mm, 10) OVER () AS bucketized_culmen_length, CAST(culmen_length_mm AS string) AS culmen_length_mm, ML.FEATURE_CROSS(STRUCT(species, sex)) AS species_sex) OPTIONS ( model_type = 'linear_reg', input_label_cols = ['body_mass_g']) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL AND RAND() < 0.2;
השאילתה תושלם תוך 15 דקות בערך, ואז מודל
penguin_transformיופיע בחלונית Explorer. השאילתה משתמשת בהצהרתCREATE MODELכדי ליצור מודל, ולכן לא מוצגות תוצאות של השאילתה.
הערכת המודל
מעריכים את הביצועים של המודל באמצעות הפונקציה ML.EVALUATE.
הפונקציה ML.EVALUATE מעריכה את המשקלים החזויים של הפינגווינים שהוחזרו על ידי המודל ביחס למשקלים בפועל של הפינגווינים מנתוני האימון.
ההצהרה SELECT והפסוקית FROM שמוטמעות בשאילתה הזו זהות לאלה שבשאילתה CREATE MODEL. השתמשתם בסעיף TRANSFORM כשיצרתם את המודל, ולכן לא צריך לציין שוב את העמודות והטרנספורמציות בפונקציה ML.EVALUATE. הפונקציה מאחזרת אותם באופן אוטומטי מהמודל.
כדי להעריך את המודל, פועלים לפי השלבים הבאים:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.penguin_transform`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL ));
התוצאות אמורות להיראות כך:
+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | 64.21134350607677 | 13016.433317859564 | 7.140935762696211E-4 | 15.31788461553515 | 0.9813042531507734 | 0.9813186268757634 | +---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+
מדד חשוב בתוצאות ההערכה הוא ציון R2. ציון ה-R2 הוא מדד סטטיסטי שקובע אם התחזיות של הרגרסיה הליניארית מתקרבות לנתונים בפועל. ערך של
0מציין שהמודל לא מסביר אף אחד מהשינויים בנתוני התגובה סביב הממוצע. הערך1מציין שהמודל מסביר את כל השונות של נתוני התגובה סביב הממוצע.מידע נוסף על הפלט של הפונקציה
ML.EVALUATEזמין במאמר בנושא פלט.אפשר גם להתקשר אל
ML.EVALUATEבלי לספק את נתוני הקלט. הוא ישתמש במדדי ההערכה שחושבו במהלך האימון.
שימוש במודל כדי לחזות את משקל הפינגווין
משתמשים במודל עם הפונקציה ML.PREDICT כדי לחזות את המשקל של פינגווינים זכרים.
הפונקציה ML.PREDICT מחזירה את הערך החזוי בעמודה predicted_label_column_name, ובמקרה הזה predicted_body_mass_g.
כשמשתמשים בפונקציה ML.PREDICT, לא צריך להעביר את כל העמודות שמשמשות לאימון המודל. נדרשות רק העמודות שבהן השתמשתם בסעיף TRANSFORM. בדומה ל-ML.EVALUATE, הפונקציה ML.PREDICT מאחזרת באופן אוטומטי את העמודות TRANSFORM והטרנספורמציות מהמודל.
כדי לקבל תחזיות מהמודל, צריך לבצע את השלבים הבאים:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT predicted_body_mass_g FROM ML.PREDICT( MODEL `bqml_tutorial.penguin_transform`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE sex = 'MALE' ));
התוצאות אמורות להיראות כך:
+-----------------------+ | predicted_body_mass_g | +-----------------------+ | 2810.2868541725757 | +-----------------------+ | 3813.6574220842676 | +-----------------------+ | 4098.844698262214 | +-----------------------+ | 4256.587135004173 | +-----------------------+ | 3008.393497302691 | +-----------------------+ | ... | +-----------------------+
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
- אתם יכולים למחוק את הפרויקט שיצרתם.
- אפשר גם להשאיר את הפרויקט ולמחוק את קבוצת הנתונים.
מחיקת מערך נתונים
אם מוחקים פרויקט, כל מערכי הנתונים וכל הטבלאות בפרויקט נמחקים. אם אתם מעדיפים להשתמש מחדש בפרויקט, אתם יכולים למחוק את מערך הנתונים שיצרתם במדריך הזה:
אם צריך, פותחים את הדף BigQuery במסוףGoogle Cloud .
בחלונית הניווט, לוחצים על מערך הנתונים bqml_tutorial שיצרתם.
בצד שמאל של החלון, לוחצים על מחיקת מערך נתונים. הפעולה הזו מוחקת את מערך הנתונים, את הטבלה ואת כל הנתונים.
בתיבת הדו-שיח מחיקת מערך נתונים, מקלידים את שם מערך הנתונים (
bqml_tutorial) כדי לאשר את פקודת המחיקה, ואז לוחצים על מחיקה.
מחיקת פרויקט
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- מידע נוסף על למידת מכונה זמין בקורס המקוצר על למידת מכונה.
- סקירה כללית של BigQuery ML זמינה במאמר מבוא ל-BigQuery ML.
- מידע נוסף על מסוף Google Cloud זמין במאמר בנושא שימוש במסוף Google Cloud .