במדריך הזה תשתמשו במודל רגרסיה לינארית ב-BigQuery ML כדי לחזות את המשקל של פינגווין על סמך המידע הדמוגרפי שלו. רגרסיה ליניארית היא סוג של מודל רגרסיה שיוצר ערך רציף משילוב ליניארי של מאפייני קלט.
במדריך הזה משתמשים במערך הנתונים bigquery-public-data.ml_datasets.penguins.
מטרות
במדריך הזה תבצעו את המשימות הבאות:
- יוצרים מודל רגרסיה ליניארית.
- מעריכים את המודל.
- ליצור תחזיות באמצעות המודל.
עלויות
במדריך הזה משתמשים ברכיבים של Google Cloud, והשימוש בהם כרוך בתשלום, כולל:
- BigQuery
- BigQuery ML
למידע נוסף על העלויות של BigQuery, קראו את הדף תמחור ב-BigQuery.
למידע נוסף על העלויות של BigQuery ML, קראו את המאמר תמחור ב-BigQuery ML.
לפני שמתחילים
-
בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים?
-
מפעילים את BigQuery API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?
ההרשאות הנדרשות
כדי ליצור את המודל באמצעות BigQuery ML, אתם צריכים את הרשאות ה-IAM הבאות:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
כדי להריץ הסקה, צריך את ההרשאות הבאות:
-
bigquery.models.getDataבמודל bigquery.jobs.create
יצירת קבוצת נתונים
כדי ליצור מערך נתונים ב-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" } }
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
יצירת המודל
יצירת מודל רגרסיה לינארית באמצעות מערך הנתונים לדוגמה של Analytics ל-BigQuery.
SQL
כדי ליצור מודל רגרסיה לינארית, משתמשים בהצהרה CREATE MODEL ומציינים את סוג המודל LINEAR_REG. יצירת המודל כוללת את אימון המודל.
הנה כמה דברים שכדאי לדעת על ההצהרה CREATE MODEL:
- האפשרות
input_label_colsמציינת באיזו עמודה בהצהרהSELECTלהשתמש כעמודת התווית. כאן, עמודת התווית היאbody_mass_g. במודלים של רגרסיה לינארית, עמודת התווית חייבת להיות בעלת ערך ממשי, כלומר ערכי העמודה חייבים להיות מספרים ממשיים. ההצהרה
SELECTשל השאילתה הזו משתמשת בעמודות הבאות בטבלהbigquery-public-data.ml_datasets.penguinsכדי לחזות את משקל הפינגווין:-
species: זן הפינגווין. -
island: האי שבו הפינגווין נמצא. -
culmen_length_mm: אורך רכס המקור של הפינגווין במילימטרים. -
culmen_depth_mm: עומק רכס המקור של הפינגווין במילימטרים. flipper_length_mm: אורך הסנפירים של הפינגווין במילימטרים.-
sex: המין של הפינגווין.
-
הסעיף
WHEREבהצהרהSELECTשל השאילתה הזו,WHERE body_mass_g IS NOT NULL, מחריג שורות שבהן העמודהbody_mass_gהיאNULL.
מריצים את השאילתה שיוצרת את מודל הרגרסיה הליניארית:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את השאילתה הבאה:
CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` 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;
יצירת המודל של
penguins_modelנמשכת כ-30 שניות.כדי לראות את המודל:
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
לוחצים על מערך הנתונים
bqml_tutorial.לוחצים על הכרטיסייה Models.
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
יצירת המודל נמשכת כ-30 שניות. כדי לראות את המודל:
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
לוחצים על מערך הנתונים
bqml_tutorial.לוחצים על הכרטיסייה Models.
קבלת נתונים סטטיסטיים על האימונים
כדי לראות את תוצאות אימון המודל, אפשר להשתמש בפונקציה ML.TRAINING_INFO או לצפות בנתונים הסטטיסטיים במסוף Google Cloud . במדריך הזה נשתמש במסוף Google Cloud .
אלגוריתם של למידת מכונה בונה מודל על ידי בחינה של דוגמאות רבות וניסיון למצוא מודל שממזער את ההפסד. התהליך הזה נקרא "מזעור סיכונים אמפירי".
הפסד הוא העונש על חיזוי שגוי. זהו מספר שמציין עד כמה החיזוי של המודל היה גרוע בדוגמה אחת. אם החיזוי של המודל מושלם, ההפסד הוא אפס. אחרת, ההפסד גדול יותר. המטרה של אימון מודל היא למצוא קבוצה של משקלים והטיות עם הפסד נמוך, בממוצע, בכל הדוגמאות.
צפייה בנתונים הסטטיסטיים של אימון המודל שנוצרו כשהרצתם את השאילתה CREATE MODEL:
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
לוחצים על מערך הנתונים
bqml_tutorial.לוחצים על הכרטיסייה Models.
כדי לפתוח את חלונית המידע של המודל, לוחצים על penguins_model.
לוחצים על הכרטיסייה אימון ואז על טבלה. התוצאות אמורות להיראות כך:
העמודה Training Data Loss מייצגת את מדד האובדן שחושב אחרי שהמודל אומן על מערך נתוני האימון. מכיוון שביצעתם רגרסיה לינארית, בעמודה הזו מוצג הערך של mean squared error. באימון הזה נעשה שימוש אוטומטי באסטרטגיית אופטימיזציה של normal_equation, ולכן נדרשת רק איטרציה אחת כדי להתכנס למודל הסופי. מידע נוסף על הגדרת אסטרטגיית האופטימיזציה של המודל זמין במאמר
optimize_strategy.
הערכת המודל
אחרי שיוצרים את המודל, מעריכים את הביצועים שלו באמצעות הפונקציה ML.EVALUATE או הפונקציה bigframes.bigquery.ml.evaluate של BigQuery DataFrames, כדי להשוות בין הערכים החזויים שנוצרו על ידי המודל לבין הנתונים בפועל.
SQL
כקלט, הפונקציה ML.EVALUATE מקבלת את המודל המאומן וקבוצת נתונים שתואמת לסכימה של הנתונים שבהם השתמשתם כדי לאמן את המודל. בסביבת ייצור, צריך להעריך את המודל על סמך נתונים שונים מהנתונים ששימשו לאימון המודל.
אם מריצים את ML.EVALUATE בלי לספק נתוני קלט, הפונקציה מאחזרת את מדדי ההערכה שחושבו במהלך האימון. המדדים האלה מחושבים באמצעות קבוצת הנתונים להערכה שנשמרה באופן אוטומטי:
SELECT
*
FROM
ML.EVALUATE(MODEL bqml_tutorial.penguins_model);
מריצים את השאילתה ML.EVALUATE:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את השאילתה הבאה:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL));
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאות אמורות להיראות כך:
מכיוון שביצעתם רגרסיה לינארית, התוצאות כוללות את העמודות הבאות:
mean_absolute_errormean_squared_errormean_squared_log_errormedian_absolute_errorr2_scoreexplained_variance
מדד חשוב בתוצאות ההערכה הוא
הציון R2.
הציון R2 הוא מדד סטטיסטי שקובע אם התחזיות של הרגרסיה הלינארית קרובות לנתונים בפועל. ערך של 0 מציין שהמודל לא מסביר את השונות של נתוני התגובה סביב הממוצע. הערך 1 מציין שהמודל מסביר את כל השונות של נתוני התגובה סביב הממוצע.
אפשר גם להסתכל בחלונית המידע של המודל במסוף Google Cloud כדי לראות את מדדי ההערכה:
שימוש במודל כדי לחזות תוצאות
אחרי שהערכתם את המודל, השלב הבא הוא להשתמש בו כדי לחזות תוצאה. אתם יכולים להריץ במודל את הפונקציה ML.PREDICT או את הפונקציה bigframes.bigquery.ml.predict של BigQuery DataFrames כדי לחזות את מסת הגוף בגרמים של כל הפינגווינים שחיים באיי ביסקו.
SQL
הפונקציה ML.PREDICT מקבלת כקלט את המודל שאומן ומערך נתונים שתואם לסכימה של הנתונים ששימשו לאימון המודל, מלבד עמודת התווית.
מריצים את השאילתה ML.PREDICT:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את השאילתה הבאה:
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'));
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאות אמורות להיראות כך:
הסבר על תוצאות החיזוי
SQL
כדי להבין למה המודל יוצר את תוצאות החיזוי האלה, אפשר להשתמש בפונקציה ML.EXPLAIN_PREDICT.
ML.EXPLAIN_PREDICT היא גרסה מורחבת של הפונקציה ML.PREDICT.
ML.EXPLAIN_PREDICT לא רק מפיק תוצאות חיזוי, אלא גם מפיק עמודות נוספות כדי להסביר את תוצאות החיזוי. בפועל, אפשר להריץ את ML.EXPLAIN_PREDICT במקום ML.PREDICT. מידע נוסף זמין במאמר סקירת AI ניתן להסברה ב-BigQuery ML.
מריצים את השאילתה ML.EXPLAIN_PREDICT:
- נכנסים לדף BigQuery במסוף Google Cloud .
- בעורך השאילתות, מריצים את השאילתה הבאה:
SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'), STRUCT(3 as top_k_features));
התוצאות אמורות להיראות כך:
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
במודלים של רגרסיה לינארית, ערכי Shapley משמשים ליצירת ערכי שיוך (Attribution) של מאפיינים לכל מאפיין במודל. הפלט כולל את שלושת שיוכי המאפיינים המובילים לכל שורה בטבלה penguins, כי top_k_features הוגדר ל-3. השיוכים האלה ממוינים לפי הערך המוחלט של השיוך בסדר יורד. בכל הדוגמאות, המאפיין sex תרם הכי הרבה לחיזוי הכולל.
הסבר גלובלי על המודל
SQL
כדי לדעת אילו תכונות הן בדרך כלל החשובות ביותר לקביעת משקל הפינגווין, אפשר להשתמש בפונקציה ML.GLOBAL_EXPLAIN.
כדי להשתמש ב-ML.GLOBAL_EXPLAIN, צריך לאמן מחדש את המודל כשהאפשרות ENABLE_GLOBAL_EXPLAIN מוגדרת ל-TRUE.
מאמנים מחדש את המודל ומקבלים הסברים גלובליים:
- נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את השאילתה הבאה כדי לאמן מחדש את המודל:
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` OPTIONS ( model_type = 'linear_reg', input_label_cols = ['body_mass_g'], enable_global_explain = TRUE) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL;
בעורך השאילתות, מריצים את השאילתה הבאה כדי לקבל הסברים גלובליים:
SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)
התוצאות אמורות להיראות כך:
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, פעלו לפי הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה ב-BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים הנפרדים.
- אתם יכולים למחוק את הפרויקט שיצרתם.
- אפשר גם להשאיר את הפרויקט ולמחוק את מערך הנתונים.
מחיקת מערך הנתונים
מחיקת הפרויקט תסיר את כל מערכי הנתונים ואת כל הטבלאות בפרויקט. אם אתם מעדיפים להשתמש שוב בפרויקט, אתם יכולים למחוק את קבוצת הנתונים שיצרתם במדריך הזה:
אם צריך, פותחים את הדף של BigQuery במסוףGoogle Cloud .
בניווט, לוחצים על מערך הנתונים bqml_tutorial שיצרתם.
לוחצים על מחיקת מערך הנתונים בצד שמאל של החלון. הפעולה הזו מוחקת את מערך הנתונים, את הטבלה ואת כל הנתונים.
בתיבת הדו-שיח Delete dataset, מאשרים את פקודת המחיקה על ידי הקלדת שם מערך הנתונים (
bqml_tutorial) ולוחצים על Delete.
מחיקת הפרויקט
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- לסקירה כללית על BigQuery ML, קראו את המאמר מבוא ל-BigQuery ML.
- מידע על יצירת מודלים זמין בדף התחביר של
CREATE MODEL.