Вариант использования Склонность к покупке широко применим во многих отраслях, таких как розничная торговля, финансы и другие. В этой статье мы покажем вам, как построить комплексное решение с использованием BigQuery ML и Kubeflow Pipelines (KFP, инструмент рабочего процесса Machine Learning Operations (MLOps)) с использованием набора данных Google Analytics для определения какие клиенты склонны покупать. Вы можете использовать решение для охвата целевых клиентов в офлайн-кампании по электронной почте или почтовым каналам. Вы также можете использовать его в онлайн-кампании с помощью оперативного решения, когда клиент просматривает ваши продукты на вашем веб-сайте, чтобы рекомендовать некоторые продукты или инициировать персонализированное электронное письмо для клиента.

Склонность к покупке варианта использования - это подмножество варианта использования персонализации. Это ключевой фактор того, сколько организаций сегодня занимается маркетингом. В сегодняшние меняющиеся времена вам необходимо убедиться, что вы нацеливаете нужные сообщения на нужных клиентов в нужное время. Масштабная персонализация может принести от 1,7 до 3 триллионов долларов новой стоимости (исследование McKinsey). Моделирование предрасположенности помогает компаниям идентифицировать этих правильных клиентов и потенциальных клиентов, которые с высокой вероятностью приобретут конкретный продукт или услугу.

Модели предрасположенности важны, поскольку они представляют собой механизм для нацеливания продаж с помощью персонализированных сообщений, поскольку они являются ключом к успеху в привлечении внимания клиентов. Используя модель склонности к покупке, вы можете более эффективно ориентироваться на клиентов, которые с наибольшей вероятностью купят определенные продукты.

Оглавление

Типичная архитектура сквозного решения и этапы реализации

Вы выберете функции, создадите метку (которая сообщит вам, имеет ли клиент склонность к покупке), построите модель, спрогнозируйте пакетную / онлайн-версию в BigQuery с помощью BigQuery ML. BigQuery ML позволяет создавать и выполнять модели машинного обучения в BigQuery с помощью стандартных запросов SQL. Это означает, что вам не нужно экспортировать данные для обучения и развертывания моделей машинного обучения - при обучении вы также выполняете развертывание на том же этапе. В сочетании с автоматическим масштабированием вычислительных ресурсов BigQuery вам не придется беспокоиться о развертывании кластера или построении конвейера обучения и развертывания моделей. Это означает, что вы сэкономите время, создавая конвейер машинного обучения, что позволит вашему бизнесу больше сосредоточиться на ценности машинного обучения вместо того, чтобы тратить время на настройку инфраструктуры.

Чтобы автоматизировать этот процесс построения модели, вы будете оркестровать конвейер с помощью Kubeflow Pipelines, платформы для создания и развертывания переносимых масштабируемых рабочих процессов машинного обучения (ML) на основе контейнеров Docker.

Ниже показано, как работает все решение:

Решение включает следующие шаги:

  1. Определите источник данных с историей покупок прошлых клиентов и загрузите данные в BigQuery.
  2. Подготовьте данные для задач машинного обучения (ML).
  3. Постройте модель машинного обучения, которая определяет склонность клиента к покупке.
  4. Присоединяйтесь к данным клиента с помощью CRM-системы, чтобы собрать сведения о клиенте (например, идентификатор электронной почты и т. Д.)
  5. Определите, какой продукт (ы) мы должны рекомендовать покупателю.
  6. Запустите канальную кампанию с указанными выше данными
  7. Управляйте жизненным циклом общения с клиентами (например, по электронной почте) в CRM или аналогичной системе.
  8. Уточните жизненную ценность клиента на основе результатов кампании
  9. Следите за моделями, чтобы убедиться, что они соответствуют ожиданиям
  10. При необходимости переобучите модель на основе нового или исправленного набора данных.

Теперь мы собираемся подробно обсудить шаги ниже. Также имеется прилагаемый блокнот, в котором реализуются первые 3 шага решения.

Определите источник данных с историей покупок прошлых клиентов и загрузите его в BigQuery.

Где находятся ваши данные? Определите лучшие методы предварительной обработки для передачи данных в BigQuery. Вы можете автоматизировать предварительную обработку в конвейере MLOps, что вы увидите позже в статье. Набор данных, который вы собираетесь использовать, размещен на BigQuery и предоставляет за 12 месяцев (с августа 2016 г. по август 2017 г.) обфусцированные данные Google Analytics 360 из Google Merchandise Store, реального магазина электронной коммерции, который продает товары под брендом Google.

Вот пример некоторых необработанных данных из Google Analytics:

Подготовьте данные для задач машинного обучения

Теперь, когда вы определили набор данных, вы начинаете готовить данные для разработки модели машинного обучения. Выберите соответствующие функции и метки, если вы хотите использовать обучение с учителем. В этой статье вы будете использовать несколько функций в демонстрационных целях.

Приведенный ниже запрос создаст обучающие данные, функции (`bounces`,` time_on_site`) и метку (`will_buy_on_return_visit`), которые вы будете использовать для построения вашей модели позже:

## follows schema from https://support.google.com/analytics/answer/3437719?hl=en&ref_topic=3416089
 
# select initial features and label to feed into your model
CREATE 
OR REPLACE TABLE bqml.rpm_ds.rpm_ds_propensity_training_samples_tbl OPTIONS(
  description = "Google Store curated Data"
) AS 
SELECT 
  fullVisitorId, 
  bounces, 
  time_on_site, 
  will_buy_on_return_visit # <--- your label
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 
      `bigquery-public-data.google_analytics_sample.*` 
    GROUP BY 
      fullvisitorid
  ) USING (fullVisitorId) 
ORDER BY 
  time_on_site DESC # order by most time spent first

Ниже приведен частичный результат выполнения вышеуказанного запроса:

Постройте модель машинного обучения, чтобы определить, что определяет склонность клиента к покупке.

Какой тип модели мы должны использовать? Какие все функции использовать? Какой должен быть установлен гиперпараметр для модели? Это типичные задачи специалистов по данным.

Вам необходимо определить, есть ли у покупателя склонность к покупке. Следовательно, это задача классификации. Одна из часто используемых классификационных моделей - это логистическая регрессия. Вы построите логистическую регрессию с помощью BigQuery ML.

Запрос ниже создаст модель:

CREATE 
OR REPLACE MODEL `rpm_ds.rpm_bqml_model` OPTIONS(
  MODEL_TYPE = 'logistic_reg', labels = [ 'will_buy_on_return_visit' ]
) AS 
SELECT 
  * 
EXCEPT 
  (fullVisitorId) 
FROM 
  `bqml.rpm_ds.rpm_ds_propensity_training_samples_tbl`

После создания модели вы можете проверить, насколько хорошо модель работает на основе определенных правил. Мы приняли некоторые практические рекомендации (например, ROC-AUC ›0.9), но вы можете изменить их в зависимости от ваших конкретных потребностей.

Приведенный ниже запрос оценит модель для проверки ожидаемого ROC AUC:

SELECT 
  roc_auc, 
  CASE WHEN roc_auc >.9 THEN 'good' WHEN roc_auc >.8 THEN 'fair' WHEN roc_auc >.7 THEN 'decent' WHEN roc_auc >.6 THEN 'not great' ELSE 'poor' END AS modelquality 
FROM 
  ML.EVALUATE(MODEL `rpm_ds.rpm_bqml_model`)

Выполнение запроса дает следующий результат:

Вы действительно думаете, что нам удалось построить хорошую модель? Хм… скорее всего, нет… Потому что ROC_AUC в 78% считается справедливым баллом. Для построения модели Google требуются обширные знания предметной области, настройка гиперпараметров, разработка функций и т. Д. Это не лучшая модель, которую вы могли создать, но она дает вам основу. Поскольку целью данной статьи является создание сквозного конвейера, а не производительность модели, точная настройка модели выходит за рамки данной статьи.

Обученная модель может помочь вам связаться с вашими клиентами в офлайн-кампании или в онлайн-кампании. Мы будем использовать пакетное прогнозирование для первого и онлайн-прогноз для последующего.

Вы можете использовать обученную модель для пакетного прогнозирования большого набора данных в BigQuery. Или вы можете развернуть модель в Google Cloud AI Platform для онлайн-прогнозирования.

Использовать пакетный прогноз для офлайн-кампании

Для сценария автономной кампании вы можете выполнять асинхронное пакетное прогнозирование для большого набора данных. Давайте посмотрим, как делать прогнозирование партии. Вы можете создать таблицу в BigQuery и вставить все свои входные данные, для которых вы хотите спрогнозировать. Вы создадите таблицу `rpm_ds_propensity_prediction_input_tbl` в BigQuery, в которой каждая строка будет отображаться как один клиент с функциями отказов и time_on_site. Затем используйте обученную модель для прогнозирования всех входных данных / строк.

Запрос ниже показывает пакетный прогноз:

# predict the inputs (rows) from the input table
SELECT 
fullVisitorId, predicted_will_buy_on_return_visit
FROM
ML.PREDICT(MODEL rpm_ds.rpm_bqml_model,
(
    SELECT
    fullVisitorId, 
    bounces,
    time_on_site
    from bqml.rpm_ds.rpm_ds_propensity_prediction_input_tbl
))

Ниже приведен частичный результат выполнения вышеуказанного запроса:

В приведенных выше выходных данных модель предсказала, что эти четыре клиента имеют склонность к совершению покупки, поскольку «predicted_will_buy_on_return_visit» возвращает 1.

Считаете ли вы, что модель предсказывает, что каждый из перечисленных выше клиентов будет склонен к покупке? Может быть. Чтобы быть уверенным, нужно копать глубже. Вы можете проверить функции, параметры, порог (который равен 0,5 по умолчанию в приведенном выше ML.PREDICT) и т. Д., Чтобы настроить модель.

Используйте онлайн-прогноз для интернет-кампании

Для сценария онлайн-кампании нам необходимо развернуть модель в Cloud AI Platform. Это двухэтапный процесс. Во-первых, вам нужно экспортировать модель, а затем развернуть ее на облачной платформе AI, которая предоставляет конечную точку REST для обслуживания онлайн-прогнозов.

Ниже представлена ​​команда для экспорта модели BiqQuery ML в Google Cloud Storage:

# export the model to a Google Cloud Storage bucket
bq extract -m rpm_ds.rpm_bqml_model gs://bqml_sa/rpm_data_set/bqml/model/export/V_1

Во-вторых, вам необходимо развернуть экспортированную модель в Cloud AI Platform Prediction, где размещается ваша обученная модель, чтобы вы могли отправлять ей запросы на прогноз.

Ниже приведена команда для развертывания модели в Cloud AI Platform Prediction:

# export the model to a Google Cloud Storage bucket
# deploy the above exported model
gcloud ai-platform versions create --model=rpm_bqml_model V_1        --framework=tensorflow --python-version=3.7 --runtime-version=1.15        --origin=gs://bqml_sa/rpm_data_set/bqml/model/export/V_1/ --staging-bucket=gs://bqml_sa

Теперь вы можете делать прогнозы онлайн с помощью веб-запроса / ответа. Вы можете использовать конечную точку в своем веб-приложении, чтобы выполнять точечные действия, такие как отображение персонализированного контента или запуск асинхронного процесса, такого как отправка персонализированного электронного письма или открытки. Ниже приведена команда, с помощью которой вы можете быстро проверить онлайн-прогноз:

# Perform online predict (create a input table with the input features)
# create a json file (input.json) with the below content
{"bounces": 0, "time_on_site": 7363}
 
# use the above json to predict
gcloud ai-platform predict --model rpm_bqml_model --version V_1 --json-instances input.json

Выполнение команды дает результат, подобный следующему:

Predicted results for {"bounces": 0, "time_on_site": 7363} is PREDICTED_WILL_BUY_ON_RETURN_VISIT  WILL_BUY_ON_RETURN_VISIT_PROBS             WILL_BUY_ON_RETURN_VISIT_VALUES
['1']                               [0.9200436491721313, 0.07995635082786867]  ['1', '0']

В приведенных выше выходных данных модель предсказала, что этот конкретный покупатель имеет склонность к покупке, поскольку `PREDICTED_WILL_BUY_ON_RETURN_VISIT` возвращает 1. Учитывая этот тест на отказов« 0 »и« 7363 секунды »на time_ont_site, модель сообщает нам, что существует 92% шанс, что у них есть склонность к покупке. Используя эту информацию, вы можете затем отправить покупателю купон (или, возможно, вы хотите раздавать купоны только людям с вероятностью от 0,5 до 0,8, потому что, если высока вероятность, они могут приобрести товар без стимулов).

Конечно, вам не обязательно использовать только gcloud, вы, безусловно, можете использовать свои любимые инструменты (wget, curl, postman и т. Д.), Чтобы быстро проверить конечную точку REST.

Объедините данные о клиентах с помощью CRM-системы, чтобы собрать данные о клиентах

Таким образом, теперь мы можем предсказать, будет ли покупатель совершать покупки в пакетном или онлайн-режиме. Что теперь? Что ж, мы используем fullvisitorid в наборе данных. Нам потребуются сведения о клиенте, например адрес электронной почты, потому что в вашем наборе данных их нет. Идея состоит в том, чтобы собрать их из системы управления взаимоотношениями с клиентами (CRM). Таким образом, для достижения цели нам необходимо интегрироваться с CRM-системой.

Вы получите представление об интеграции здесь. В статье рассказывается о том, как интегрировать интеграцию Google Analytics 360 с Salesforce Marketing Cloud. Интеграция позволяет публиковать аудитории, созданные в Analytics 360, в Marketing Cloud и использовать эти аудитории в своих кампаниях прямого маркетинга Salesforce по электронной почте и SMS. Вам нужно будет определить подходящий механизм интеграции на основе вашей CRM-платформы.

В прилагаемой записной книжке этот шаг не реализован.

Остальные шаги решения

Остальные шаги в решении не требуют пояснений, хотя интеграция и взаимодействие систем может оказаться нетривиальной задачей. Но, что ж, это постоянная проблема в жизненном цикле разработки программного обеспечения в целом, не так ли? Вы также можете ознакомиться с некоторыми рекомендациями, поскольку следующие возможные шаги будут продолжаться на основе существующего решения.

ML конвейер

Теперь вы собираетесь построить конвейер машинного обучения для автоматизации шагов 1, 2 и 3 решения. Остальные шаги оставлены либо для тематической статьи, либо в качестве упражнения для читателя. Мы собираемся использовать Kubeflow Pipelines (KFP) и использовать управляемый KFP, Cloud AI Platform Pipelines в Google Cloud.

Ниже представлено визуальное представление шагов решения, которые доступны в записной книжке Jupyter в репозитории git:

Ниже представлено визуальное представление шагов решения, основанных на текущей реализации. В записной книжке не выполняются следующие действия:

Три ссылки на диаграммах выше:

  • Обратитесь к статье, чтобы получить представление о том, как использовать прогнозируемых клиентов, которые имеют склонность к совершению покупок с помощью CRM-системы.
  • Обратитесь к статье, чтобы получить представление о том, как можно использовать матричную факторизацию для рекомендации продукта. В статье также упоминается записная книжка. В статье используется тот же общедоступный набор данных BigQuery, который вы использовали в текущей статье.
  • Обратитесь к Главе 6« Часто используемые наборы данных » книги Mining of Massive Datasets, написанной профессором Стэнфордского университета, чтобы получить представление о том, как создать список часто используемых продуктов.

Ниже приведен вывод Cloud AI Platform Pipelines при запуске эксперимента KFP с ноутбука. Когда вы проведете эксперимент, ваш результат может отличаться:

Каждое поле представляет собой компонент KFP. Вы можете обратиться к записной книжке за семантикой, синтаксисом, передачей параметров в функции и т. Д. Записная книжка демонстрирует следующие возможности:

* Environment Setup
    - Setup Cloud AI Platform Pipelines (using the CloudConsole)
    - Install KFP client
    - Install Python packages for Google Cloud Services
* Kubeflow Pipelines (KFP) Setup
    - Prepare Data for the training
        -- Create/Validate a Google Cloud Storage Bucket/Folder
        -- Create the input table in BigQuery
    - Train the model
    - Evaluate the model
    - Prepare the Model for batch prediction
        -- Prepare a test dataset (a table)
        -- Predict the model in BigQuery
    - Prepare the Model for online prediction
    - Create a new revision (for model revision management)
        -- Export the BigQuery Model
        -- Export the Model from BigQuery to Google Cloud Storage
        -- Export the Training Stats to Google Cloud Storage
        -- Export the Eval Metrics to Google Cloud Storage
    - Deploy to Cloud AI Platform Prediction
    - Predict the model in Cloud AI Platform Prediction
* Data Exploration using BigQuery, Pandas, matplotlib
* SDLC methodologies Adherence (opinionated)
    - Variables naming conventions
        -- Upper case Names for immutable variables
        -- Lower case Names for mutable variables
        -- Naming prefixes with rpm_ or RPM_
    - Unit Tests
    - Cleanup/Reset utility functions
* KFP knowledge share (demonstration)
    - Pass inputs params through function args
    - Pass params through pipeline args
    - Pass Output from one Component as input of another
    - Create an external Shared Volume available to all the Comp
    - Use built in Operators
    - Built light weight Component
    - Set Component not to cache

Следующие шаги

Существует ряд улучшений или альтернатив, которые вы можете использовать для своего конкретного случая использования.

Альтернативные источники данных для входных данных прогнозирования

Вы также можете использовать объединенный источник данных, если он вам подходит.

Альтернативные модели

В этой статье мы использовали логистическую регрессию, но вы можете использовать XGBoost или другие. Вы также можете обучить несколько моделей параллельно, а затем оценить, чтобы решить, какая модель лучше подходит для вашего сценария. Вы можете сделать это в конвейере MLOps и позволить BigQuery сделать за вас тяжелую работу по выполнению вычислений, необходимых для обучения моделей.

Конечная точка онлайн-прогнозирования

Теперь, когда у вас есть конечная точка для онлайн-прогнозов, вы можете опубликовать API для своего веб-разработчика и / или отслеживать его использование. Вы можете использовать Google Apigee, платформу управления API, для этого и многого другого.

Определите, какой продукт (ы) мы должны рекомендовать покупателю.

После того, как мы определим, какие клиенты склонны к покупке, нам нужно выяснить, какие продукты мы должны им порекомендовать. Мы могли бы запустить кампанию, которая использует персонализированные сообщения для целевой клиентской базы. Однако в прилагаемой записной книжке этот шаг не реализован.

Существует множество подходов к определению продуктов, которые мы должны рекомендовать покупателю. В качестве отправной точки вы можете использовать либо метод матричной факторизации, либо метод MarketBasket FrequentItemSet.

Модель MarketBasket также может предоставлять онлайн-модель прогнозирования с отслеживанием состояния, то есть, когда покупатель просматривает (или любое аналогичное действие, такое как добавление в корзину) продукта A, вы можете порекомендовать следующий продукт B и так далее. Вы можете встроить аналитику в свое веб-приложение, чтобы лучше понимать намерения клиента. В качестве иллюстрации, если кто-то покупает подгузник, вы можете порекомендовать ему купить пиво (на основании интересного открытия, пожалуйста, обратитесь к справочному материалу главы 6 ниже для получения дополнительной информации). Или, если покупатель добавил почву для растений в свою тележку, вы мог бы порекомендовать им растительную пищу. Чем лучше вы узнаете о намерениях клиента, тем точнее сможете порекомендовать другие подходящие продукты. Выбор бесконечен ...

Резюме

Поздравляю! Теперь вы узнали, как построить модель Propensity с помощью BigQuery ML и как организовать конвейер машинного обучения в Kubeflow Pipelines. Вы можете продолжить работу над текущим решением для полной активации, но вы можете использовать записную книжку в качестве отправной точки.

Хочу больше?

Пожалуйста, оставьте мне свои комментарии с любыми предложениями или исправлениями.

Я работаю в Google Cloud. Я помогаю нашим клиентам создавать решения в Google Cloud.