Используйте интегрированное машинное обучение с открытым исходным кодом в MindsDB и платформу интеграции данных с открытым исходным кодом Airbyte для прогнозирования показателей магазина Shopify.

Поскольку объем данных растет в геометрической прогрессии, для предприятий, ориентированных на электронную коммерцию, критически важно использовать эти данные как можно быстрее и эффективнее. Машинное обучение представляет собой прорыв в увеличении возможностей прогнозирования и принятия человеческих решений в таких случаях, как оптимизация цены, ассортимента и цепочки поставок, управление запасами, управление доставкой и поддержка клиентов. В этом практическом руководстве мы предоставим пошаговые инструкции, показывающие, как просто и недорого интегрировать машинное обучение в существующую учетную запись Shopify с помощью Airbyte, платформы интеграции данных с открытым исходным кодом, и MindsDB. , AutoML-фреймворк с открытым исходным кодом, который работает поверх любой базы данных.

Наш гид будет состоять из двух частей:

  1. Использование Airbyte для извлечения данных из Shopify и загрузки их в базу данных. В нашем случае мы будем использовать базу данных с открытым исходным кодом PostgreSQL, но это также может быть другая база данных по вашему выбору.
  2. Использование MindsDB для автоматического создания и обучения модели машинного обучения для прогнозирования заказов на покупку.

Давайте начнем!

Предположим, вы уже настроили Airbyte через Docker. Если нет, то вот ссылка на Статью по началу работы, в которой показано, как это сделать.

Шаг 1. Репликация данных из Shopify в PostgreSQL с помощью Airbyte

а. Настройка коннектора Airbyte Shopify

Коннектор Shopify от Airbyte позволит нам получать ваши данные Shopify и хранить их в базе данных или хранилище данных. В этой статье мы будем хранить данные, полученные через коннектор Shopify, в базе данных PostgreSQL.

Коннектор Airbyte Shopify способен синхронизировать брошенные кассы, коллекции, пользовательские коллекции, клиентов, метаполя, заказы, продукты и транзакции с выбранным вами местом назначения.

Давайте начнем с развертывания веб-приложения Airbyte. Сначала перейдите в каталог, в который вы клонировали репозиторий Airbyte, а затем запустите в своем терминале следующее: ‍

докер-сочинять

Затем перейдите на http: // localhost: 8000 в своем браузере, чтобы увидеть панель управления Airbyte.

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

На новом экране введите имя источника - мы назовем его shopify-source, но вы можете называть его как хотите. Затем в раскрывающемся списке Тип источника выберите Shopify.

Выбор коннектора Shopify предложит Airbyte загрузить параметры конфигурации, необходимые коннектору Airbyte Shopify. Это может занять некоторое время, если вы впервые выбираете коннектор Shopify. Airbyte незаметно извлечет образ коннектора Shopify из Docker Hub.

Когда изображение будет готово, вы увидите следующее:

Давайте посмотрим на параметры, которые нужны коннектору Shopify:

  • shop: это будет название магазина на Shopify, из которого вы хотите скопировать данные. Таким образом, если URL-адрес вашего магазина - https://airbyte.myshopify.com, название вашего магазина будет airbyte.
  • start_date: это будет дата, с которой Airbyte должен начать репликацию, и она принимает дату в формате ГГГГ-ММ-ДД.
  • api_password: это будет пароль частного приложения, которое вы создали на своей панели управления Shopify.

Название магазина и start_date можно легко заполнить, но api_password требует, чтобы вы создали новое частное приложение на Shopify, если у вас его еще нет. Давайте рассмотрим создание частного приложения на Shopify и получение пароля, который нам нужен для настройки коннектора Airbyte Shopify.

б. Создание частного приложения Shopify

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

Затем нажмите ссылку Управление частными приложениями внизу страницы. Если вы ранее не включали частные приложения, вы увидите экран для включения. Нажмите кнопку Разрешить разработку частных приложений.

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

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

Нажмите кнопку Создать частное приложение, чтобы начать.

В разделе Сведения о приложении введите имя частного приложения и адрес электронной почты разработчика для экстренных случаев.

Зайдите в раздел Admin API и выполните следующие действия:

  • Нажмите на раскрывающееся меню Показать неактивные разрешения Admin API и найдите в списке Order API. Затем предоставьте доступ для чтения в поле выбора.
  • Найдите Споры Shopify Payments и Выплаты Shopify Payments и также предоставьте их.
  • Наконец, нажмите кнопку Сохранить, чтобы сохранить новое частное приложение.

Вы увидите модальное окно подтверждения - просто нажмите кнопку Создать приложение, чтобы подтвердить создание частного приложения. Вот и все! Теперь нам просто нужно получить пароль API частного приложения.

На той же странице прокрутите вниз до раздела Admin API и скопируйте свой пароль API частного приложения.

Затем перейдите на панель управления веб-интерфейсом Airbyte и предоставьте форму конфигурации коннектора Shopify с паролем, который вы только что скопировали.

В пользовательском интерфейсе Airbyte, где вы остановили настройку Shopify, вставьте пароль, который вы скопировали из Shopify, а затем нажмите Настроить источник.

c. Настройка пункта назначения

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

Airbyte проверит источник, а затем представит форму для ввода имени и типа пункта назначения. Введите shopify-destination в качестве имени и выберите Postgres в качестве типа назначения. Чтобы настроить пункт назначения Postgres, мы развернем контейнер Postgres через Docker. Итак, запустите в своем терминале следующее:

docker run - rm - name shopify-db -e POSTGRES_PASSWORD = пароль -v $ HOME / docker / volume / postgres: / var / lib / postgresql / data -p 2000: 5432 -d postgres

Обратите внимание, что бит -v $ HOME / docker / volume / postgres: / var / lib / postgresql / data в приведенном выше фрагменте важен для сохранения данных, поскольку по умолчанию данные в Postgres Docker контейнер недолговечен и будет утерян при уничтожении контейнера. Вы можете создать каталог на своем локальном компьютере (поскольку мы предполагаем, что его не существует). Выполните следующее, чтобы создать его перед командой, чтобы отключить контейнер Docker:

mkdir -p $ HOME / докер / тома / postgres

Убедитесь, что контейнер запущен. Затем введите учетные данные для входа в личный кабинет Airbyte.

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

Затем нажмите кнопку Настроить соединение.

Airbyte переместит вас на целевую страницу, где вы можете нажать кнопку Запустить, чтобы начать репликацию. Чтобы отслеживать синхронизацию, вы можете щелкнуть имя места назначения, чтобы увидеть процесс и статус синхронизации.

Когда Airbyte завершит репликацию данных в базу данных Postgres, статус синхронизации изменится на Успешно. Чтобы убедиться, что синхронизация прошла успешно, вы можете выполнить следующую команду:

docker exec shopify-source psql -U postgres -c «ВЫБРАТЬ СЧЕТЧИК (*) ИЗ public.transactions;» ‍

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

Шаг 2: Прогнозирование заказов на покупку с MindsDB

Следующим шагом является выполнение прогнозного анализа поверх данных магазина, которые мы импортировали в базу данных. Прежде чем мы это сделаем, нам нужно сначала установить MindsDB. Есть несколько способов установить его, как описано в документации. Мы предлагаем всегда использовать Docker, поскольку он инкапсулирует все зависимости для запуска MindsDB. Чтобы загрузить последний производственный образ, выполните следующую команду:

Докер тянуть mindsdb / mindsdb

Кроме того, если на вашем компьютере предустановлен Python, вы можете использовать pip для установки последней версии MindsDB. Для этого создайте новую виртуальную среду и запустите:

pip install mindsdb

Затем, чтобы запустить сервер, выполните:

docker run -p 47334: 47334 mindsdb / mindsdb

Или, если вы установили с помощью pip, запустите:

python3 -m mindsdb‍

Наконец, MindsDB Studio должен автоматически запуститься в вашем браузере по умолчанию на http://127.0.0.1:47334/.

а. Подключите MindsDB и PostgreSQL

Есть три способа использования MindsDB. Первый - через графический пользовательский интерфейс под названием MindsDB Studio. Второй способ - использовать REST API. Чтобы упростить интеграцию, вы можете использовать наши SDK для Python или JavaScript. Третий способ - сделать это непосредственно внутри базы данных посредством выполнения операторов SQL.

В этом руководстве мы объясним все с помощью MindsDB Studio, чтобы вы могли визуально следить за процессом. Мы также поделимся с вами SQL-запросами, если вы захотите протестировать их прямо в своей базе данных.

Чтобы подключить MindsDB и PostgreSQL из меню навигации слева, перейдите к разделу интеграции и нажмите кнопку Добавить базу данных . Здесь вам нужно будет заполнить все параметры для подключения к базе данных PostgreSQL.

Необходимые параметры для подключения к PostgreSQL:

  • Поддерживаемые базы данных: в раскрывающемся списке выберите PostgreSQL.
  • Имя интеграции: назовем его ShopifyData.
  • База данных: имя базы данных, в которой вы сохранили данные shopify.
  • Хост: имя хоста PostgreSQL или IP-адрес.
  • Порт: порт PostgreSQL (по умолчанию 5432).
  • Имя пользователя: пользователь, имеющий доступ к базе данных.
  • Пароль: пароль для указанного выше пользователя.

Заполнив форму, нажмите ПОДКЛЮЧИТЬ. Вы успешно подключились к PostgreSQL. Следующим шагом является создание источника данных из данных, которые вы хотели бы использовать для обучения модели.

б. Данные о заказах

Давайте рассмотрим данные. После того, как мы импортировали данные в PostgreSQL, Airbyte создал разные таблицы в общедоступной схеме. Если вы перечислите таблицы, вы заметите, что есть таблицы для заказов, orders_refunds, продуктов, транзакций, брошенных_checkouts и нескольких других таблиц, которые Airbyte создал перед импортом данные.

Данные, которые важны для прогнозирования будущего количества заказов, находятся в таблице orders. Давайте ВЫБРАТЬ * ИЗ заказов; , чтобы мы могли видеть список заказов. Внутри таблицы более 30 столбцов, но мы остановимся только на:

  • processing_at: время обработки заказа.
  • поставщик: например, если вы продаете обувь, поставщиками будут Nike, Adidas, Vans, Converse и т. д.
  • financial_status: мы будем ВЫБРАТЬ только те заказы, которые ожидают или уже оплачены.

Есть много дополнительных опций, которые вы можете использовать для прогнозной аналитики поверх данных Shopify. Чтобы сделать витрину простой, мы сосредоточимся на трех вышеуказанных параметрах и обучим модель, которая оценивает количество заказов, которые магазин получит в течение следующего периода.

Перейдите на панель управления базами данных и нажмите НОВЫЙ НАБОР ДАННЫХ. Во всплывающем окне вы сможете ВЫБРАТЬ данные для обучения модели :.

Давайте рассмотрим наш запрос SELECT:

SELECT loaded_at :: date AS order_day, COUNT (*) AS заказов, (unnest (ARRAY (SELECT jsonb_array_elements (line_items) - ›› 'vendor'))) как поставщик FROM заказов WHERE financial_status IN ('pending', 'paid') GROUP BY vendor, order_day;

Этот запрос выберет время, когда заказ был обработан, и переведет его в формат ГГ: ММ: ДД (без учета времени дня, поскольку мы будем прогнозировать ежедневную частоту). Затем выберите поставщика из столбца line_items, который содержит информацию о продукте в формате JSON.

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

Нажмите СОЗДАТЬ, и MindsDB создаст новый источник данных под названием ShopifyOrders.

При предварительном просмотре данных вы увидите количество ежедневных заказов, сгруппированных по поставщикам. В приведенном выше примере показаны заказы для магазинов ОБУВЬ и ИГРУШКИ. Он группирует ежедневные заказы за последние 5 лет для разных поставщиков, таких как NIKE, VANS, ADIDAS, LEGO, MATTEL и т. Д.

Теперь у нас есть данные, подключенные к MindsDB. Следующие шаги:

  1. Провести анализ данных
  2. Обучите модель машинного обучения
  3. Спрогнозируйте количество будущих заказов, запросив модель

c. Анализ данных

На панели управления Набор данных нажмите кнопку КАЧЕСТВО, чтобы MindsDB мог начать автоматическую процедуру анализа данных. В фоновом режиме он будет перебирать каждую запись данных и отображать предупреждения, если в данных есть потенциальные смещения или выбросы. Если вы нажмете на какой-либо из столбцов, он отобразит дополнительную информацию для определенных столбцов, такую ​​как тип данных, наличие каких-либо пропущенных значений, количество различных значений и, если есть потенциальные смещения, он покажет дополнительную информацию.

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

d. Модельное обучение

Чтобы обучить новую модель, нажмите вкладку Предикторы на левой панели навигации, а затем кнопку ОБУЧИТЬ НОВУЮ кнопку . Внутри всплывающей формы вам нужно будет ввести всю необходимую информацию, чтобы MindsDB мог начать обучение модели прогнозирования временных рядов:

  • FROM: источник данных, из которого нужно выбрать данные. В этом примере ShopifyOrders.
  • Имя предиктора: имя новой модели, например shopify_orders.
  • Выберите только столбец для прогнозирования: целевая переменная, которую мы хотим прогнозировать. В этом примере подсчитывается количество заказов.
  • Выберите столбцы, которые нужно удалить для обучения: столбцы, которые мы хотим исключить из обучения модели. Вы можете оставить это поле пустым, поскольку мы обучаем модель всего с 3 столбцами.
  • Пример погрешности. Рассчитайте погрешность в диапазоне [0,0–1,0]. Оставьте его пустым, поэтому будет использоваться значение по умолчанию 0,01.
  • Остановить обучение после: используется в целях тестирования для ускорения обучения модели. Оставьте это поле пустым, если у вас нет ограничений по времени.
  • Использовать графический процессор. Обучите модель на графическом процессоре или графическом процессоре. Если у вас есть графический процессор, установите этот флажок, чтобы ускорить этапы обучения и запросов.
  • Это проблема прогнозирования таймсерий? Установите флажок "Да".
  • Сортировать по: столбцы, в соответствии с которыми следует упорядочить данные. Выберите обработанный_ат.
  • Группировать по: столбцы, на основе которых группируются объекты в данных. Мы сгруппируем по поставщикам, эффективно анализируя каждого поставщика ИГРУШЕК и ОБУВЬ отдельно, чтобы составить точные прогнозы. В зависимости от того, как сгруппированы данные измерения, это может дать от нескольких до сотен (или больше!) Временных рядов, которые предсказатель MindsDB научится прогнозировать.
  • Количество будущих прогнозов: используйте значение по умолчанию 1. Это означает, что наша модель будет обучена предсказывать количество заказов, которые должны поступить в следующий день.
  • Использовать предыдущую цель: использовать предыдущие значения целевых столбцов в качестве дополнительной информации для конкретной части модели временного ряда. Оставьте это как отмеченное.
  • Окно оглядки назад: количество строк, на которые нужно оглянуться при прогнозировании. Установите значение 10, чтобы при прогнозировании учитывать количество заказов за последние 10 дней.

Чтобы начать обучение, нажмите ПОЕЗДКА.

Кроме того, вы можете автоматически обучить модель прямо внутри базы данных, просто выполнив следующий запрос:

INSERT INTO mindsdb.predictors (name, predict, select_data_query) VALUES ('shopify_orders', 'orders', 'SELECT processing_at :: date AS order_day, COUNT (*) AS orders, (unnest (ARRAY (SELECT jsonb_array_elements (line_items) - ›) ›” Vendor ”))) в качестве поставщика FROM orders WHERE financial_status в (« ожидающий »,« оплаченный ») группа по поставщику, order_day; ');

Чтобы получить дополнительную информацию о запросе INSERT, посетите Документы MindsDBs PostgreSQL.

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

По завершении этой процедуры статус изменится на ЗАВЕРШЕНО. Затем нажмите кнопку PREVIEW. Панель предварительного просмотра модели предоставляет информацию, относящуюся к обученной модели. В первом разделе показана точность модели и то, как MindsDB выполнял разбиение набора данных.

Вы можете видеть, что точность прогнозирования для модели shopify_orders составляет около 74%, что означает, что в 74% случаев истинное количество заказов попадает в пределы прогнозируемого диапазона для удерживаемого набора данных проверки.

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

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

е. Прогнозировать количество заказов

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

Представим, что мы хотим спрогнозировать «Сколько заказов Converse получит магазин в следующую пятницу?».

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

Затем нажмите ЗАПУСТИТЬ ЗАПРОС, и менее чем через секунду MindsDB вернет прогнозируемое значение.

Если вы хотите получать прогнозы непосредственно из запуска базы данных:

ВЫБЕРИТЕ заказы согласно прогнозу, orders_confidence AS уверенность, orders_explain AS info FROM mindsdb.shopify_ordersWHERE «vendor» = ’Converse’ AND «order_day» = ’2021–06–18 '; ‍

В этом примере для продуктов Converse в пятницу 18 июня 202 года MindsDB считает, что магазин получит около 57 заказов с минимальным заказом 32 и максимальным заказом 78. Кроме того, MindsDB на 74% уверен, что это будет правильное количество заказы. Ширина прогнозируемой области может быть дополнительно настроена пользователем за счет измененной уверенности: более жесткая пара границ будет означать меньшую уверенность в прогнозах и наоборот.

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

Подведение итогов

Мы показали, насколько просто использовать Airbyte для извлечения и загрузки данных в базу данных, а затем использовать MindsDB для выполнения прогнозной аналитики для принятия более эффективных бизнес-решений. Для получения дополнительной информации и примеров ознакомьтесь с документацией по Airbyte, MindsDB и на ограниченное время зарегистрируйтесь для получения бесплатной учетной записи MindsDB Cloud на http://cloud.mindsdb.com.

Первоначально опубликовано на https://airbyte.io.