במדריך הזה נסביר איך ליצור מודל של פירוק מטריצות ולאמן אותו על נתוני סשנים של משתמשים ב-Google Analytics 360 בטבלת GA360_test.ga_sessions_sample הציבורית. לאחר מכן משתמשים במודל של פירוק מטריצות כדי ליצור המלצות לתוכן עבור משתמשי האתר.
שימוש במידע עקיף על העדפות הלקוחות, כמו משך סשן של משתמש, כדי לאמן את המודל נקרא אימון עם משוב מרומז. מודלים של פירוק מטריצות מאומנים באמצעות אלגוריתם של ריבועים פחותים לסירוגין עם משקולות כשמשתמשים במשוב מרומז כנתוני אימון.
מטרות
במדריך הזה מוסבר איך לבצע את הפעולות הבאות:
- יצירת מודל של פירוק מטריצות באמצעות ההצהרה
CREATE MODEL. - הערכת המודל באמצעות הפונקציה
ML.EVALUATE. - יצירת המלצות לתוכן למשתמשים באמצעות המודל עם הפונקציה
ML.RECOMMEND.
עלויות
במדריך הזה נעשה שימוש ברכיבים של Cloud de Confiance by S3NS, והשימוש בהם כרוך בתשלום, כולל:
- BigQuery
- BigQuery ML
מידע נוסף על העלויות ב-BigQuery זמין בדף תמחור ב-BigQuery.
מידע נוסף על העלויות של BigQuery ML זמין במאמר תמחור ב-BigQuery ML.
לפני שמתחילים
-
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, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
ההרשאות הנדרשות
כדי ליצור את מערך הנתונים, אתם צריכים את ההרשאה
bigquery.datasets.createב-IAM.כדי ליצור את המודל, צריך את ההרשאות הבאות:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
כדי להריץ הסקה, אתם צריכים את ההרשאות הבאות:
bigquery.models.getDatabigquery.jobs.create
במאמר מבוא ל-IAM יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery.
יצירת מערך נתונים
יוצרים מערך נתונים ב-BigQuery לאחסון מודל ה-ML.
המסוף
במסוף Cloud de Confiance , עוברים לדף 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" } }
הכנת נתונים לדוגמה
להפוך את הנתונים מהטבלה GA360_test.ga_sessions_sample למבנה טוב יותר לאימון המודל, ואז לכתוב את הנתונים האלה לטבלה ב-BigQuery. השאילתה הבאה מחשבת את משך הסשן של כל משתמש עבור כל פריט תוכן, ואפשר להשתמש בתוצאה כמשוב מרומז כדי להסיק את העדפת המשתמש לגבי התוכן הזה.
כדי ליצור את טבלת נתוני האימון:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
יוצרים את טבלת נתוני האימון. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
CREATE OR REPLACE TABLE `bqml_tutorial.analytics_session_data` AS WITH visitor_page_content AS ( SELECT fullVisitorID, ( SELECT MAX( IF( index = 10, value, NULL)) FROM UNNEST(hits.customDimensions) ) AS latestContentId, (LEAD(hits.time, 1) OVER (PARTITION BY fullVisitorId ORDER BY hits.time ASC) - hits.time) AS session_duration FROM `cloud-training-demos.GA360_test.ga_sessions_sample`, UNNEST(hits) AS hits WHERE # only include hits on pages hits.type = 'PAGE' GROUP BY fullVisitorId, latestContentId, hits.time ) # aggregate web stats SELECT fullVisitorID AS visitorId, latestContentId AS contentId, SUM(session_duration) AS session_duration FROM visitor_page_content WHERE latestContentId IS NOT NULL GROUP BY fullVisitorID, latestContentId HAVING session_duration > 0 ORDER BY latestContentId;
הצגת קבוצת משנה של נתוני האימון. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT * FROM `bqml_tutorial.analytics_session_data` LIMIT 5;
התוצאות אמורות להיראות כך:
+---------------------+-----------+------------------+ | visitorId | contentId | session_duration | +---------------------+-----------+------------------+ | 7337153711992174438 | 100074831 | 44652 | +---------------------+-----------+------------------+ | 5190801220865459604 | 100170790 | 121420 | +---------------------+-----------+------------------+ | 2293633612703952721 | 100510126 | 47744 | +---------------------+-----------+------------------+ | 5874973374932455844 | 100510126 | 32109 | +---------------------+-----------+------------------+ | 1173698801255170595 | 100676857 | 10512 | +---------------------+-----------+------------------+
יצירת המודל
יצירת מודל של פירוק מטריצות ואימון שלו על הנתונים בטבלה analytics_session_data. המודל מאומן לחזות את רמת הביטחון לכל זוג visitorId-contentId. דירוג רמת הביטחון נוצר על ידי מרכוז ושינוי קנה מידה לפי משך הסשן החציוני. רשומות שבהן משך הסשן גדול פי 3.33 מהחציון מסוננות כערכים חריגים.
ההצהרה הבאה CREATE MODEL משתמשת בעמודות האלה כדי ליצור המלצות:
-
visitorId– מזהה המבקר. -
contentId— מזהה התוכן. -
rating– הדירוג המרומז מ-0 עד 1 שמחושב לכל צמד של מבקר ותוכן, ממוצע ומוגדר בקנה מידה.
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
CREATE OR REPLACE MODEL `bqml_tutorial.mf_implicit` OPTIONS ( MODEL_TYPE = 'matrix_factorization', FEEDBACK_TYPE = 'implicit', USER_COL = 'visitorId', ITEM_COL = 'contentId', RATING_COL = 'rating', L2_REG = 30, NUM_FACTORS = 15) AS SELECT visitorId, contentId, 0.3 * (1 + (session_duration - 57937) / 57937) AS rating FROM `bqml_tutorial.analytics_session_data` WHERE 0.3 * (1 + (session_duration - 57937) / 57937) < 1;
השאילתה תושלם תוך 10 דקות בערך, ואז המודל
mf_implicitיופיע בחלונית Explorer. השאילתה משתמשת בהצהרתCREATE MODELכדי ליצור מודל, ולכן לא מוצגות תוצאות של השאילתה.
קבלת נתונים סטטיסטיים של הדרכות
אפשר גם לראות את נתוני האימון של המודל בCloud de Confiance מסוף.
אלגוריתם של למידת מכונה יוצר מודל על ידי יצירת איטרציות רבות של המודל באמצעות פרמטרים שונים, ואז בוחר את גרסת המודל שממזערת את ההפסד. התהליך הזה נקרא מזעור סיכון אמפירי. הנתונים הסטטיסטיים של אימון המודל מאפשרים לכם לראות את ההפסד שמשויך לכל איטרציה של המודל.
כדי לראות את נתוני האימון של המודל:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets (מערכי נתונים).
לוחצים על מערך הנתונים
bqml_tutorial. אפשר גם להשתמש בתכונת החיפוש או במסננים כדי למצוא את מערך הנתונים.לוחצים על הכרטיסייה מודלים.
לוחצים על מודל
mf_implicitואז על הכרטיסייה אימון.בקטע הצגה כ, לוחצים על טבלה. התוצאות אמורות להיראות כך:
+-----------+--------------------+--------------------+ | Iteration | Training Data Loss | Duration (seconds) | +-----------+--------------------+--------------------+ | 5 | 0.0027 | 47.27 | +-----------+--------------------+--------------------+ | 4 | 0.0028 | 39.60 | +-----------+--------------------+--------------------+ | 3 | 0.0032 | 55.57 | +-----------+--------------------+--------------------+ | ... | ... | ... | +-----------+--------------------+--------------------+
העמודה Training Data Loss מייצגת את מדד ההפסד שמחושב אחרי אימון המודל. מכיוון שמדובר במודל של פירוק מטריצות, בעמודה הזו מוצג השגיאה הריבועית הממוצעת.
הערכת המודל
מעריכים את הביצועים של המודל באמצעות הפונקציה ML.EVALUATE.
הפונקציה ML.EVALUATE מעריכה את סיווגי התוכן החזויים שהוחזרו על ידי המודל ביחס למדדי ההערכה שחושבו במהלך האימון.
כדי להעריך את המודל, פועלים לפי השלבים הבאים:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.mf_implicit`);
התוצאות אמורות להיראות כך:
+------------------------+-----------------------+---------------------------------------+---------------------+ | mean_average_precision | mean_squared_error | normalized_discounted_cumulative_gain | average_rank | +------------------------+-----------------------+---------------------------------------+---------------------+ | 0.4434341257478137 | 0.0013381759837648962 | 0.9433280547112802 | 0.24031636088594222 | +------------------------+-----------------------+---------------------------------------+---------------------+
מידע נוסף על הפלט של הפונקציה
ML.EVALUATEזמין במאמר בנושא פלט.
קבלת דירוגים חזויים עבור קבוצת משנה של צמדי מבקר-תוכן
משתמשים ב-ML.RECOMMEND כדי לקבל את הדירוג החזוי של כל פריט תוכן עבור חמישה מבקרים באתר.
כדי לקבל סיווגים חזויים, צריך לפעול לפי השלבים הבאים:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT * FROM ML.RECOMMEND( MODEL `bqml_tutorial.mf_implicit`, ( SELECT visitorId FROM `bqml_tutorial.analytics_session_data` LIMIT 5 ));
התוצאות אמורות להיראות כך:
+-------------------------------+---------------------+-----------+ | predicted_rating_confidence | visitorId | contentId | +-------------------------------+---------------------+-----------+ | 0.0033608418060270262 | 7337153711992174438 | 277237933 | +-------------------------------+---------------------+-----------+ | 0.003602395397293956 | 7337153711992174438 | 158246147 | +-------------------------------+---------------------+-- -------+ | 0.0053197670652785356 | 7337153711992174438 | 299389988 | +-------------------------------+---------------------+-----------+ | ... | ... | ... | +-------------------------------+---------------------+-----------+
יצירת המלצות
משתמשים בסיווגים החזויים כדי ליצור את חמשת מזהי התוכן המומלצים המובילים לכל מזהה מבקר.
כדי ליצור המלצות:
במסוף Cloud de Confiance , עוברים לדף BigQuery.
לכתוב את הסיווגים החזויים בטבלה. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
CREATE OR REPLACE TABLE `bqml_tutorial.recommend_content` AS SELECT * FROM ML.RECOMMEND(MODEL `bqml_tutorial.mf_implicit`);
בוחרים את חמש התוצאות המובילות לכל מבקר. בעורך השאילתות, מדביקים את השאילתה הבאה ולוחצים על Run (הרצה):
SELECT visitorId, ARRAY_AGG( STRUCT(contentId, predicted_rating_confidence) ORDER BY predicted_rating_confidence DESC LIMIT 5) AS rec FROM `bqml_tutorial.recommend_content` GROUP BY visitorId;
התוצאות אמורות להיראות כך:
+---------------------+-----------------+---------------------------------+ | visitorId | rec:contentId | rec:predicted_rating_confidence | +---------------------+-----------------+------------------------- ------+ | 867526255058981688 | 299804319 | 0.88170525357178664 | | | 299935287 | 0.54699439944935124 | | | 299410466 | 0.53424780863188659 | | | 299826767 | 0.46949603950374219 | | | 299809748 | 0.3379991197434149 | +---------------------+-----------------+---------------------------------+ | 2434264018925667659 | 299824032 | 1.3903516407308065 | | | 299410466 | 0.9921995618196483 | | | 299903877 | 0.92333625294129218 | | | 299816215 | 0.91856701667757279 | | | 299852437 | 0.86973661454890561 | +---------------------+-----------------+---------------------------------+ | ... | ... | ... | +---------------------+-----------------+---------------------------------+
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
- אתם יכולים למחוק את הפרויקט שיצרתם.
- אפשר גם להשאיר את הפרויקט ולמחוק את קבוצת הנתונים.
מחיקת מערך נתונים
אם מוחקים פרויקט, כל מערכי הנתונים וכל הטבלאות בפרויקט נמחקים. אם אתם מעדיפים להשתמש מחדש בפרויקט, אתם יכולים למחוק את מערך הנתונים שיצרתם במדריך הזה:
אם צריך, פותחים את הדף BigQuery במסוףCloud de Confiance .
בחלונית הניווט, לוחצים על מערך הנתונים bqml_tutorial שיצרתם.
בצד שמאל של החלון, לוחצים על מחיקת מערך נתונים. הפעולה הזו מוחקת את מערך הנתונים, את הטבלה ואת כל הנתונים.
בתיבת הדו-שיח מחיקת מערך נתונים, מקלידים את שם מערך הנתונים (
bqml_tutorial) כדי לאשר את פקודת המחיקה, ואז לוחצים על מחיקה.
מחיקת פרויקט
כדי למחוק את הפרויקט:
- במסוף Cloud de Confiance , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- אפשר לנסות ליצור מודל של פירוק מטריצות שמבוסס על משוב מפורש.
- סקירה כללית על BigQuery ML זמינה במאמר מבוא ל-BigQuery ML.
- מידע נוסף על למידת מכונה זמין בקורס המקוצר על למידת מכונה.