Автор: Зоран Пандовски, MindsDB

Сохранение существующих клиентов жизненно важно для организаций, стремящихся развивать свой бизнес, не слишком полагаясь на значительно более высокие затраты на привлечение новых клиентов. Отделы маркетинга, продаж и удержания клиентов должны работать над тем, чтобы клиенты были довольны, предоставлять им стимулы и своевременно представлять предложения, чтобы сократить отток. MindsDB может помочь сократить отток клиентов, анализируя огромные объемы данных о клиентах и ​​взаимодействия, необходимые для выявления и измерения риска текучести клиентов. Машинное обучение MindsDB может помочь отделам маркетинга, продаж и удержания клиентов определить лучший стимул и подходящее время для предложения, чтобы минимизировать текучесть клиентов.

В этом руководстве вы узнаете, как использовать запросы SQL для обучения модели машинного обучения и делать прогнозы в три простых шага:

  1. Подключите базу данных с данными клиентов к MindsDB (интеллектуальный уровень прогнозирования для баз данных).
  2. Используйте инструкцию INSERT для автоматического обучения модели машинного обучения.
  3. Прогнозы запросов с помощью простого оператора SELECT из MindsDB «AI Table» (эта специальная таблица возвращает данные из модели машинного обучения после запроса).

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

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

Предварительные условия

В этом руководстве мы будем использовать MindsDB Cloud. Первым шагом будет создание бесплатной учетной записи на cloud.mindsdb.com. После успешного входа в систему вы будете перенаправлены в MindsDB Studio.

Альтернативные инструкции по установке доступны на странице Начало работы MindsDB.

Подключение к базе данных

Во-первых, нам нужно подключить MindsDB к базе данных, в которой хранятся данные об оттоке клиентов. В левой навигационной панели щелкните База данных. Затем нажмите ДОБАВИТЬ БАЗУ ДАННЫХ. Здесь нам нужно предоставить все необходимые параметры для подключения к базе данных.

  • Поддерживаемая база данных - выберите базу данных, к которой вы хотите подключиться.
  • Имя интеграции - добавьте имя интеграции.
  • База данных - имя базы данных.
  • Хост - имя хоста базы данных
  • Порт - порт базы данных
  • Имя пользователя - пользователь базы данных
  • Пароль - пароль пользователя.

Затем нажмите ПОДКЛЮЧИТЬСЯ.

Создать источник данных

Мы успешно подключили MindsDB к базе данных. Теперь нам нужно создать источник данных, который требует, чтобы мы подключили MindsDB к таблице оттока клиентов. Щелкните НОВЫЙ НАБОР ДАННЫХ и добавьте:

  • Имя источника данных - имя нового источника, который вы создаете.
  • База данных - имя базы данных для подключения.
  • Запрос - оператор SELECT для выбора данных из базы данных, например, SELECT * FROM table_name;

После заполнения всех значений нажмите СОЗДАТЬ. Теперь мы успешно создали новый источник данных, подключенный к базе данных. Следующим шагом будет использование клиента MySQL для подключения к MySQL API MindsDB и обучение новой модели, которая поможет нам прогнозировать отток клиентов.

Подключитесь к MySQL API MindsDB

Я буду использовать клиент командной строки MySQL в следующей части руководства, но вы можете продолжить работу с тем, что лучше всего подходит для вас, например, MySQL Workbench, Dbeaver и т. Д. Первый шаг, который нам нужно сделать, - это использовать Пользователь MindsDB Cloud для подключения к MySQL API:

mysql -h cloud-mysql.mindsdb.com --port 3306 -u [email protected] -p

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

Если у вас есть экран, показанный выше, это означает, что вы успешно подключились. Если у вас возникла ошибка аутентификации, убедитесь, что вы указываете адрес электронной почты, который вы использовали для создания учетной записи в MindsDB Cloud.

Обзор данных

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

  • CustomerId - идентификатор клиента
  • Пол - Клиент мужского или женского пола Старший гражданин - Является ли клиент пожилым гражданином или нет (1, 0)
  • Партнер - есть ли у клиента партнер или нет (Да, Нет) Иждивенцы - Есть ли у клиента иждивенцы или нет (Да, Нет)
  • Срок полномочий - количество месяцев, в течение которых клиент работал в компании. PhoneService - есть ли у клиента телефонная связь или нет (да, нет)
  • Несколько линий - есть ли у клиента несколько линий или нет (да, нет, нет телефонной связи).
  • InternetService - интернет-провайдер клиента (DSL, оптоволокно, нет).
  • OnlineSecurity - есть ли у клиента онлайн-безопасность (да, нет, нет интернет-сервиса).
  • OnlineBackup - есть ли у клиента онлайн-резервное копирование или нет (да, нет, нет интернет-службы).
  • DeviceProtection - есть ли у клиента защита устройства или нет (да, нет, нет интернет-сервиса).
  • TechSupport - есть ли у клиента техническая поддержка или нет (да, нет, нет интернет-сервиса).
  • StreamingTv - есть ли у клиента потоковое телевидение (да, нет, нет интернет-сервиса).
  • StreamingMovies - есть ли у клиента потоковые фильмы или нет (да, нет, нет интернет-сервиса).
  • Контракт - срок действия контракта с заказчиком (помесячно, один год, два года).
  • Безбумажный биллинг - есть ли у клиента безбумажный биллинг или нет (да, нет).
  • PaymentMethod - способ оплаты клиента (электронный чек, отправленный чек, банковский перевод (автоматический), кредитная карта (автоматически)).
  • MonthlyCharges - сумма ежемесячного платежа.
  • TotalCharges - общая сумма, взимаемая с клиента.
  • Отток - изменил ли клиент отток или нет (да или нет). Это то, что мы хотим предсказать.

Использование операторов SQL для обучения / запроса моделей

Теперь мы обучим новую модель машинного обучения из источника данных, который мы создали с помощью MindsDB Studio.
Вернитесь к mysql-client и запустите:

use mindsdb;
show tables;

Вы заметите, что в базе данных MindsDB доступны 2 таблицы. Чтобы обучить новую модель машинного обучения, нам нужно ВСТАВИТЬ новую запись в таблицу предикторов как:

INSERT INTO mindsdb.predictors(name, predict, external_datasource, training_options) VALUES('model_name', 'target_variable', 'datasource_name', {“ignore_columns”: []});

Мы должны предоставить следующие обязательные значения:

  • name (строка) - название модели.
  • предсказать (строка) - объект, который вы хотите предсказать.
  • external_datasource (строка) - имя источника данных, которое мы создали с помощью MindsDB Studio.
  • training_options (JSON в виде строки, разделенной запятыми) - необязательное значение, которое содержит дополнительные параметры обучения. Полный список с параметрами можно найти в документации PredictorInterface.

Чтобы обучить модель, которая будет прогнозировать отток клиентов:

INSERT INTO mindsdb.predictors(name, predict, external_datasource, training_options ) VALUES('churn_model', 'Churn', 'CustomerChurnData', '{"ignore_columns": ["gender"]}');

Здесь мы создали модель под названием customer_churn для прогнозирования оттока, а также игнорировали столбец пол как столбец, не имеющий отношения к модели. Также обратите внимание, что столбцы идентификаторов в этом случае customerId будут автоматически обнаружены MindsDB и проигнорированы. Обучение модели началось. Чтобы проверить, завершено ли обучение, вы можете ВЫБРАТЬ название модели из таблицы предикторов:

SELECT * FROM predictors WHERE name='churn_model';

Статус «Завершено» означает, что обучение модели успешно завершено.

Следующими шагами будет запрос модели и прогноз оттока клиентов. Давайте проявим изобретательность и представим клиента. Клиент будет пользоваться только услугой DSL, без телефонной связи и несколькими линиями, она проработала в компании 1 месяц и имеет партнера. Добавьте всю эту информацию в предложение WHERE.

SELECT Churn, Churn_confidence, Churn_explain as Info FROM customer_churn WHERE when_data='{"SeniorCitizen": 0, "Partner": "Yes", "Dependents": "No", "tenure": 1, "PhoneService": "No", "MultipleLines": "No phone service", "InternetService": "DSL"}';

MindsDB с уверенностью около 82% предсказал, что этот клиент уйдет. Здесь важно проверить значение important_missing_information, где MindsDB указывает на важную недостающую информацию для более точного прогноза, в данном случае Contract, MonthlyCharges, TotalCharges. и OnlineBackup. Давайте включим эти значения в предложение WHERE и запустим новый запрос:

SELECT Churn, Churn_confidence, Churn_explain as Info FROM customer_churn WHERE when_data='{"SeniorCitizen": 0, "Partner": "Yes", "Dependents": "No", "tenure": 1, "PhoneService": "No", "MultipleLines": "No phone service", "InternetService": "DSL", "OnlineSecurity": "No", "OnlineBackup": "Yes", "DeviceProtection": "No", "TechSupport": "No", "StreamingTV": "No", "StreamingMovies": "No", "Contract": "Month-to-month", "PaperlessBilling": "Yes", "PaymentMethod": "Electronic check", "MonthlyCharges": 29.85, "TotalCharges": 29.85}';

Теперь мы видим, что этот клиент по-прежнему будет уходить, но MindsDB более уверен в этом прогнозе - около 98%.

Заключение

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

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