Меня зовут Василий Сизов, я наполовину ML-инженер, наполовину маркетолог, и я нарушил бизнес-правила. Даже при внедрении новейших технологий бизнес сохраняет определённую консервативность. Сегодня я покажу, как у нас получилось увеличить продажи, отказавшись от репрезентативной выборки покупателей, и попутно расскажу о метриках вроде look-alike, response и uplift. Статья написана по следам моего выступления на Data Fest, но для понятности добавлены лисы и совы. «Клиентский онтогенез» волнует в первую очередь поставщиков услуг. Им важно, интегрировался ли клиент в компанию и можно ли ему что-то предложить. Жизненный цикл клиента (ЖЦК) ВТБ состоит из нескольких этапов: Привлечение. Тут мы как поставщики услуг выписываем на листочек организации, с которыми могли бы заключить договор. Оцениваем потенциал клиента и подбираем промопредложения. Активация. Если клиент игнорирует — выявляем причины. Собираем другую корзину из предложений, угадываем его вкусы. Кросс-продажи. Подбираем выгодное для обеих сторон предложение. Удержание. Клиентов мы любим, но не отпускаем. Вместо этого думаем над удерживающим предложением. Реактивация. Оцениваем вероятность возвращения клиента, выстраиваем стратегию воссоединения с ним. В общем, ЖЦК — это целая инструкция отношений с клиентом. Тут тесно связаны маркетинг и аналитика. В чём же аналитика? Иногда поведение клиента кажется стохастическим. Перед ним единственная зелёная кнопка «Оформить», он удачно прошёл предшествующие стадии ЖЦК, но выходит с сайта, прерывая оформление условной карты. Человек не автомат, а в антропологической экономике Бурдье его и вовсе считают непредсказуемой сущностью. Возможно, мы и не сможем добиться 100% профита. Но, зная внешние и внутренние факторы, имеем шанс на эффективные продажи — об этом свидетельствуют результаты. Как известно, подавляющая часть работы DS-специалиста — копание в данных. У наших спецов это не исключение. Перед предиктивной аналитикой собирается кладезь данных о клиенте: общая информация; контактные данные; история исходящих коммуникаций; история сервисных операций и др. Чтобы предсказать поведение клиентов, нужно очень много данных, но это осуществимо. Безусловно, мы соблюдаем требования и рекомендации 152-ФЗ. Важно отметить, что необходимый набор инфы зависит и от используемой модели. Например, иногда для прогнозирования нужны данные о коммуникациях, за счёт которых продвигаются некоторые продукты. Это могут быть списки телефонных номеров, на которые отправлялись SMS со спецпредложениями. Но каким моделям нужны такие данные? Существует три основных типа моделей для прогнозирования поведения клиента: look-alike, response и uplift. Ключевое различие — использование при разных сценариях: без коммуникаций и с ними. Под коммуникациями понимают любые подталкивания клиента к целевому действию. Например, звонок в три часа утра. Если кратко, look-alike оценивает вероятность того, что клиент совершит целевое действие. Целевым действием может быть, например, оформление бизнес-карты. Тогда модель оценит вероятность того, что клиент закажет её. На выходе мы получаем ранжированный по вероятности список клиентов. Модель response подходит к задаче прогнозирования с другой стороны: она вычисляет вероятность совершения целевого действия клиента при условии коммуникации с ним ранее (звонок, SMS-рассылка). Для работы с response нужна не только инфа о клиентах, как в случае с look-alike, но и данные о коммуникациях с ними (о своеобразных AB-тестированиях). И самая «всевидящая» модель — uplift, которая вычисляет чистый эффект: разницу между результатами продаж с использованием коммуникаций и без. При этом uplift используют, когда целевое действие выполняется и так с большой вероятностью. Например, есть магазин «Лисы и совы», который продаёт лис и сов. Из записной книжки известно, что каждый второй покупает сов — это много. Но продавца не устраивает такой расклад — он хочет продать по сове каждому. Даже если всем она и не нужна. Поэтому продавец решает выявить признаки клиентов, которые покупают только лис. На основании этих данных он настраивает SMS-рассылку со специальным предложением «одна сова по цене двух», тем самым подталкивает покупать сов и не тратит бюджет на коммуникацию с теми, кто и так их берёт. Однако такое прогнозирование требует большого массива данных по маркетинговым кампаниям и не только. Для продуктов, к которым были применимы все модели, мы строили look-alike, response и uplift. В целом процесс выглядел так: Look-alike моделирование — для каждого MVP-продукта строилась модель look-alike. Response. Данный тип модели строился только после look-alike, если с клиентами поддерживалась коммуникация. Uplift-моделирование. Данный тип модели строился для тех продуктов, по которым были маркетинговые кампании (SMS-рассылки, email-акции и др.). Допустим, условной компании «Белый-лайн» нужно увеличить продажи. Отдел маркетинга решил провести обзвон. Но невозможно дозвониться до миллиона человек. Тогда они решают отобрать 5 000 человек. Однако такую выборку можно сформировать чуть ли не бесконечным числом способов. Поэтому они решают использовать модели look-alike, response и uplift, чтобы получить три ранжированных списка клиентов. В верхушке каждого находится человек, который готов с наибольшей вероятностью оформить тариф у «Белый-лайн». Итого на выходе мы получили список для обзвона — выходной вектор каждой модели. Тем не менее всё не так просто. И look-alike, и uplift проходят через несколько этапов: разведочный анализ данных: анализируем влияние факторов на таргет и проводим A/A-тестирования; построение модели: тестирование разных видов моделей, отбор факторов и подбор параметров, балансировка выборки (достижение приёмлемого числа аугментаций); постанализ модели: оцениваем профит (хорошо или плохо влияют факторы на таргет). То есть сначала продавец условных «Лис и сов» смотрит, например, какой уровень продаж в праздничные дни и сколько клиентов, которые выбирают сов, являются кошатниками. А потом проводит опрос среди них. Например, спрашивает клиентов, опасаются ли они, что на сову может напасть домашняя кошка.  При этом в выборку необходимо добавить аугментации. Среди условной группы кошатников должны встречаться и владельцы рысей. Это позволит модели верно отрабатывать в нестандартных ситуациях. Финальное качество моделей look-alike и response оценивалось по графику: Выборка сортировалась по предсказанным вероятностям: если модель хорошая, то целевому классу она должна присвоить больше вероятности. Соответственно, покрытие — это доля целевого класса от общего количества. А отношение балансов — отношение баланса класса в конкретном бакете к общему балансу классов в выборке. Модель классифицировала по двум классам. Первый (целевой) класс — категория клиентов, совершивших целевое действие (оформление продукта) в течение трёх месяцев после привлечения. Второй класс — категория клиентов, которые таких действий не совершали. Баланс классов — это доля целевого класса во всей выборке. Пусть у нас нет модели и баланс классов равен x%. Тогда если мы возьмём случайных клиентов из выборки, баланс классов в новой выборке будет приблизительно равен x%. В теории, если у нас хорошая модель, то в выборке из N лучших клиентов с максимальной вероятностью баланс классов должен быть больше. Представим, что по оси X расположены числа начиная с 5 000 с шагом 5 000. Эти числа характеризуют количество клиентов с большей вероятностью совершения целевого действия — топ-клиентов. Рассмотрим первое число — 5 000. Синяя линия покажет, во сколько раз баланс классов в выборке из 5 000 топ-клиентов больше, чем баланс классов во всей выборке. А оранжевая покажет, какой процент целевого класса расположен в выборке из топ-клиентов по сравнению с общей долей целевого класса во всей выборке.  Данный график используется для понимания алгоритма классификации, то есть для моделей look-alike и response. Бывает, что бизнесу неизвестно значение порога k и нужно посмотреть на поведение метрики при разных пороговых значениях. При построении метрики ориентируемся на uplift@k: Сортируем по предсказанному значению uplift. Делим отсортированные данные на перцентили/децили/бины. В каждом перцентиле отдельно оцениваем uplift как разность между средними значениями целевой переменной в тестовой и контрольной группах. Стоит отметить, что в большинстве источников uplift по перцентилям оценивается в каждом перцентиле независимо. Но ничего не мешает вам оценить его кумулятивным методом. Результат этой метрики записывается в таблицу или фиксируется в виде графика. Рассчитаем для каждого перцентиля следующие показатели: n_treatment — размер целевой (или treatment) группы; n_control — размер контрольной (control) группы; response_rate_treatment — среднее значение таргета целевой группы; response_rate_control — среднее значение таргета контрольной группы; uplift = response_rate_treatment —— response_rate_control. При визуализации таблицы получается график uplift by percentile. По нему удобно оценивать эффективность модели. Но как работает отбор факторов? Представьте, как вы собираете модель, которая может работать только с одним фактором. Но у вас два фактора: количество лайков и полное число оценок. В качестве эквивалентного фактора можно представить отношения первого ко второму — вероятность плохой оценки. С ней уже может работать модель. Таким образом мы значительно сократили объём данных, потеряв минимум из них. Всего у нас накопилось порядка 2 000 факторов. Трудно представить, сколько должно быть сэмплов в выборке, чтобы обучить модель. В оперативную память столько и не поместится. Сейчас расскажем, как решили проблему. Как вы могли догадаться, мы сократили количество факторов. Тут важно помнить, что все факторы  происходят из разных доменов: финансовая отчётность находится в одной таблице, список транзакций — в другой и так далее. Мы решили с каждого домена отобрать 30–40% факторов по важности. Так мы сократили число факторов до 300.  Кстати, постобработку и кодирование факторов мы вынесли в отдельный конвейер собственного фреймворка, ссылка на который где-то затерялась. Такое разделение процессов позволило избежать утечек при использовании кросс-валидации и настраивать конвейер предобработки любой сложности. Во-первых, преобразования выборок происходят внутри классов, из-за чего неудобно работать с параметрами самой модели. Во-вторых, для подхода two models нельзя задать разные факторы — с этим мы столкнулись при переходе на фреймворк. Основная идея подхода two models (sklift.models.TwoModels) заключается в параллельном построении двух моделей для оценки вероятности совершения клиентом целевого действия: первая учитывает коммуникацию, вторая — нет. В качестве решения мы добавили в фреймворк преобразование данных для uplift (использовали sklift). В результате можно удобно отбирать факторы и, соответственно, применять модели. А также получать при кросс-валидации в читабельном виде параметры обученных моделей: кривые обучения и важности, количество итераций, метрики на всех фолдах. Для two models сделали возможным добавление разных факторов для каждой модели. Практика показала, что от качества классификации look-alike и response зависит точность прогнозов uplift. Нам удалось построить все три типа моделей для привлечения клиентов на открытие расчетно-кассового обслуживания. В результате мы поняли, что модели response и uplift эффективнее look-alike как с точки зрения согласий на оформление РКО (расчётно-кассовое обслуживание), так и в плане непосредственных открытий. На это указали ранжированные списки моделей и результаты пилота, который проводился в марте 2022 года. Самой эффективной моделью по доле оформлений продукта оказалась uplift. Также в рамках задачи мы постарались сравнить, как лучше привлекать клиентов и готовить кросс-продажи. Формировать клиентскую выборку случайно, по канонам бизнес-правил (БП), или использовать предиктивную аналитику и машинное обучение На данный момент с помощью последних удалось добиться семикратного прироста в эффективности (коммуникации, формирование списка клиентов) и двукратного роста продаж (если сравнивать с результатами продаж по БП). Проблема таких экспериментов заключается в продолжительности их проведения. Продукты, на которых мы тестируем модели, — «долговызревающие». Это значит, что для оценки статистически значимых показателей нужно много времени. И обусловлено это тем, что некоторым клиентам нужно больше времени, чтобы сработал эффект после коммуникации с ним. Например, мы отправили на почту клиента специальное предложение. Он его прочитал через неделю, а еще через три-четыре дня решил воспользоваться им. Итого для оценки результативности понадобилось полторы недели. В среднем такие тестирования проводятся по три месяца. Если закончить эксперимент раньше — будет недостаточно таргетов. В общем, как-то так. Далее планируем вести новостную хронику по этому проекту на Хабре. Будем рады вашим вопросам и мнениям в комментариях.  Team Lead команды «Моделирование ЖЦК» в ВТБ