Подготовка данных лежит в основе хорошей модели машинного обучения (ML), но получение правильных данных может занять время. Много времени! Не бойся.

Чтобы помочь передать некоторые знания и упростить ваш процесс, моя команда и я опубликовали код для поддержки, ускорения и, возможно, даже улучшения того, как вы строите модели машинного обучения, такие как модели склонности, модели ценности времени жизни клиентов, рекомендательные системы ... и Т. Д.

Очень горжусь работой, которую Дэвид, Кэти и Рукшан вложили в разработку этого решения и сделали его возможным.

Поехали!

Под капотом кода используется Google Cloud Dataflow для запуска конвейеров Apache Beam и Google Cloud BigQuery для чтения и сохранения. Мощные и быстрые способы преобразования большого объема данных в формате, готовом для машинного обучения.

Мы оптимизировали код для включения в таблицу Google Analytics BigQuery, но при необходимости мы также можем подключить ее к другим источникам данных BigQuery. Введите свою таблицу BigQuery, запустите конвейеры и - вуаля - выведите новую таблицу BigQuery со структурированными функциями и метками. Готовы обучать модель машинного обучения с помощью вашего любимого инструмента машинного обучения, такого как AutoML-Tables, BigQuery ML, Tensorflow, Python sklearn… и т. Д.

Хотите нырнуть прямо сейчас? Действуй…

или, если вы задержитесь со мной на несколько минут, понимание того, как конвейеры Flux Capacitor структурируют данные, важно для понимания их ценности. Я попытался объяснить эту технику своему товарищу, не обладающему техническими знаниями (ура), и поэтому решил опубликовать то, что я придумал здесь, как более неофициальное - надеюсь, более интересное - объяснение.

Почему именно флюсовый конденсатор?

Наше официальное название проекта - ML Data Windowing Pipeline. Тем не менее, всему нужно забавное название, и поскольку мы структурируем данные для предсказания будущего на основе того, что произошло в прошлом, Flux Capacitor кажется подходящим. Именно данные делают «путешествия во времени возможными» 🧀. Хорошо, если отбросить глупость, позвольте мне объяснить, что она делает.

«Док» Браун хочет купить машину

Давайте возьмем одного случайного человека и назовем этого человека Доком. В этом примере Док покупает новую машину на нашем веб-сайте.

На нашем автомобильном веб-сайте настроена Google Analytics, что позволяет нам записывать и просматривать действия в Интернете. Напомним, что на самом деле мы смотрим только на анонимные показатели (мы используем ссылку на Документ для развлечения).

Это временная шкала, представляющая действие, с синими полями, указывающими взаимодействия, ведущие к событию покупки. У каждого взаимодействия есть ряд показателей, которые мы можем взять из Google Analytics, например: браузер, время суток, посещенные страницы, количество посещений… и т. д.

Давайте посмотрим на детали на этой шкале времени из снимка времени и назовем этот снимок date d.

Теперь, что касается date d, мы можем начать оглядываться в прошлое на определенный период времени и агрегировать информацию о сеансе Doc вместе. Этот определенный период времени называется окном ретроспективного анализа.

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

Затем, начиная с нашей даты d, мы смотрим в будущее на указанный промежуток времени и называем это окном прогнозирования.

Итак, что касается данных, если покупка произошла в окне прогноза, соответствующем d ate d, то это произошло в d ate d . Другими словами, метка зависит от того, произошло ли событие покупки во время окна прогноза.

Это ключ здесь, поэтому наша модель обучается тому, что произойдет в будущем, и, соответственно, как это предсказать.

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

После того как мы извлечем функции и метку для документа - нашего анонимного пользователя - в отношении d ate d, у нас будет строка в таблице, которая выглядит следующим образом:

Затем мы делаем эти снимки для всех пользователей веб-сайта в отношении приема.

и итоговая таблица начинает выглядеть так:

Затем мы перемещаем нашу дату d на заданное скользящее окно с интервалом w (например, день, неделя и т. Д.), Чтобы своевременно создавать больше снимков для всех пользователей в относительно d + w, d + 2w… и так далее.

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

«Великий Скотт!»

Результат. Мощный (и большой) набор данных, готовый для обучения вашей модели машинного обучения.

Последнее, что нужно помнить, - это стоимость. Простой запуск кода конвейера управления окнами данных машинного обучения с использованием, скажем, набора данных Google Analytics Sample, должен быть минимальным. Однако производственные затраты будут зависеть от размера ваших данных. Конвейер был разработан так, чтобы быть максимально эффективным, но все же обратите внимание на Руководство по ценообразованию Google Cloud Dataflow и Калькулятор цен на Google Cloud Platform, чтобы убедиться, что нет никаких сюрпризов.

Я надеюсь, что это было полезно, и мы хотели бы прочитать в разделе комментариев, как вы это применили.

PS. Приносим извинения, если вы никогда не смотрели фильм «Назад в будущее»! поскольку многие из этих аналогий / изображений могут показаться немного случайными.