Прогнозирование оттока клиентов для телекоммуникационной компании

Цель

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

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

Процесс

Я использовал набор телекоммуникационных данных IBM, доступный на kaggle.com. Необработанные данные содержали 7043 строки (клиенты) и 21 столбец (функции). Столбец Отток был моей целевой переменной. Цель классификации состояла в том, чтобы предсказать, будет ли отток клиентов.

Прогнозируемая переменная (желаемая цель): y — ушел ли клиент? (двоичный: «1» означает «Да», «0» означает «Нет»)

Моя целевая переменная была несбалансированной. Мне важно сбалансировать целевую переменную, чтобы данные были беспристрастными в отношении клиентов, которые уходят (0), или клиентов, которые не уходят (1). ). Создав обучающие данные, я увеличил выборку меньшинства (в нашем случае это выборка «yes_churn» (клиенты, которые уходят) с использованием алгоритма SMOTE.

На высоком уровне SMOTE:

1. Работает путем создания синтетических образцов из второстепенного класса ( yes-churn ) вместо создания копий.

2. Случайный выбор одного из k ближайших соседей и использование его для создания подобных, но случайно измененных новых наблюдений.

Вот код для балансировки набора данных с помощью SMOTE:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0,3, random_state=0)

sm = SMOTE(random_state=0)
X_train_res, y_train_res = sm.fit_sample(X_train, y_train)

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

Построение модели

Я начал с тестирования многих различных моделей, включая K-ближайших соседей, классификатор случайного леса, логистическую регрессию и сигмоидальные машины опорных векторов. Я использовал 5-кратный перекрестный поиск GridSearch, чтобы найти оптимальные параметры для каждой модели. основной параметр. Насколько я помню, измеряется истинная положительная скорость — я не хотел, чтобы моя модель пропустила «настоящих сбивания».

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

Моя последняя модель имеет показатель AUC 0,8.

Оценка стоимости

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

Я сделал следующие предположения о затратах, чтобы изучить финансовые последствия реализации модели.

1. Я присвоил истинным отрицательным значениям стоимость 0 долларов США. Моя модель по сути правильно идентифицировала счастливого клиента в этом случае, и мне не нужно ничего делать.

2. Ложноотрицательные результаты были наиболее проблематичными, потому что они неверно предсказывают, что уходящие клиенты останутся. Я потеряю клиента и должен буду оплатить все расходы по приобретению нового клиента, включая упущенный доход, расходы на рекламу, административные расходы и т. д. Я предполагаю, что 500 долларов США. Это стоимость ложноотрицательных результатов. сильный>

3. Наконец, для клиентов, которых моя модель идентифицирует как уходящих,я предполагаю поощрение за удержание в размере 100 долларов США. Это стоимость как истинно положительных, так и ложноположительных результатов. В случае ложноположительных результатов (клиент доволен, но модель ошибочно предсказала отток), я «потрачу» уступку в 100 долларов.

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

500∗FN(C)+0TN(C) + 100∗FP(C)+100TP(C)

Результаты

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

1. Наихудший сценарий

Компания не применяет какую-либо модель для прогнозирования оттока клиентов и исходит из того, что ни один клиент не уйдет. Но на самом деле (116+439) 555 клиентов ушли.Поэтому для поддержания клиентской базы компании пришлось бы тратить (500 * 555 долларов США) 277 500 долларов США .

2. Сосредоточение усилий на удержании на всех клиентах

Компания не применяет модели прогнозирования и решает сосредоточить усилия по удержанию на всех клиентах. Поэтому компания предоставляет каждому скидку в размере 100 долларов США.Компании придется потратить (100 * 2110) = 211 000.

3. Наилучший сценарий

У компании есть прогностическая модель, которая правильно предсказывает, кто все уйдет, и для поддержания клиентской базы дайте им уступки (100 долларов США).Таким образом, компании придется потратить (555*100) 55 500 долларов США.

4. Использование текущей прогнозной модели

Текущие модели определяют, FN и TP. Таким образом, для поддержания текущей клиентской базы компании придется потратить (116 * 500) + (837 * 100) = 141 700. Таким образом, используя модель, компания сэкономит доллары США. 135 800 в месяц. По сравнению с сосредоточением усилий на удержании на всех, внедрение текущей модели позволит сэкономить 69 300 долларов США.

Чтобы сохранить свою текущую клиентскую базу, использование текущей модели логистической регрессии приведет к экономии средств для компании. Поэтому стоит инвестировать в дальнейшую оптимизацию модели для увеличения экономии средств. Я использовал пороговое значение по умолчанию 0,5 для моей модели логистической регрессии. , однако если мы еще больше снизим порог, стоимость в расчете на одного клиента снизится (со 148 до 90 долларов США). Это приведет к дополнительной экономии средств.

Будущая работа

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