Скоринг отклика
Пример решения задачи на базе аналитической low-code платформы Loginom:
- Скачать бесплатно Loginom Community Edition
- Скачать бесплатно пакет, реализующий описанный сценарий
В примере демонстрируется популярная в маркетинге задача — скоринг отклика — оценка реакции потребителя на направленное ему предложение. В качестве математического инструмента для моделирования выбрана Логистическая регрессия.
Крупная розничная сеть начинает продвижение новой линии органической косметики. Руководство сети хочет определить, какие клиенты более склонны к приобретению продуктов новой линии. Сеть имеет программу поощрения постоянных клиентов, благодаря чему у каждого постоянного клиента есть скидочная карта.
В качестве первоначального плана стимулирования покупателей розничная сеть провела несколько акций по распространению специальных купонов на приобретение органических продуктов, после чего собрала данные, в которых были зафиксированы покупки новой продукции.
Требуется на основе этих данных спрогнозировать отклик для всей клиентской базы, чтобы минимизировать ресурсы, связанные с рассылкой будущих персональных предложений клиентов, и делать это только тем клиентам, которым интересна новая продукция.
В итоге в распоряжение аналитику доступно 21 893 записи.
Исходные данные
Таблица «Клиенты»:
Имя поля | Метка поля |
---|---|
Клиент.Код | |
Дата актуальности | |
Пол | |
Возрастная группа | |
Статус | |
Длительность регистрации (мес.) | |
Счет | |
Округ | |
Сегмент достатка | |
Кол-во покупок нового товара |
Алгоритм
- Импорт исходных данных;
- Предобработка данных:
- Определение откликнувшихся клиентов;
- Заполнение пропусков;
- Устранение незначащих факторов с помощью Корреляционного анализа;
- Формирование конечных классов.
- Моделирование:
- Построение скоринговой карты отклика;
- Оценка качества модели.
Сценарий

Входной набор данных
Узел позволяет импортировать табличные данные из текстового файла для последующей обработки в Loginom. В Сценарии он используется для импорта таблицы «Клиенты». Все параметры задаются в соответствии с описанием входных данных.
Отклик
Для прогнозирования вероятности отклика на событие необходима бинарная переменная, а у нас имеется целочисленная Количество покупок нового товара (имя — «SALES»). В Калькуляторе мы сформируем требуемую бинарную переменную Отклик:
Имя поля | Метка поля | Описание |
---|---|---|
Отклик | Если Кол-во покупок нового товара больше 0, то отклик был |
Проанализируем пропуски с помощью визуализатора Статистика:

В двух столбцах, Пол и Возрастная группа, имеется значительное количество пропущенных значений. Возможно, это связано с какими-то объективными причинами, например, до определенного момента времени возраст не указывался в анкетах клиентов. В любом случае большая доля пропусков не позволяет применять стандартные методы их восстановления. Поэтому оставим их без изменений.
Три других столбца — Длительность регистрации (мес.), Счет и Округ — имеют ничтожно малую долю пропусков от общего количества. Примем для них метод восстановления пропусков — заменять медианой (Длительность регистрации (мес.) и Счет) и заменять наиболее вероятным (Округ).
Для того чтобы эти действия были произведены, после Калькулятора добавим узел Заполнение пропусков.
Заполнение пропусков
На странице Заполнение пропусков Мастера настройки узла проставим Методы обработки в соответствии с таблицей, которую получили из анализа пропусков:
№ | Входные поля | Вид данных | Метод обработки |
---|---|---|---|
1 | Заменять медианой | ||
2 | Заменять медианой | ||
3 | Заменять наиболее вероятным |
Методы обработки остальных полей и настройки оставляем по умолчанию.
Устранение незначащих факторов
В наборе данных присутствуют два непрерывных поля — Длительность регистрации (мес.) и Счет, значит, можно провести Корреляционный анализ для того, чтобы проверить гипотезу о наличии линейных связей между ними и выходным полем Отклик.
Настроим узел в соответствии с рисунком ниже:

Проанализируем результаты:

Коэффициенты корреляции являются отрицательными, но при этом их абсолютное значение невелико, и, следовательно, можно говорить об отсутствии взаимосвязи между этими полями. Можно сделать вывод, что гипотеза о наличии линейных связей не подтверждается.
Конечные классы
На первом шаге Мастера настройки узла Конечные классы зададим входные и выходные поля:
№ | Входные поля | Вид данных | Назначение |
---|---|---|---|
1 | Выходное | ||
2 | Входное | ||
3 | Входное | ||
4 | Входное | ||
5 | Входное | ||
6 | Входное | ||
7 | Входное | ||
8 | Входное |
Поле «Отклик» будет выходным, и событием в нем назначим уникальное значение TRUE. Все остальные поля оставляем без изменений.
В итоге откроется интерактивный визуализатор Конечные классы с результатами автоматической категоризации входных полей. Слева расположен список столбцов с рассчитанным информационным индексом.
Двойным щелчком по заголовку «IV» отсортируем его (по убыванию информационного индекса).

Нажмем на кнопку Редактировать разбиение для входа в режим редактирования результатов формирования конечных классов.
Столбец «Возрастная группа»
Возрастная группа «до 40» и «Класс пропусков» положительно реагируют на предложения, поэтому нет необходимости выделять «Класс пропусков» в отдельный класс. Уменьшим число конечных классов до 3-х путем объединения возрастных групп «до 40» и «Класса пропусков». Получим следующую диаграмму WoE-индексов.

Наиболее склонны к отклику люди до 40 лет, а также клиенты с пропущенными значениями в поле возрастной группы. Меньше всего откликов дают клиенты старше 60 лет. Поле обладает высокой значимостью 0,46.
Столбец «Сегмент достатка»
Ручные правки конечных классов не требуются, т.к. вес доказательства монотонно возрастает, что говорит о хорошем разбиении на классы. Получим следующую диаграмму WoE-индексов.

Люди с высоким сегментом достатка «от 80 т.р.» чаще откликаются на предложение. О клиентах с пропущенными значениями и о клиентах в сегменте «от 20 до 80 т.р.» ничего определенного сказать нельзя. Поле обладает высокой значимостью 0,52.
Столбец «Пол»
Класс пропусков автоматическим алгоритмом выделен в отдельный класс, необходимо его объединить с мужским полом, т.к. оба эти класса слабо реагируют на отклик в отличии от женского пола.

Наиболее склоны к отклику женщины. Поле обладает высокой значимостью 0,37.
Столбец «Счет»
Исходное поле является непрерывным. Автоматический алгоритм неудовлетворительно разбил на классы, т.к. Вес доказательства монотонно убывает. Попробуем сократить количество классов и улучшить результаты.

Клиенты, потратившие до 422,91 рублей, сильнее всего реагируют на отклик, те, кто потратил от 422,91 до 5804,06 и от 5804,06 рублей, слабо реагируют на отклик. Поле обладает низкой значимостью 0,07.
Столбец «Статус»
Уникальные значения 'Золотой' и 'Платиновый' были объединены между собой. Данные клиенты меньше всего склонны к отклику. Ручные правки конечных классов не требуются. Поле обладает низкой значимостью 0,07.

Столбец «Длительность регистрации (мес.)»
Исходное поле является непрерывным. Автоматический вариант следует признать неудовлетворительным. Постоянные «развороты» (точки, в которых соседние конечные классы меняют знаки) привели к пилообразной форме диаграммы WoE-индексов. Эти «развороты» не имеют логического объяснения, вероятно, нужно сокращать число классов.
Сократим их до 3-х. Картина улучшилась: диаграмма WoE-индексов стала монотонно возрастающей.

Клиенты, долго сотрудничающие с компанией, менее склонны к откликам. Поле обладает низкой значимостью 0,01.
Столбец «Округ»

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

Логистическая регрессия
- На первой странице Мастера настройки узла Логистическая регрессия зададим входные и выходные поля:
Метка | Имя | Вид данных | Назначение |
---|---|---|---|
Response | Выходное | ||
GENDER_ClassMark | Входное | ||
AGE_GROUP_ClassMark | Входное | ||
STATUS_ClassMark | Входное | ||
TENURE_ClassMark | Входное | ||
ACCOUNT_ClassMark | Входное | ||
SEGMENT_ClassMark | Входное |
- На странице Разбиения на множества укажем размер Обучающего множества 70%, Тестового множества 30%:

- Настроим параметры Логистической регрессии, как представлено на рисунках ниже:


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

Для того чтобы изменить параметры расчёта скорингового балла, необходимо зайти в порт переменных Подмодели и установить нужные значения.
Выходные | Имя | Назначение | Значение (по умолчанию) |
---|---|---|---|
isOnlyPositiveAttributes | Не задано | TRUE | |
OR | Не задано | 50,00 | |
ORScore | Не задано | 600,00 | |
PDO | Не задано | 20,00 |
Минимальные коэффициенты
Находим минимальные значения внутри группы меток входных полей. Для этого настроим узел Группировки, как показано на рисунке ниже:

Расчет суммы непустых коэффициентов
В Калькуляторе создаем выражение:
Имя поля | Метка поля | Описание |
---|---|---|
Коэффициент|Минимум | Рассчитывается разность кумулятивной суммы минимальных непустых коэффициентов |
Формирование результирующей строки
С помощью Группировки сформируем строку, содержащую сумму непустых коэффициентов:

Добавление минимальных коэффициентов
Слиянием соединяем рассчитанные минимальные коэффициенты и входной набор Подмодели. В Мастере настройки узла выбираем «Левое соединение» и связываем поля «Метки входных полей».
Минимальные, максимальные коэффициенты
В Калькулятор добавляем следующие поля для расчета минимальных и максимальных коэффициентов:
Имя поля | Метка поля | Описание |
---|---|---|
Коэффициент|Минимум | Положительные коэффициенты обнуляются, отрицательные остаются без изменений |
|
Коэффициент|Максимум | Положительные коэффициенты остаются без изменений, отрицательные вычитаются из входных коэффициентов |
Добавление суммы непустых коэффициентов
На этом шаге слиянием присоединяем рассчитанную сумму непустых коэффициентов к остальному набору данных.
Слиянием соединяем рассчитанные минимальные коэффициенты и входной набор Подмодели. В Мастере настройки узла выбираем «Левое соединение» и связываем поля «Метки входных полей».
Расчет скорингового балла
В Калькулятор добавляем следующие выражения для расчета скорингового балла:
Имя поля | Метка поля | Описание |
---|---|---|
Коэффициент (Результат) | Расчет результирующего коэффициента | |
Множитель | Рассчитывается по формуле: | |
Балл | Для константы рассчитывается по формуле , для остальных полей по формуле |
Интерпретация
Для представления результатов используются следующие визуализаторы:
Для анализа статистической значимости как всей модели, так и отдельных ее компонент, воспользуемся Отчетом по регрессии. В качестве порога значимости возьмем 5%, это позволит уменьшить риск ошибки второго рода.
Значимость всей модели , значимость большинства коэффициентов регрессии менее 0,05. В целом делаем вывод, что модель статистически значима, и ее можно использовать для прогнозов.


ROC-кривая имеет площадь под кривой 0,7946, которую можно интерпретировать как вероятность того, что в 79,46% случаях удастся разделить классы. У полученной модели хорошая предсказательная сила.

Другим способом оценить качество классификации является PR-кривая, диаграмму которой можно выбрать в левом списке диаграмм. Если выборка идеально разделима, то кривая пройдет через точку (1, 1). Чем больше площадь под кривой, тем лучше.

Переключим график на кумулятивную Lift-кривую. Для этого в списке выбора диаграмм (слева) выберем «% распознанных событий». Диагональная линия отражает работу бесполезного классификатора, то есть случаи, когда списки получателей рассылки формируются случайным образом.
График кривой, соответствующей нашей модели, проходит достаточно высоко, что говорит о хорошем качестве прогнозирования отклика клиента. Видим, что при объеме рассылки в 25% от всей базы мы получим около 55% откликов. Если бы мы проводили рассылку случайно, то для получения такого же отклика нам пришлось бы отправить письма примерно 55% клиентам. Разница в 30% и есть экономия, которую дает нам наша модель.

Результирующая таблица с рассчитанным скоринговым баллом для выбранных алгоритмом характеристик:

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