במדריך הזה תשתמשו במודל רגרסיה לוגיסטית בינארי ב-BigQuery ML כדי לחזות את טווח ההכנסה של אנשים על סמך נתונים דמוגרפיים. מודל רגרסיה לוגיסטית בינארית מנבא אם ערך מסוים משתייך לאחת משתי קטגוריות. במקרה הזה, המודל מנבא אם ההכנסה השנתית של אדם מסוים גבוהה מ-50,000 $או נמוכה ממנה.
במדריך הזה נעשה שימוש במערך הנתונים bigquery-public-data.ml_datasets.census_adult_income. קבוצת הנתונים הזו מכילה מידע דמוגרפי ומידע על הכנסות של תושבי ארה"ב משנת 2000 ומשנת 2010.
מטרות
במדריך הזה תבצעו את המשימות הבאות:- יוצרים מודל רגרסיה לוגיסטית.
- הערכת המודל.
- ליצור תחזיות באמצעות המודל.
- הסבר על התוצאות שהמודל הפיק.
עלויות
במדריך הזה נעשה שימוש ברכיבים של Google Cloudשחלים עליהם חיובים, כולל הרכיבים הבאים:
- BigQuery
- BigQuery ML
מידע נוסף על העלויות ב-BigQuery זמין בדף תמחור ב-BigQuery.
מידע נוסף על העלויות של BigQuery ML זמין במאמר תמחור ב-BigQuery ML.
לפני שמתחילים
-
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.
-
Enable the BigQuery API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
ההרשאות הנדרשות
כדי ליצור את המודל באמצעות BigQuery ML, אתם צריכים את הרשאות ה-IAM הבאות:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
כדי להריץ הסקה, אתם צריכים את ההרשאות הבאות:
bigquery.models.getDataבמודלbigquery.jobs.create
מבוא
משימה נפוצה בלמידת מכונה היא לסווג נתונים לאחד משני סוגים, שנקראים תוויות. לדוגמה, קמעונאי יכול לרצות לחזות אם לקוח מסוים ירכוש מוצר חדש, על סמך מידע אחר על אותו לקוח. במקרה כזה, שתי התוויות יכולות להיות will buy ו-won't buy. הקמעונאי יכול ליצור מערך נתונים שבו עמודה אחת מייצגת את שתי התוויות, וכוללת גם נתוני לקוח כמו המיקום שלו, הרכישות הקודמות שלו וההעדפות המדווחות שלו. לאחר מכן, הקמעונאי יכול להשתמש במודל רגרסיה לוגיסטית בינארית שמתבסס על נתוני הלקוח האלה כדי לחזות איזו תווית מייצגת בצורה הטובה ביותר כל לקוח.
במדריך הזה יוצרים מודל רגרסיה לוגיסטית בינארית שמנבא אם ההכנסה של משיב בסקר של מפקד האוכלוסין בארה"ב נכללת באחד משני טווחי הכנסה, על סמך מאפיינים דמוגרפיים של המשיב.
יצירת מערך נתונים
יוצרים מערך נתונים ב-BigQuery לאחסון המודל:
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, לוחצים על שם הפרויקט.
לוחצים על הצגת פעולות > יצירת מערך נתונים.
בדף Create dataset, מבצעים את הפעולות הבאות:
בשדה Dataset ID (מזהה מערך הנתונים), מזינים
census.בשדה Location type, בוחרים באפשרות במספר אזורים ואז באפשרות US (multiple regions in United States).
מערכי הנתונים הציבוריים מאוחסנים ב
USמספר אזורים. כדי לפשט את התהליך, כדאי לאחסן את מערך הנתונים באותו מיקום.משאירים את שאר הגדרות ברירת המחדל כמו שהן ולוחצים על יצירת מערך נתונים.
בדיקת הנתונים
בודקים את מערך הנתונים ומזהים את העמודות שבהן צריך להשתמש כנתוני אימון למודל הרגרסיה הלוגיסטית. בוחרים 100 שורות מהטבלה census_adult_income:
SQL
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את שאילתת GoogleSQL הבאה:
SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, functional_weight FROM `bigquery-public-data.ml_datasets.census_adult_income` LIMIT 100;
התוצאות אמורות להיראות כך:
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במאמר BigQuery quickstart using BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
תוצאות השאילתה מראות שהעמודה income_bracket בטבלה census_adult_income מכילה רק אחד משני ערכים: <=50K או >50K.
הכנת הנתונים לדוגמה
במדריך הזה, תלמדו איך לחזות את ההכנסה של משיבים לסקר על סמך הערכים בעמודות הבאות בטבלה census_adult_income:
-
age: הגיל של המשיב/ה. -
workclass: סוג העבודה שבוצעה. לדוגמה, ממשלה מקומית, פרטי או עצמאי. marital_status-
education_num: רמת ההשכלה הגבוהה ביותר של המשיב. occupation-
hours_per_week: שעות עבודה בשבוע.
אתם יכולים להחריג עמודות שכוללות נתונים כפולים. לדוגמה, בעמודה education, כי הערכים בעמודות education ו-education_num מבטאים את אותם נתונים בפורמטים שונים.
העמודה functional_weight היא מספר האנשים שלדעת ארגון המפקד מיוצגים בשורה מסוימת. מכיוון שהערך של העמודה הזו לא קשור לערך של income_bracket בשורה נתונה, אפשר להשתמש בערך שבעמודה הזו כדי להפריד את הנתונים לקבוצות של אימון, הערכה וחיזוי. לשם כך, יוצרים עמודה חדשה dataframe שנגזרת מהעמודה functional_weight. אתם מתייגים 80% מהנתונים לאימון המודל, 10% מהנתונים להערכה ו-10% מהנתונים לחיזוי.
SQL
יוצרים תצוגה מפורטת עם הנתונים לדוגמה.
התצוגה הזו משמשת את ההצהרה CREATE MODEL בהמשך המדריך הזה.
מריצים את השאילתה שמכינה את הנתונים לדוגמה:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את השאילתה הבאה:
CREATE OR REPLACE VIEW `census.input_data` AS SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, CASE WHEN MOD(functional_weight, 10) < 8 THEN 'training' WHEN MOD(functional_weight, 10) = 8 THEN 'evaluation' WHEN MOD(functional_weight, 10) = 9 THEN 'prediction' END AS dataframe FROM `bigquery-public-data.ml_datasets.census_adult_income`;
צפייה בנתונים לדוגמה:
SELECT * FROM `census.input_data`;
BigQuery DataFrames
יוצרים DataFrame בשם input_data. בהמשך המדריך הזה תשתמשו ב-input_data כדי לאמן את המודל, להעריך אותו וליצור תחזיות.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במאמר BigQuery quickstart using BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
יצירה של מודל רגרסיה לוגיסטית
יוצרים מודל רגרסיה לוגיסטית עם נתוני האימון שסימנתם בתוויות בקטע הקודם.
SQL
משתמשים בהצהרת CREATE MODEL ומציינים את LOGISTIC_REG כסוג המודל.
הנה כמה פרטים חשובים על הצהרת CREATE MODEL:
האפשרות
input_label_colsמציינת איזו עמודה בהצהרתSELECTתשמש כעמודת התוויות. כאן, עמודת התווית היאincome_bracket, ולכן המודל לומד איזה מבין שני הערכים שלincome_bracketהוא הסביר ביותר לשורה נתונה, על סמך הערכים האחרים שמופיעים בשורה הזו.אין צורך לציין אם מודל רגרסיה לוגיסטית הוא בינארי או רב-סיווגי. מערכת BigQuery ML קובעת איזה סוג של מודל לאמן על סמך מספר הערכים הייחודיים בעמודת התווית.
האפשרות
auto_class_weightsמוגדרת לערךTRUEכדי לאזן את תוויות הסיווג בנתוני האימון. כברירת מחדל, נתוני האימון לא משוקללים. אם התוויות בנתוני האימון לא מאוזנות, יכול להיות שהמודל ילמד לחזות את הסוג הכי פופולרי של תוויות בצורה משמעותית יותר. במקרה הזה, רוב המשיבים במערך הנתונים נמצאים בקבוצת ההכנסה הנמוכה. הדבר עלול להוביל למודל שנותן משקל גבוה מדי לטווח ההכנסות הנמוך. משקלים של מחלקות מאזנים את תוויות המחלקות על ידי חישוב המשקלים לכל מחלקה ביחס הפוך לתדירות של המחלקה.האפשרות
enable_global_explainמוגדרת לערךTRUEכדי לאפשר לכם להשתמש בפונקציהML.GLOBAL_EXPLAINבמודל בהמשך המדריך.השאילתה של
SELECTמבצעת שאילתה בתצוגהinput_dataשמכילה את הנתונים לדוגמה. הסעיףWHEREמסנן את השורות כך שרק השורות שמסומנות כנתוני אימון ישמשו לאימון המודל.
מריצים את השאילתה שיוצרת את מודל הרגרסיה הלוגיסטית:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את השאילתה הבאה:
CREATE OR REPLACE MODEL `census.census_model` OPTIONS ( model_type='LOGISTIC_REG', auto_class_weights=TRUE, enable_global_explain=TRUE, data_split_method='NO_SPLIT', input_label_cols=['income_bracket'], max_iterations=15) AS SELECT * EXCEPT(dataframe) FROM `census.input_data` WHERE dataframe = 'training'
בחלונית הימנית, לוחצים על כלי הניתוחים:

בחלונית Explorer, לוחצים על Datasets.
בחלונית מערכי נתונים, לוחצים על
census.לוחצים על הכרטיסייה מודלים.
לחץ על
census_model.בכרטיסייה פרטים מפורטים המאפיינים שבהם נעשה שימוש ב-BigQuery ML כדי לבצע רגרסיה לוגיסטית.
BigQuery DataFrames
משתמשים בשיטה
fit
כדי לאמן את המודל ובשיטה
to_gbq
כדי לשמור אותו במערך הנתונים.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במאמר BigQuery quickstart using BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
הערכת הביצועים של המודל
אחרי שיוצרים את המודל, מעריכים את הביצועים שלו בהשוואה לנתוני ההערכה.
SQL
הפונקציה
ML.EVALUATE
מעריכה את הערכים החזויים שנוצרו על ידי המודל ביחס לנתוני ההערכה.
כקלט, הפונקציה ML.EVALUATE מקבלת את המודל שאומן ואת השורות מהתצוגה input_data שבהן הערך בעמודה dataframe הוא evaluation. הפונקציה מחזירה שורה אחת של נתונים סטטיסטיים לגבי המודל.
מריצים את השאילתה ML.EVALUATE:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את השאילתה הבאה:
SELECT * FROM ML.EVALUATE (MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'evaluation' ) );
התוצאות אמורות להיראות כך:
BigQuery DataFrames
משתמשים ב-method score כדי להעריך את המודל בהשוואה לנתונים בפועל.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במאמר BigQuery quickstart using BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
אפשר גם לעיין בחלונית הערכה של המודל במסוף Google Cloud כדי לראות את מדדי ההערכה שחושבו במהלך האימון:
חיזוי של קבוצת ההכנסה
משתמשים במודל כדי לחזות את קבוצת ההכנסה הסבירה ביותר לכל משיב.
SQL
כדי לחזות את קבוצת ההכנסה הסבירה, משתמשים בפונקציה ML.PREDICT. כקלט, הפונקציה ML.PREDICT מקבלת את המודל שאומן ואת השורות מהתצוגה input_data שבהן הערך בעמודה dataframe הוא prediction.
מריצים את השאילתה ML.PREDICT:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את השאילתה הבאה:
SELECT * FROM ML.PREDICT (MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'prediction' ) );
התוצאות אמורות להיראות כך:
בעמודה predicted_income_bracket מופיע טווח ההכנסה החזוי של המשיב.
BigQuery DataFrames
משתמשים ב-method predict כדי ליצור תחזיות לגבי קבוצת ההכנסה הסבירה.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במאמר BigQuery quickstart using BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
הסבר על תוצאות התחזית
כדי להבין למה המודל מפיק את תוצאות התחזית האלה, אפשר להשתמש בפונקציה ML.EXPLAIN_PREDICT.
ML.EXPLAIN_PREDICT היא גרסה מורחבת של הפונקציה ML.PREDICT.
ML.EXPLAIN_PREDICT לא רק מפיק תוצאות של תחזיות, אלא גם מפיק עמודות נוספות כדי להסביר את תוצאות התחזיות. מידע נוסף על יכולת הסברה זמין במאמר סקירה כללית על AI שניתן להסברה ב-BigQuery ML.
מריצים את השאילתה ML.EXPLAIN_PREDICT:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את השאילתה הבאה:
SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'evaluation'), STRUCT(3 as top_k_features));
התוצאות אמורות להיראות כך:
במודלים של רגרסיה לוגיסטית, נעשה שימוש בערכי Shapley כדי לקבוע את השיוך היחסי של התכונות לכל תכונה במודל. מכיוון שהאפשרות top_k_features
הוגדרה ל-3 בשאילתה, ML.EXPLAIN_PREDICT מפיק את שלושת
השיוכים של התכונות המובילות לכל שורה בתצוגה input_data. השיוכים האלה מוצגים בסדר יורד לפי הערך המוחלט של השיוך.
תסביר את המודל באופן גלובלי
כדי לדעת אילו תכונות הכי חשובות לקביעת קבוצת ההכנסה, משתמשים בפונקציה ML.GLOBAL_EXPLAIN.
קבלת הסברים גלובליים לגבי המודל:
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את השאילתה הבאה כדי לקבל הסברים גלובליים:
SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `census.census_model`)
התוצאות אמורות להיראות כך:
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם במדריך הזה, אתם יכולים למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת מערך נתונים
אם מוחקים פרויקט, כל מערכי הנתונים וכל הטבלאות בפרויקט נמחקים. אם אתם מעדיפים להשתמש מחדש בפרויקט, אתם יכולים למחוק את מערך הנתונים שיצרתם במדריך הזה:
אם צריך, פותחים את הדף BigQuery במסוףGoogle Cloud .
בתפריט הניווט, לוחצים על מערך הנתונים census שיצרתם.
בצד שמאל של החלון, לוחצים על מחיקת מערך נתונים. הפעולה הזו מוחקת את מערך הנתונים ואת המודל.
בתיבת הדו-שיח מחיקת מערך נתונים, מקלידים את שם מערך הנתונים (
census) כדי לאשר את פקודת המחיקה, ואז לוחצים על מחיקה.
מחיקת פרויקט
כדי למחוק את הפרויקט:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
המאמרים הבאים
- סקירה כללית על BigQuery ML זמינה במאמר מבוא ל-BigQuery ML.
- מידע על יצירת מודלים זמין בדף התחביר של
CREATE MODEL.