Loading...
No results found.

Apply your skills in Google Cloud console

Google Cloud Big Data and Machine Learning Fundamentals - українська

Get access to 700+ labs and courses

Прогноз обсягу покупок за допомогою BigQuery ML

Lab 1 година 20 годин universal_currency_alt 5 кредитів show_chart Початковий
info This lab may incorporate AI tools to support your learning.
Get access to 700+ labs and courses

Огляд

За допомогою функції BigQuery ML (машинного навчання BigQuery) аналітики даних можуть створювати, навчати й оцінювати моделі машинного навчання, а також використовувати їх для прогнозування з мінімальним кодуванням.

У BigQuery завантажено тестовий набір даних про електронну комерцію Google Analytics із мільйонами записів для магазину Google Merchandise Store. Під час цієї практичної роботи ви будете використовувати ці дані, щоб опрацьовувати найпоширеніші запити компаній щодо купівельних звичок клієнтів.

Цілі

У цій практичній роботі ви навчитеся виконувати наведені нижче дії.

  • Використовувати BigQuery для пошуку загальнодоступних наборів даних.
  • Виконувати запити наборів даних про електронну комерцію й аналізувати отриману інформацію.
  • Створювати набір даних для навчання й оцінки моделі, щоб отримувати групові прогнози.
  • Створювати модель класифікації (за методом логістичної регресії) у BigQuery ML.
  • Оцінювати ефективність моделі машинного навчання.
  • Прогнозувати й визначати ймовірність здійснення покупки відвідувачем.

Налаштування середовищ

Налаштування практичної роботи

Для кожної практичної роботи ви безкоштовно отримуєте новий проект Google Cloud і набір інструментів на визначений період часу.

  1. Увійдіть у Qwiklabs у вікні в режимі анонімного перегляду.

  2. Слідкуйте за тим, скільки часу залишилося для виконання практичної роботи (наприклад: 1:15:00). Постарайтеся завершити її вчасно.
    Завдання не можна призупинити, а лише почати спочатку.

  3. Коли будете готові, натисніть Start Lab (Почати практичну роботу).

  4. Занотуйте облікові дані для практичної роботи (ім’я користувача й пароль). Вони знадобляться для входу в Google Cloud Console.

  5. Натисніть Open Google Console (Відкрити Google Console).

  6. Виберіть Use another account (Увійти в інший обліковий запис), потім скопіюйте та вставте облікові дані для доступу до цієї практичної роботи у відповідні поля.
    Якщо ви ввійдете з іншими обліковими даними, станеться помилка або з вас може почати стягуватися плата.

  7. Прийміть умови й пропустіть сторінку відновлення ресурсу.

Відкрийте BigQuery в Console

  1. У Google Cloud Console виберіть Navigation menu (Меню навігації) > BigQuery.

Відкриється повідомлення Welcome to BigQuery in the Cloud Console (Вітаємо в BigQuery в Cloud Console). Це повідомлення містить посилання на короткий посібник і перелік оновлень інтерфейсу.

  1. Натисніть Done (Готово).

Доступ до набору даних курсу

У BigQuery відкрийте проект data-to-insights (дані для статистики) у новій вкладці веб-переглядача, щоб перенести його на панель проектів у BigQuery.

Визначення полів для набору даних про електронну комерцію data-to-insights (дані для статистики) наведено насторінці "[UA] Схема BigQuery Export". Залиште це посилання відкритим у новій вкладці для довідки.

Завдання 1. Проаналізуйте дані про електронну комерцію

Сценарій: команда аналітиків даних експортувала записи журналів Google Analytics щодо веб-сайту електронної комерції в BigQuery, а також створила нову таблицю з усіма необробленими даними про сеанси відвідувачів цього веб-сайту. Проаналізуйте ці дані й дайте відповіді на кілька запитань.

Запитання. Скільки відвідувачів вебсайту (у відсотках) здійснили покупку?

  1. Натисніть Editor (Редактор).
  2. Додайте наведений нижче фрагмент коду в поле New Query (Новий запит).
#standardSQL WITH visitors AS( SELECT COUNT(DISTINCT fullVisitorId) AS total_visitors FROM `data-to-insights.ecommerce.web_analytics` ), purchasers AS( SELECT COUNT(DISTINCT fullVisitorId) AS total_purchasers FROM `data-to-insights.ecommerce.web_analytics` WHERE totals.transactions IS NOT NULL ) SELECT total_visitors, total_purchasers, total_purchasers / total_visitors AS conversion_rate FROM visitors, purchasers
  1. Натисніть Run (Виконати).

Результат: 2,69%.

Запитання. Які 5 товарів продаються найкраще?

  1. Додайте наведений нижче запит в EDITOR (РЕДАКТОР), а потім натисніть Run (Виконати).
SELECT p.v2ProductName, p.v2ProductCategory, SUM(p.productQuantity) AS units_sold, ROUND(SUM(p.localProductRevenue/1000000),2) AS revenue FROM `data-to-insights.ecommerce.web_analytics`, UNNEST(hits) AS h, UNNEST(h.product) AS p GROUP BY 1, 2 ORDER BY revenue DESC LIMIT 5;

Результат:

Row v2ProductName v2ProductCategory units_sold revenue
1 Термостат 3-го покоління з іржостійкої сталі Nest® Learning Thermostat (США) Nest-USA 17651 870976.95
2 Камера відеоспостереження для вулиці Nest® Cam (США) Nest-USA 16930 684034.55
3 Камера відеоспостереження для приміщень Nest® Cam (США) Nest-USA 14155 548104.47
4 Датчик диму та чадного газу з дротовим живленням (білого кольору) Nest® Protect (США) Nest-USA 6394 178937.6
5 Датчик диму та чадного газу на акумуляторах (білого кольору) Nest® Protect (США) Nest-USA 6340 178572.4

Запитання. Скільки користувачів здійснили покупки на веб-сайті під час наступних відвідувань?

  1. Щоб отримати відповідь, виконайте наведений нижче запит.
# visitors who bought on a return visit (could have bought on first as well WITH all_visitor_stats AS ( SELECT fullvisitorid, # 741,721 unique visitors IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid ) SELECT COUNT(DISTINCT fullvisitorid) AS total_visitors, will_buy_on_return_visit FROM all_visitor_stats GROUP BY will_buy_on_return_visit

Результат:

Row total_visitors will_buy_on_return_visit
1 729848 0
2 11873 1

Отже, під час наступних відвідувань покупку здійснить такий відсоток користувачів веб-сайту: (11873 / 729848) = 1,6%. Ці дані охоплюють відвідувачів, які здійснили покупку під час першого сеансу, а потім іще раз відвідали веб-сайт і знову щось купили.

Так часто роблять покупці предметів розкоші: наприклад, перш ніж придбати автомобіль, покупець ретельно вивчає та порівнює пропозиції на ринку. Меншою мірою це стосується й асортименту цього сайту (футболок, аксесуарів тощо).

Спеціалісти з інтернет-маркетингу використовують дані про перше відвідування, щоб визначати потенційних покупців і націлювати на них відповідну рекламу. Це дає змогу підвищити коефіцієнт конверсії та запобігти відтоку клієнтів на сайти конкурентів.

Завдання 2. Виберіть ознаки та створіть навчальний набір даних

Вам потрібно створити модель машинного навчання в BigQuery, щоб спрогнозувати, чи здійснить новий користувач покупку в майбутньому. Команда з маркетингу зможе націлювати на таких цінних користувачів спеціальні пропозиції і рекламні кампанії.

Google Analytics збирає різні показники щодо відвідування цього веб-сайту. Ознайомтеся з повним переліком полів у посібнику "[UA] Схема BigQuery Export", а потім перегляньте демонстраційний набір даних: ви дізнаєтеся про корисні функції, за допомогою яких модель машинного навчання зрозуміє зв’язок між інформацією про перше відвідування користувачем веб-сайту та ймовірністю того, що він повернеться й здійснить покупку.

Вашій команді потрібно визначити, чи варто використовувати ці два поля в моделі класифікації:

  • totals.bounces (показує, чи відвідувач залишив веб-сайт відразу);
  • totals.timeOnSite (показує, скільки часу відвідувач перебував на веб-сайті).

Ефективність машинного навчання залежить від якості завантажених тренувальних даних. Якщо модель отримає недостатньо інформації, щоб визначити та вивчити зв’язок між вхідними даними та вашою міткою (у нашому прикладі – чи здійснить відвідувач покупку в майбутньому), прогнозування буде неточним. Почніть навчання на основі цих двох полів, щоб зрозуміти, чи достатньо даних для отримання точної моделі.

  • Додайте наведений нижче код в EDITOR (РЕДАКТОР) і натисніть Run (Виконати).
SELECT * EXCEPT(fullVisitorId) FROM # features (SELECT fullVisitorId, IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site FROM `data-to-insights.ecommerce.web_analytics` WHERE totals.newVisits = 1) JOIN (SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid) USING (fullVisitorId) ORDER BY time_on_site DESC LIMIT 10;

Результати:

Row bounces time_on_site will_buy_on_return_visit
1 0 15047 0
2 0 12136 0
3 0 11201 0
4 0 10046 0
5 0 9974 0
6 0 9564 0
7 0 9520 0
8 0 9275 1
9 0 9138 0
10 0 8872 0

Обговорення. Після першого відвідування значення will_buy_on_return_visit невідоме. За умовами завдання ви створюєте прогноз щодо користувачів, які повернулися на веб-сайт і здійснили покупку. Ви не можете зазирнути в майбутнє й дізнатися напевно, чи повернеться новий відвідувач, щоб щось придбати. Мета створення моделі машинного навчання полягає в тому, щоб визначити ймовірність покупки на основі даних про перший сеанс відвідування.

Запитання. Чи достатньо значень time_on_site і bounces, щоб визначити, чи повернеться користувач для здійснення покупки?

Відповідь. На це запитання краще відповідати після завершення навчання й оцінки моделі. Проте на перший погляд результат не дуже обнадійливий, оскільки з 10 покупців із найвищим показником time_on_site лише 1 повернувся та здійснив покупку. Перевірмо, як працюватиме модель.

Завдання 3. Створіть набір даних BigQuery для зберігання моделей

Тепер створіть новий набір даних BigQuery, у якому зберігатимуться ваші моделі машинного навчання.

  1. На панелі ліворуч натисніть назву проекту, а потім – значок із трьома крапками View action (Переглянути дію). Виберіть Create Dataset (Створити набір даних).

  1. У вікні Create Dataset (Створити набір даних) виконайте наведені нижче дії.
  • Введіть ecommerce (електронна комерція) у полі Dataset ID (Ідентифікатор набору даних).
  • Залиште інші значення за умовчанням.
  1. Натисніть Create dataset (Створити набір даних).

Завдання 4. Виберіть тип моделі BigQuery ML і налаштуйте параметри

Ви вже вибрали початкові параметри, тож час перейти до створення першої моделі машинного навчання в BigQuery.

Є моделі таких двох типів:

Модель Тип моделі Тип даних мітки Приклад
Прогнозування linear_reg Числове значення (ціле число або число з рухомою комою) Прогноз продажів на наступний рік на основі історичних даних
Класифікація logistic_reg 0 або 1 для двійкової класифікації Класифікація електронних листів на спам і не спам на основі контексту
Примітка. Існує багато інших типів моделей машинного навчання (наприклад, нейронні мережі й дерева рішень), а також доступних для використання бібліотек, як-от TensorFlow. На момент написання статті в BigQuery ML підтримувалися дві описані вище моделі.

  1. Введіть наведений нижче запит, щоб створити модель і налаштувати її параметри.
CREATE OR REPLACE MODEL `ecommerce.classification_model` OPTIONS ( model_type='logistic_reg', labels = ['will_buy_on_return_visit'] ) AS #standardSQL SELECT * EXCEPT(fullVisitorId) FROM # features (SELECT fullVisitorId, IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site FROM `data-to-insights.ecommerce.web_analytics` WHERE totals.newVisits = 1 AND date BETWEEN '20160801' AND '20170430') # train on first 9 months JOIN (SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid) USING (fullVisitorId) ;
  1. Потім натисніть Run (Запустити), щоб почати навчання моделі.

Навчання триватиме від 5 до 10 хвилин.

Примітка. Не завантажуйте всі дані під час навчання моделі – потрібно залишити кілька невідомих точок даних, щоб згодом оцінити й протестувати модель. Щоб завершити налаштування, додайте умову WHERE для фільтрування, за якою з вашого набору даних про сеанси за 12 місяців для навчання використовуватимуться лише дані за перші 9 місяців.

Щойно модель завершить навчання, з’явиться таке повідомлення: "This statement created a new model named qwiklabs-gcp-xxxxxxxxx:ecommerce.classification_model" ("За цією інструкцією створено нову модель під назвою qwiklabs-gcp-xxxxxxxxx:ecommerce.classification_model").

  1. Натисніть Go to model (Перейти до моделі).

Відкрийте набір даних про електронну комерцію та переконайтеся, що модель classification_model створено.

Тепер можна оцінити ефективність моделі за допомогою нових невідомих даних.

Завдання 5. Оцініть ефективність моделі класифікації

Виберіть критерії оцінки ефективності

Щоб класифікувати дані за допомогою машинного навчання, потрібно зменшити кількість помилково позитивних результатів (коли прогноз щодо повернення користувача та здійснення покупки не справджується) і збільшити кількість істинно позитивних (коли прогноз справджується).

Нижче наведено приклад кривої ROC (робочої характеристики приймача), яка відображає це співвідношення. Потрібно максимально збільшити показник AUC – площу під кривою ROC.

У BigQuery ML можна виконати запит поля roc_auc для оцінки навченої моделі машинного навчання.

  • Навчання завершено. Тепер можна оцінити ефективність моделі прогнозування, виконавши наведений нижче запит за допомогою ML.EVALUATE.
SELECT roc_auc, CASE WHEN roc_auc > .9 THEN 'good' WHEN roc_auc > .8 THEN 'fair' WHEN roc_auc > .7 THEN 'not great' ELSE 'poor' END AS model_quality FROM ML.EVALUATE(MODEL ecommerce.classification_model, ( SELECT * EXCEPT(fullVisitorId) FROM # features (SELECT fullVisitorId, IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site FROM `data-to-insights.ecommerce.web_analytics` WHERE totals.newVisits = 1 AND date BETWEEN '20170501' AND '20170630') # eval on 2 months JOIN (SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid) USING (fullVisitorId) ));

Ви маєте отримати такий результат:

Row roc_auc model_quality
1 0.724588 not great

Отже, показник roc_auc вашої моделі дорівнює 0,72, тобто точність прогнозування недостатня. Оскільки цей показник потрібно максимально наблизити до 1,0, модель потребує оптимізації.

Завдання 6. Підвищити ефективність моделі за допомогою конструювання ознак

Як говорилося раніше, набір даних має багато ознак, за якими модель може краще зрозуміти зв’язок між першим відвідуванням сайту й імовірністю того, що покупець здійснить покупку під час наступних відвідувань.

Додайте кілька нових ознак і створіть другу модель машинного навчання під назвою classification_model_2.

  • До якого етапу оформлення замовлення відвідувач дійшов під час першого сеансу.
  • Як відвідувач потрапив на сайт (джерело трафіку: звичайний пошук, з іншого сайту тощо).
  • Категорія пристрою (мобільний телефон, планшет, комп’ютер).
  • Інформація про географічне місцеположення (країна).
  1. Створіть другу модель, виконавши наведений нижче запит.
CREATE OR REPLACE MODEL `ecommerce.classification_model_2` OPTIONS (model_type='logistic_reg', labels = ['will_buy_on_return_visit']) AS WITH all_visitor_stats AS ( SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid ) # add in new features SELECT * EXCEPT(unique_session_id) FROM ( SELECT CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id, # labels will_buy_on_return_visit, MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress, # behavior on the site IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site, totals.pageviews, # where the visitor came from trafficSource.source, trafficSource.medium, channelGrouping, # mobile or desktop device.deviceCategory, # geographic IFNULL(geoNetwork.country, "") AS country FROM `data-to-insights.ecommerce.web_analytics`, UNNEST(hits) AS h JOIN all_visitor_stats USING(fullvisitorid) WHERE 1=1 # only predict for new visits AND totals.newVisits = 1 AND date BETWEEN '20160801' AND '20170430' # train 9 months GROUP BY unique_session_id, will_buy_on_return_visit, bounces, time_on_site, totals.pageviews, trafficSource.source, trafficSource.medium, channelGrouping, device.deviceCategory, country ); Примітка. Цю модель потрібно навчати за допомогою тих самих даних за перші 9 місяців – так ви зможете переконатися, що ефективність моделі підвищилася завдяки правильно підібраним вихідним ознакам, а не через новий набір даних для навчання.

У запит навчального набору даних було додано нову ключову ознаку – етап оформлення замовлення, до якого дійшов відвідувач під час сеансу. Ці дані вказуються в полі hits.eCommerceAction.action_type. На сторінці з визначеннями полів наведено різні значення цього поля, де 6 = здійснення покупки.

Крім того, набір даних веб-аналітики включає вкладені поля та поля для повторного введення даних, як-от ARRAYS (МАСИВИ). Їх потрібно розбити на окремі рядки в наборі даних. Для цього можна використати функцію UNNEST(), як у наведеному вище запиті.

Навчання триватиме від 5 до 10 хвилин.

  1. Оцініть точність прогнозування нової моделі за допомогою наведеного нижче запиту.
#standardSQL SELECT roc_auc, CASE WHEN roc_auc > .9 THEN 'good' WHEN roc_auc > .8 THEN 'fair' WHEN roc_auc > .7 THEN 'not great' ELSE 'poor' END AS model_quality FROM ML.EVALUATE(MODEL ecommerce.classification_model_2, ( WITH all_visitor_stats AS ( SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid ) # add in new features SELECT * EXCEPT(unique_session_id) FROM ( SELECT CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id, # labels will_buy_on_return_visit, MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress, # behavior on the site IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site, totals.pageviews, # where the visitor came from trafficSource.source, trafficSource.medium, channelGrouping, # mobile or desktop device.deviceCategory, # geographic IFNULL(geoNetwork.country, "") AS country FROM `data-to-insights.ecommerce.web_analytics`, UNNEST(hits) AS h JOIN all_visitor_stats USING(fullvisitorid) WHERE 1=1 # only predict for new visits AND totals.newVisits = 1 AND date BETWEEN '20170501' AND '20170630' # eval 2 months GROUP BY unique_session_id, will_buy_on_return_visit, bounces, time_on_site, totals.pageviews, trafficSource.source, trafficSource.medium, channelGrouping, device.deviceCategory, country ) ));

Вивід:

Row roc_auc model_quality
1 0.910382 good

Показник roc_auc нової моделі дорівнює 0,91, тобто результат набагато кращий порівняно з першою моделлю.

Навчання моделі завершено, можна почати прогнозування.

Завдання 7. Спрогнозуйте, хто з нових відвідувачів повернеться, щоб здійснити покупку

Вам потрібно створити запит, щоб спрогнозувати, хто з нових відвідувачів повернеться та купить товар.

  • Виконайте наведений нижче запит: він використовує покращену модель класифікації, щоб спрогнозувати ймовірність того, що новий відвідувач Google Merchandise Store повернеться та здійснить покупку.
SELECT * FROM ml.PREDICT(MODEL `ecommerce.classification_model_2`, ( WITH all_visitor_stats AS ( SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid ) SELECT CONCAT(fullvisitorid, '-',CAST(visitId AS STRING)) AS unique_session_id, # labels will_buy_on_return_visit, MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress, # behavior on the site IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site, totals.pageviews, # where the visitor came from trafficSource.source, trafficSource.medium, channelGrouping, # mobile or desktop device.deviceCategory, # geographic IFNULL(geoNetwork.country, "") AS country FROM `data-to-insights.ecommerce.web_analytics`, UNNEST(hits) AS h JOIN all_visitor_stats USING(fullvisitorid) WHERE # only predict for new visits totals.newVisits = 1 AND date BETWEEN '20170701' AND '20170801' # test 1 month GROUP BY unique_session_id, will_buy_on_return_visit, bounces, time_on_site, totals.pageviews, trafficSource.source, trafficSource.medium, channelGrouping, device.deviceCategory, country ) ) ORDER BY predicted_will_buy_on_return_visit DESC;

Прогноз будується на основі даних із набору за останній із 12 місяців.

Модель згенерує прогнози для сеансів електронної комерції за липень 2017 року. Ви побачите три нових поля:

  • predicted_will_buy_on_return_visit: чи здійснить відвідувач покупку пізніше згідно з прогнозом моделі (1 = так);
  • predicted_will_buy_on_return_visit_probs.label: двійковий класифікатор для значень yes / no (так / ні);
  • predicted_will_buy_on_return_visit_probs.prob: упевненість моделі в прогнозі (1 = 100%).

Результати

  • Відвідувачів відсортовано за ймовірністю здійснення покупки в порядку спадання. Із 6% нових користувачів із верхньої частини списку понад 6% здійснюють покупку під час наступного відвідування.
  • Це майже 50% від загальної кількості нових відвідувачів, які роблять покупку під час наступного візиту.
  • Загалом таких нових відвідувачів лише 0,7%.
  • Націлювання на 6% нових відвідувачів у верхній частині списку збільшує рентабельність інвестицій у рекламу в 9 разів порівняно з націлюванням на всіх нових користувачів.

Додаткова iнформацiя

roc_auc – лише один із показників для оцінки ефективності моделі. Також можна використовувати показники точності, влучності й повноти. Вибір показника залежить від загальної мети.

Вітаємо!

Ви створили модель машинного навчання лише за допомогою SQL.

Завдання підвищеної складності

Підсумок

Під час двох попередніх завдань ви побачили, як можна підвищити ефективність моделі за допомогою конструювання ознак. Крім того, можна використовувати інші типи моделей. У BigQuery ML підтримуються наведені нижче типи моделей для класифікації даних.

Завдання

Завдяки конструюванню ознак модель на основі лінійної класифікації (логістичної регресії) працює ефективніше, проте вона може бути занадто простою, щоб повністю проаналізувати зв’язок між ознаками й міткою. Тепер потрібно створити класифікатор XGBoost, використовуючи мітки та набір даних із завдання 6 (створення моделі ecommerce.classification_model_2).

Примітка. Підказка. Скористайтеся наведеними нижче параметрами для класифікатора Boosted_Tree_Classifier.
1. L2_reg = 0,1.
2. num_parallel_tree = 8.
3. max_tree_depth = 10.

Точний синтаксис можна переглянути в документації за посиланнями вище. Навчання моделі триватиме близько 7 хвилин. Якщо виникнуть проблеми, перегляньте відповідь нижче.

Відповідь

Нижче наведено запит для створення класифікатора XGBoost.

CREATE OR REPLACE MODEL `ecommerce.classification_model_3` OPTIONS (model_type='BOOSTED_TREE_CLASSIFIER' , l2_reg = 0.1, num_parallel_tree = 8, max_tree_depth = 10, labels = ['will_buy_on_return_visit']) AS WITH all_visitor_stats AS ( SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid ) # add in new features SELECT * EXCEPT(unique_session_id) FROM ( SELECT CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id, # labels will_buy_on_return_visit, MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress, # behavior on the site IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site, totals.pageviews, # where the visitor came from trafficSource.source, trafficSource.medium, channelGrouping, # mobile or desktop device.deviceCategory, # geographic IFNULL(geoNetwork.country, "") AS country FROM `data-to-insights.ecommerce.web_analytics`, UNNEST(hits) AS h JOIN all_visitor_stats USING(fullvisitorid) WHERE 1=1 # only predict for new visits AND totals.newVisits = 1 AND date BETWEEN '20160801' AND '20170430' # train 9 months GROUP BY unique_session_id, will_buy_on_return_visit, bounces, time_on_site, totals.pageviews, trafficSource.source, trafficSource.medium, channelGrouping, device.deviceCategory, country );

Перевірмо ефективність моделі.

#standardSQL SELECT roc_auc, CASE WHEN roc_auc > .9 THEN 'good' WHEN roc_auc > .8 THEN 'fair' WHEN roc_auc > .7 THEN 'not great' ELSE 'poor' END AS model_quality FROM ML.EVALUATE(MODEL ecommerce.classification_model_3, ( WITH all_visitor_stats AS ( SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid ) # add in new features SELECT * EXCEPT(unique_session_id) FROM ( SELECT CONCAT(fullvisitorid, CAST(visitId AS STRING)) AS unique_session_id, # labels will_buy_on_return_visit, MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress, # behavior on the site IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site, totals.pageviews, # where the visitor came from trafficSource.source, trafficSource.medium, channelGrouping, # mobile or desktop device.deviceCategory, # geographic IFNULL(geoNetwork.country, "") AS country FROM `data-to-insights.ecommerce.web_analytics`, UNNEST(hits) AS h JOIN all_visitor_stats USING(fullvisitorid) WHERE 1=1 # only predict for new visits AND totals.newVisits = 1 AND date BETWEEN '20170501' AND '20170630' # eval 2 months GROUP BY unique_session_id, will_buy_on_return_visit, bounces, time_on_site, totals.pageviews, trafficSource.source, trafficSource.medium, channelGrouping, device.deviceCategory, country ) ));

Показник roc_auc виріс майже на 0,02 і сягнув 0,94!

Примітка. Через випадковий характер навчання ви можете отримати інші значення.

Показник roc_auc змінився несуттєво, проте що ближче до максимального значення (1), то важче його покращувати.

Це чудовий приклад того, що в BigQuery ML можна легко перевірити ефективність різних типів моделей із різноманітними параметрами. Ми зробили модель значно складнішою, просто змінивши один рядок у коді SQL.

Щоб підібрати правильні параметри, потрібно експериментувати. Спочатку випробуйте різні моделі, щоб підібрати оптимальну, а потім поекспериментуйте з різними наборами параметрів (цей процес називається налаштуванням гіперпараметрів).

Тепер згенеруймо прогноз за допомогою покращеної моделі, щоб порівняти його з попередніми показниками. За допомогою моделі типу покращене дерево рішень можна підвищити показник ROC AUC на 0,2. Нижче наведено запит, за яким можна спрогнозувати, хто з нових відвідувачів повернеться, щоб здійснити покупку.

SELECT * FROM ml.PREDICT(MODEL `ecommerce.classification_model_3`, ( WITH all_visitor_stats AS ( SELECT fullvisitorid, IF(COUNTIF(totals.transactions > 0 AND totals.newVisits IS NULL) > 0, 1, 0) AS will_buy_on_return_visit FROM `data-to-insights.ecommerce.web_analytics` GROUP BY fullvisitorid ) SELECT CONCAT(fullvisitorid, '-',CAST(visitId AS STRING)) AS unique_session_id, # labels will_buy_on_return_visit, MAX(CAST(h.eCommerceAction.action_type AS INT64)) AS latest_ecommerce_progress, # behavior on the site IFNULL(totals.bounces, 0) AS bounces, IFNULL(totals.timeOnSite, 0) AS time_on_site, totals.pageviews, # where the visitor came from trafficSource.source, trafficSource.medium, channelGrouping, # mobile or desktop device.deviceCategory, # geographic IFNULL(geoNetwork.country, "") AS country FROM `data-to-insights.ecommerce.web_analytics`, UNNEST(hits) AS h JOIN all_visitor_stats USING(fullvisitorid) WHERE # only predict for new visits totals.newVisits = 1 AND date BETWEEN '20170701' AND '20170801' # test 1 month GROUP BY unique_session_id, will_buy_on_return_visit, bounces, time_on_site, totals.pageviews, trafficSource.source, trafficSource.medium, channelGrouping, device.deviceCategory, country ) ) ORDER BY predicted_will_buy_on_return_visit DESC;

Результат свідчить, що наявна модель класифікації точніше прогнозує ймовірність того, чи повернеться новий відвідувач Google Merchandise Store, щоб здійснити покупку. Порівнявши отримані показники з моделлю із завдання 7, можна зробити висновок, що поточна модель здійснює точніше прогнозування, ніж модель типу logistic_regression.

Завершіть завдання

Закінчивши виконувати завдання, натисніть кнопку End Lab (Завершити завдання). Google Cloud Skills Boost вилучить використані ресурси й очистить обліковий запис.

Ви зможете оцінити, наскільки вам сподобалося виконувати завдання на платформі. Виберіть потрібну кількість зірочок, введіть коментар і натисніть Submit (Надіслати).

Кількість зірочок відповідає певній оцінці:

  • 1 зірочка = зовсім не сподобалося
  • 2 зірочки = не сподобалося
  • 3 зірочки = не можу сказати напевно
  • 4 зірочки = сподобалося
  • 5 зірочок = дуже сподобалося

Якщо ви не хочете надсилати відгук, просто закрийте діалогове вікно.

Залишайте свої відгуки, пропозиції або коментарі на вкладці Support (Підтримка).

© Google LLC 2022. Усі права захищено. Назва та логотип Google є торговельними марками Google LLC. Усі інші назви компаній і продуктів можуть бути торговельними марками відповідних компаній, з якими вони пов’язані.

Назад Далі

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

This content is not currently available

We will notify you via email when it becomes available

Great!

We will contact you via email if it becomes available

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.
Попередній перегляд