Промышленные записки

Прогнозирование оттока клиентов с помощью текста и возможности интерпретации

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

Авторы Даниэль Херкерт, Тайлер Мюлленбах

Репозиторий кода, сопровождающий это сообщение в блоге, можно найти здесь.

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

Здесь мы демонстрируем, как построить модель прогнозирования оттока, которая использует как текстовые, так и структурированные данные (числовые и категориальные), которую мы называем архитектурой бимодальной модели. Мы используем Amazon SageMaker для подготовки, построения и обучения модели. Выявление клиентов, которые, вероятно, уйдут, - это только часть битвы, определение первопричины - важная часть реального решения проблемы. Поскольку нас интересует не только вероятность ухода клиентов, но и движущие факторы, мы дополняем модель прогнозирования анализом важности функций как для текстового, так и для нетекстового ввода. Код этого поста можно найти здесь.

В этом решении мы сосредоточены на Amazon SageMaker, которое используется для подготовки данных, обучения модели прогнозирования оттока, а также для оценки и интерпретации обученной модели. Мы используем Amazon SageMaker для хранения данных обучения и артефактов модели, а Amazon CloudWatch - для регистрации результатов подготовки данных и обучения модели (рис. 1).

Современные модели естественного языка сложнее интерпретировать по сравнению с более простыми моделями, такими как линейная регрессия. Проблемы интерпретируемости могут препятствовать принятию бизнесом, несмотря на их высочайшую производительность. В этом посте мы продемонстрируем некоторые методы извлечения понимания из моделей НЛП. Мы используем кодировщик предложений BERT [2] [3] для обработки входных текстов, и мы предоставляем способ приписать предсказания модели входным функциям. Несмотря на то, что существуют разные подходы к интерпретации языковых моделей, мы предпочитаем анализ абляции подмножества релевантных ключевых слов, который можно легко масштабировать для всего набора данных и, следовательно, предоставить нам глобальную интерпретацию прогнозов языковой модели.

Изучение и подготовка данных

Чтобы имитировать категориальный и текстовый набор данных об оттоке, мы используем Kaggle: прогноз оттока клиентов 2020 для структурированных данных и объединили его с синтетическим текстовым набором данных, созданным с помощью GPT-2 [1]. Набор данных состоит из 21 столбца с функциями, включая категориальные (штат, международный план, план голосовой почты), числовые (длина учетной записи, код города и т. Д.) И один столбец с текстом, содержащим журналы чата между клиентом и агентом, созданные с помощью GPT- 2.

На следующем изображении показан фрагмент данных.

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

Как упоминалось ранее, журналы чата были созданы с помощью GPT-2 с использованием образца набора вручную созданных разговоров между клиентом и агентом. Вот отрывок из разговора между клиентом и агентом, созданный GPT-2.

Хотя разговоры, сгенерированные GPT-2, имеют меньшую широту, чем фактические разговоры, и (как видно выше) иногда не имеют идеального смысла, мы считаем, что вместо общедоступного набора данных клиент-агент эти сгенерированные данные являются разумным способом получить большой набор данных о взаимодействии клиента с агентом относительно оттока.

Мы подготавливаем текстовые функции в Amazon SageMaker, преобразовывая каждый журнал чата в векторное представление с помощью предварительно обученного кодировщика Sentence-BERT (SBERT) из репозитория моделей Hugging Face [4]. Репозиторий Hugging Face предоставляет предварительно обученные модели естественного языка с открытым исходным кодом, которые можно использовать, как в нашем случае, для кодирования текста без дальнейшего обучения модели. SBERT - это модификация предварительно обученной сети BERT, которая использует следующую сетевую архитектуру для получения семантически значимых встраиваний предложений.

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

SBERT обучается с использованием комбинации целей, включая классификацию и регрессию. Чтобы классифицировать отношения между двумя предложениями (рис. 2а), вложения предложений объединяются путем вычисления поэлементных различий и умножения их на обучаемые веса перед их передачей в слой классификации. Для цели регрессии (рис. 2b) вычисляется косинусное сходство между двумя встраиваемыми предложениями.

Преимущество использования SBERT по сравнению с другими методами встраивания (такими как InferSent, Universal Sentence Encoder) состоит в том, что он более эффективен и дает лучшие результаты в большинстве задач семантического сходства [3].

Поскольку BERT создан для кодирования частей слова, для наших текстовых данных практически не требуется предварительной обработки. Мы можем напрямую преобразовать каждый журнал чата в 768-мерный семантически значимый вектор встраивания.

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

Создание бимодальной модели машинного обучения

Сетевая архитектура состоит из трех полностью связанных уровней и сигмоидной функции активации для двоичной классификации (отток / без оттока). Сначала закодированные категориальные / числовые данные передаются на полностью связанный уровень, прежде чем они объединяются с закодированными текстовыми данными. Затем объединенные данные передаются на второй и третий полностью связанные уровни перед применением сигмоидной активации для двоичной классификации. Первый полностью связанный слой служит для уменьшения размерности разреженных категориальных / числовых входных данных (см. Более подробную информацию ниже). Второй и третий полностью связанные уровни служат декодерами закодированных данных, чтобы классифицировать входные данные на отток / без оттока. Мы называем архитектуру бимодальной, потому что она принимает как структурированные, так и неструктурированные данные, то есть категориальные / числовые и текстовые данные, в качестве входных данных для генерации прогнозов.

Следующая диаграмма (рис. 3) иллюстрирует двухмодальную архитектуру модели.

Как обсуждалось в предыдущем разделе, категориальные данные были преобразованы в числовые значения с использованием быстрого кодирования, при котором категория каждой функции представлена ​​двоичными значениями в отдельном столбце. Это приводит к разреженности результирующих закодированных данных (много нулей), когда есть много категорий, как в случае с функцией «Штат», которая состоит из 51 категории (включая округ Колумбия). Кроме того, столбцы индикаторов, созданные путем вменения пропущенных значений числовых характеристик, также способствуют разреженности закодированных данных. Первый полностью связанный уровень служит для уменьшения этой разреженности, что приводит к более эффективному обучению модели.

Мы обучаем модель с помощью оптимизатора SGD (стохастический градиентный спуск) и функции потерь BCE (двоичная кросс-энтропия) в Amazon SageMaker и достигаем производительности 0,98 AUC на тестовом наборе данных примерно через 8–10 эпох. Для сравнения, обучение модели с использованием только категориальных и числовых данных дает производительность 0,93 AUC, что примерно на 5% ниже, чем при использовании текстовых данных (рис. 4). Аналогичного улучшения с реальными данными можно было бы ожидать, поскольку модель с текстовыми данными имеет больше информации для принятия решения.

Важные функции

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

Категориальные и числовые характеристики

Мы обучим модель XGBoost [5] на категориальных и числовых данных, используя предсказанные метки обученной нейронной сети в качестве целевых значений, чтобы выяснить, какие категориальные / числовые характеристики больше всего способствуют предсказаниям нашей модели. Встроенный метод относительной важности функций позволяет нам получить обзор наиболее важных функций, которые вы можете увидеть на рисунке 5.

Из приведенной выше иллюстрации мы видим, что три основных функции для определения того, будет ли клиент оттока, включают количество сообщений vmail, количество звонков в службу поддержки, а также отсутствие международного плана (x2_no). Признаки x0_xx указывают состояние.

Текстовые функции

Теперь давайте сосредоточимся на разговорах между клиентом и агентом и попытаемся связать прогнозы модели с ее функциями текстового ввода. Хотя существуют разные подходы к интерпретации моделей глубокого обучения для естественного языка, их основное внимание, похоже, уделяется объяснению каждого предсказания в отдельности. Например, библиотека Captum [6] реализует методы, основанные на градиентах или значениях SHAP для оценки каждого токена / слова в текстовой последовательности. Хотя эти методы обеспечивают интерпретируемость на локальном уровне, их нелегко масштабировать для всего набора данных, что ограничивает их использование для глобальной интерпретации прогнозов обученной модели.

Наш подход к интерпретации обученной модели, использующей текстовые функции в кодировке SBERT, хорошо работает как для локальной интерпретируемости (отдельные журналы чата), так и для глобальной интерпретируемости (весь набор данных), он эффективно масштабируется и состоит из следующих шагов, которые мы выполняем в Amazon SageMaker. . Сначала мы разбиваем текст на ключевые слова, используя теги частей речи (POS) и сопоставление семантического сходства с оттоком. Затем мы выполняем анализ абляции, чтобы определить предельный вклад каждого ключевого слова в прогноз модели. Наконец, мы объединяем семантическое сходство, маржинальный вклад, а также частоту ключевых слов в единую оценку, которая позволяет нам ранжировать ключевые слова и предоставлять наиболее релевантные из них для оттока.

Приведенная ниже блок-схема (рис. 6) иллюстрирует наш подход к извлечению ключевых слов:

Подход начинается с необработанного текстового разговора; мы уменьшаем размер нашего текстового тела, сосредотачиваясь на подмножестве ключевых слов-кандидатов, которые мы получаем, применяя несколько фильтров токенов, как вы можете видеть на Рисунке 6, шаг 1. Мы применяем теги POS Spacy и сохраняем только прилагательные, глаголы и существительные [ 7]. Затем мы удаляем стоп-слова, строчные буквы и лемматизируем токены.

Затем мы ранжируем ключевые слова-кандидаты в порядке семантического сходства с результатами обоих классов - здесь мы сосредоточимся на оттоке (рис. 6, шаг 2). В частности, мы кодируем каждое ключевое слово с помощью предварительно обученного SBERT и вычисляем косинусное сходство каждого ключевого слова со средним встраиванием всех журналов чата с кодировкой SBERT, которое приводит к оттоку. Это позволяет нам ранжировать ключевые слова по сходству с оттоком, что дополнительно сокращает подмножество ключевых слов до подмножества ключевых слов, релевантных оттоку. Из приведенной выше иллюстрации вы можете видеть, что ранжирование ключевых слов по семантическому сходству уже дает нам важное понимание того, почему клиенты могут отказываться. Многие ключевые слова, в том числе «отмена», «разочарование» или «недовольство», указывают на негативное мнение.

Помимо семантического сходства с оттоком, мы хотели бы дополнительно количественно оценить влияние ключевых слов, измерив их предельный вклад в прогнозирование модели (рис. 6, шаг 3). Мы встраиваем журналы чата с соответствующими ключевыми словами и без них (там, где они встречаются) и измеряем среднюю разницу прогнозов. Например, ключевое слово cancel произошло 171 раз во всех журналах чата оттока, и его удаление приводит к снижению прогноза оттока модели на 4,18% в среднем по 171 экземпляру.

Наконец, мы объединяем все три оценки, семантическое сходство, предельный вклад и частоту ключевых слов в одну общую метрику, чтобы достичь окончательного ранжирования важных ключевых слов. Совместная метрика рассчитывается путем установки для отдельных метрик одной и той же шкалы (с помощью шкалы Min / Max Scaler с привязкой к диапазону) и вычисления средневзвешенного значения.

Результаты

В следующей таблице (рис. 7) показаны 20 наиболее важных ключевых слов для прогнозирования оттока. К ним относятся «голосовая почта», «отмена», «спам», «оборот», «разочарование» и «недовольство», которые указывают на низкую удовлетворенность клиентов или другие проблемы.

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

«Вчера вечером я получил несколько спам-сообщений, а сегодня очень много сообщений о том, что у меня нет SIM-карты и мне нужна SIM-карта».

«TelCom начал заваливать меня электронными письмами и телефонными звонками, засыпая тысячами фальшивых счетов-фактур».

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

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

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

Заключение

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

Ссылки:

[1] Языковые модели - это многозадачные ученики без учителя, Radford, Wu, et. др., 2019

[2] BERT: предварительная подготовка глубоких двунаправленных преобразователей для понимания языка, Девлин, Чанг и др., 2019

[3] Sentence-BERT: вложения предложений с использованием сиамских BERT-сетей, Реймерс, Гуревич, 2019

[4] Трансформеры приговоров в обнимку

[5] Модель XGBoost

[6] Библиотека Captum для интерпретируемости моделей

[7] Просторная библиотека для обработки текста