Урок и практика машинного обучения в Google Cloud Labs
Привет, это моя первая работа с моделью машинного обучения для прогнозирования вещей. Я мало знаком с термином ML, за исключением (Logistic Reg, Classification). Итак, это будет одним из моих вызовов и хорошей управляемой практикой, поскольку мне нужно исследовать управляемый проект.
Однако я надеюсь, что это упражнение даст мне общее представление о том, как используется машинное обучение.
Итак, поехали ( Т_Т )
Введение
BigQuery ML (машинное обучение BigQuery) — это функция BigQuery, с помощью которой мы можем создавать, обучать, оценивать и прогнозировать модели машинного обучения с минимальным кодированием. Это подойдет для тех, кто знаком с SQL и имеет данные в Bigquery.
Цели
В этой лабораторной работе вы научитесь выполнять следующие задачи:
- Используйте BigQuery для поиска общедоступных наборов данных
- Запрашивайте и изучайте набор данных электронной торговли
- Создайте набор данных для обучения и оценки, который будет использоваться для пакетного прогнозирования.
- Создание модели классификации (логистической регрессии) в BigQuery ML
- Оцените производительность вашей модели машинного обучения
- Прогнозировать и ранжировать вероятность того, что посетитель совершит покупку
Набор данных:
Образец Google Analytics Набор данных электронной торговли, содержащий миллионы записей Google Analytics для Google Merchandise Store.
Запрашивающая фраза
Используйте эти данные для выполнения некоторых типичных запросов, которые компании хотели бы знать о покупательских привычках своих клиентов.
- Общее количество посещений веб-сайта?
- Процент покупки (коэффициент конверсии) ?
- Сколько посетителей лайкают в течение определенного периода
- Демографический обзор
- Доход и 10 лучших продуктов
Настраивать
- Перейдите в Bigquery, а затем откройте проект data-to-insights (+Добавить данные и пометить проект по имени).
Теперь мы готовы изучить данные с помощью SQL в панели редактора, чтобы увидеть и проверить, выполнить некоторые из описательных анализов.
- Всего посещений на сайте
- Процент покупки (коэффициент конверсии)
- Сколько посетителей лайкают в течение определенного периода
- Демографический обзор
1. Изучите данные электронной торговли
-- standard SQL -- Create CTE stored visitors number WITH visitors AS ( SELECT COUNT(DISTINCT fullVisitorId) AS total_visitors FROM `data-to-insights.ecommerce.web_analytics` ), -- Create CTE stored purchasers number 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
Покупка продуктов Topten
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 10 ;
Сколько посетителей купили при последующих посещениях веб-сайта?
# 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
Выберите функции и создайте набор данных для обучения
Машинное обучение настолько хорошо, насколько хороши обучающие данные, которые в него вводятся. Если модели недостаточно информации, чтобы определить и изучить взаимосвязь между вашими входными функциями и вашим ярлыком (в данном случае, купил ли посетитель в будущем), то у вас не будет точной модели. Хотя обучение модели только по этим двум полям — это начало, вы увидите, достаточно ли они хороши для создания точной модели.
-- features 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;
Функции, которые будут использоваться: отказы и время_на_сайте.
Ярлык: will_buy_on_return_visit
Создайте набор данных BigQuery для хранения моделей
Мы создадим набор данных BigQuery для хранения моделей
- На левой панели нажмите на название своего проекта, затем нажмите на значок
View action
(три точки) и выберите Создать набор данных. - Идентификатор набора данных: электронная торговля
- Нажмите Создать набор данных.
Выберите тип модели BigQuery ML и укажите параметры.
На выбор предлагается два типа моделей:
Модель:прогнозирование
Тип модели:linear_reg
Метка Тип данных:Числовое значение (обычно целое число или число с плавающей запятой)
Пример. Прогноз объемов продаж на следующий год с учетом исторических данных о продажах.
Модель:Классификация
Тип модели:logistic_reg
Метка Тип данных:0 или 1 для бинарной классификации
Пример. Классифицировать электронное письмо как спам или не спам в зависимости от контекста.
В этом случае нам нужно предсказать, вернется ли клиент и купит или нет, модель, которая будет соответствовать этому вопросу, должна быть Модель классификации (Да, Нет)
- Давайте создадим модель и сохраним модель с помощью SQL.
-- classification model 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) ;
2. Пробег для тренировки модели (5–10 мин)
- После обучения модели появится всплывающее сообщение
- Нажмите Перейти к модели.
И мы оценим модель, чтобы увидеть ее производительность
Оцените производительность модели классификации
Для задач классификации в машинном обучении необходимо свести к минимуму коэффициент ложных срабатываний (предсказать, что пользователь вернется и совершить покупку, а они этого не сделают) и максимизировать коэффициент истинных срабатываний (предполагаем, что пользователь вернется и купит, и он это сделает).
Эта взаимосвязь визуализируется с помощью кривой ROC (рабочей характеристики приемника), подобной показанной здесь, где вы пытаетесь максимизировать площадь под кривой или AUC:
В BigQuery ML roc_auc — это просто запрашиваемое поле при оценке обученной модели ML.
- Теперь, когда обучение завершено, вы можете оценить, насколько хорошо работает модель, выполнив этот запрос с использованием
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) ));
После оценки вашей модели вы получаете roc_auc 0,72, что показывает, что модель не обладает большой прогностической силой. Поскольку цель состоит в том, чтобы максимально приблизить площадь под кривой к 1,0, есть возможности для улучшения.
Увидев это, следующая задача заключается в поиске функций для улучшения модели, которые я (пытаюсь) найти другие эффективные функции, чтобы попробовать.
Таким образом, в этом разделе мы использовали Bigquery ML, написав SQL для хранения модели и ее обучения. Biqquery ML — действительно отличный инструмент для использования в машинном обучении. Тем не менее, это лучше всего подходит для людей, знакомых с кодированием, если вы знакомы с SQL, то это выбор.
Vertex AI также имеет функцию Auto ML для всех, кто не знаком с кодированием, простой шаг к обучению, оценке, развертыванию и прогнозированию модели. В следующей статье я буду использовать Auto ML для Vertex AI (Простая практика 1).
Благодарим вас за посещение. Если у кого-то из вас есть отличный источник знаний об ML, поделитесь им.
Ваше здоровье! :)