Прогнозирование оттока клиентов для телекоммуникационной компании
Цель
Отток клиентов происходит, когда клиенты прекращают сотрудничество с компанией. Поскольку затраты на удержание существующего клиента намного меньше, чем на привлечение нового, поддержание здоровой клиентской базы важно для успеха любого бизнеса. Поскольку у клиентов есть несколько вариантов в телекоммуникационной отрасли, уровень оттока в этой отрасли особенно высок. Индивидуальное удержание клиентов затруднено, потому что у компаний обычно много клиентов, и они не могут позволить себе тратить много времени на одного. Затраты были бы слишком высоки и перевесили бы дополнительный доход. Но если бы компания могла заранее предсказать, какие клиенты рискуют уйти, она могла бы сосредоточить усилия по удержанию клиентов, направив их исключительно на таких клиентов с «высоким риском».
Основная цель моего проекта состояла в том, чтобы создать прогностическую модель для выявления клиентов, наиболее уязвимых для оттока.
Процесс
Я использовал набор телекоммуникационных данных 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 долларов США). Это приведет к дополнительной экономии средств.
Будущая работа
Я хочу оптимизировать чувствительность модели (еще больше уменьшить количество ложноотрицательных результатов). Если бы у меня было больше времени, я бы больше инвестировал в разработку функций и попытался включить более важные функции из других наборов данных. Я также хочу провести различие между непреднамеренным и добровольным оттоком и выявить основные причины ухода клиентов, поскольку это поможет в точной настройке стратегий повторного приобретения.