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

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

Этот проект предназначен для прогнозирования того, сменит ли заказчик поставщика телекоммуникационных услуг, что называется «сменой». Набор данных был взят из Kaggle задачи.

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

Почему важен коэффициент оттока клиентов?

Чтобы понять, почему это так, мы должны понимать, что привлечение новых клиентов обходится дороже, чем удержание существующих клиентов.

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

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

Описания файлов

  • train.csv - обучающий набор - содержит 4250 строк с 20 столбцами. 3652 выборки (85,93%) относятся к классу оттока = нет и 598 образцов (14,07%) относятся к классу оттока = да
  • test.csv - набор тестов - содержит 750 строк с 20 столбцами: индекс каждого образца и 19 функций (отсутствует целевая переменная «отток»).

Образец данных

Поля данных

Ход проекта

  1. Импорт и исследование данных
  2. Предварительная обработка данных и EDA
  3. Поезд-тестовый сплит
  4. Модель случайного леса
  5. Модель логистической регрессии
  6. Модель K-ближайших соседей
  7. Сравнение моделей
  8. Полученные результаты

1. Импорт и исследование данных

После импорта данных обучения и тестирования мы проверяем информацию о наборе поездов, вызывая метод .info ():

Как видим, данные не содержат нулевых значений. В фрейме данных есть два типа числовых данных - int64 и float64. Категориальные данные упоминаются относительно типа данных объекта.

2. Предварительная обработка данных и EDA

Сначала проверяем распределение целевой переменной:

Почти ~ 86% случаев относятся к случаю оттока = 0, а ~ 14% случаев относятся к случаю оттока = 1.

  • Категориальные столбцы:

Используется метод select_dtypes для заполнения столбцов с datatype = object.

[‘State’, ‘area_code’, ‘international_plan’, ‘voice_mail_plan’]

EDA по категориальным переменным

Графики были построены с использованием метода подсчетных графиков Сиборна, чтобы понять распределение категориальных переменных.

Давайте выясним корреляцию между категориальными переменными и целевой переменной «отток». Пропуск переменной состояния, поскольку она содержит слишком много состояний, как показано выше.

Как видно из приведенного выше графика, переменные international_plan и voice_mail_plan показывают высокую корреляцию с целевой переменной.

Предварительная обработка категориальных столбцов - ›One Hot Encoding

# Defining the categorical columns:

categoricalColumns = ['state','area_code','international_plan','voice_mail_plan']
categorical_ix = df_train.select_dtypes(include=['object', 'bool']).columns

print("Categorical columns:")
print(categoricalColumns)

onehotCategorical = preprocessing.OneHotEncoder(handle_unknown = 'ignore',categories='auto',sparse = False)

categorical_transformer = Pipeline(steps = [('onehot', onehotCategorical)])
  • Числовые столбцы:

Используется метод select_dtypes для получения столбцов с типом данных = int64 | float64.

['account_length', 'number_vmail_messages', 'total_day_minutes', 'total_day_calls', 'total_day_charge', 'total_eve_minutes', 'total_eve_calls', 'total_eve_charge', 'total_night_minutes', 'total_night_calls', 'total_night_calls', 'total_night_calls', 'total_night_calls' total_intl_calls ',' total_intl_charge ',' number_customer_service_calls ']

Предварительная обработка числовых столбцов - ›Стандартное масштабирование

EDA по числовым столбцам

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

Давайте выясним корреляцию между числовыми переменными и целевой переменной «отток».

Как видно из приведенного выше графика, переменные number_customer_service_calls, total_day_minutes и total_day_charge показывают высокую корреляцию с целевой переменной.

# Defining the numerical columns:

numericalColumns = df_train.select_dtypes(include=[np.float,np.int]).columns

print("Numerical columns: ")
print(numericalColumns)

scaler_numerical = StandardScaler()

numerical_transformer = Pipeline(steps = [('scale',scaler_numerical)])

Метод конвейера был создан для облегчения предварительной обработки данных.

# Preprocessing

preproc = ColumnTransformer(transformers=[('cat',categorical_transformer,categoricalColumns),
                          ('num',numerical_transformer,numericalColumns)],
                                          remainder = "passthrough")

df_churn_pd = preproc.fit_transform(df_train)
print(df_churn_pd)

Целевой столбец "отток" закодирован с помощью ярлыка.

3. Сплит-тест

Данные были разделены на обучающий и тестовый наборы с помощью библиотеки sklearn.model_selection.

Train_size = 66,67% Test_size = 33,33%

4. Модель случайного леса

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

Преимущества модели случайного леса:

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

Недостатки модели случайного леса:

  • Модель случайного леса трудно интерпретировать.
  • Для больших наборов данных со слишком большим количеством функций модель случайного леса потребляет много памяти.
  • Алгоритм дает дикие предсказания для тестовых наблюдений, никогда ранее не замеченных обучающими данными. Например, для обучающих данных, содержащих две переменные x и y с диапазоном переменной x от 50 до 80: Если тестовые данные имеют x = 150, алгоритм даст ненадежный прогноз.
  • Тонгу нужно время, чтобы бежать, так как он строит большое количество деревьев.

Точность модели: 93,0%

Важность функции

Существует два типа важности функций, которые можно вычислить в случае модели случайного леса. Важность характеристик на основе примесей и важность функций на основе перестановок.

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

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

Следовательно, мы будем использовать метод permutation_importance.

Метод permutation_importance будет переставлять категориальные столбцы перед их быстрым кодированием.

Из приведенного выше графика мы видим, что переменные international_plan, total_day_minutes, number_customer_service_calls и voice_mail_plan имеют большое значение при построении модели. Другими словами, эти переменные влияют на целевой результат.

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

Как видно из приведенных выше графиков:

Для переменной international_plan - ›процент оттока выше у тех, у кого есть международный план, по сравнению с теми, кто не подписался на международный план.

По остальным переменным разница гораздо более тонкая.

5. Модель логистической регрессии.

Логистическая регрессия - это алгоритм классификации, который принадлежит к семейству обобщенных линейных моделей. Он используется, когда переменная ответа является двоичной (1 или 0). Модель возвращает вероятность появления целевой переменной, которая преобразуется в прогноз 0 или 1 с использованием определенного порога.

Модель в основном применяет сигмовидную функцию к выходным данным модели линейной регрессии.

Преимущества модели логистической регрессии:

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

Недостатки модели логистической регрессии:

  • Логистическая регрессия требует, чтобы независимая переменная была линейно связана с логарифмическими коэффициентами (log (p / (1-p)).
  • Алгоритм может строить только линейные границы решений для разделения данных разных классов. Это означает, что задачи, связанные с образованием нелинейных границ, не могут быть решены этим алгоритмом.
  • Добавление к модели слишком большого количества функций, которые могут страдать от мультиколлинеарности, может снизить предсказательную силу модели.
  • Более мощные алгоритмы, такие как Neural Networks, SVM, Random Forest, могут легко превзойти этот алгоритм.
  • Алгоритм чувствителен к выбросам, и поэтому, когда значения данных отклоняются от ожидаемых диапазонов, это может привести к ошибочной классификации точки данных, что может повлиять на общую точность и интерпретируемость модели, так как это также повлияет на чувствительность и специфичность модели. результаты алгоритма.

Точность модели: 86.0%

6. Модель K-ближайших соседей.

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

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

Точность модели: 88,0%

7. Сравнение моделей

Таблица с точностью в процентах от всех моделей:

8. Результаты

Графическое сравнение:

Как мы видим, модель Random Forest показала лучшие результаты из всех используемых здесь.

Теперь мы, наконец, используем модель случайного леса, чтобы делать прогнозы для файла test.csv и сопоставлять столбец «id» с прогнозами. Я также создал сводную таблицу на изображении ниже, чтобы помочь понять распределение прогнозов. Набор данных test.csv содержит 750 строк, из которых мы получаем отток = да для 55 строк или 7,33% случаев, в то время как мы получаем отток = нет для 695 строк или 92,67% случаев.

Другие ключевые индикаторы, на которые следует обратить внимание

1. Ценообразование конкурентов и их модели подписки

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

2. Модель поведения клиента

Насколько высока вероятность выхода клиентов из системы в зависимости от того, как часто клиенты пользуются услугами компании? Как изменится их поведение, если компания изменит свою цену или модель подписки / качество своих услуг? Как они реагируют, если компания предоставляет дополнительные услуги, такие как Amazon Prime Video или подписка на Netflix вместе со своим пакетом?

3. Реакция конкурентов

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

Способы сокращения оттока клиентов

1. Сосредоточение внимания на ваших лучших клиентах

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

2. Анализ структуры оттока клиентов.

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

3. Разработка системы рассмотрения жалоб.

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

4. Создание новой модели подписки и улучшение системы продления.

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

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

Ссылка на репозиторий GitHub: https://github.com/rahulkhandelwal396/Telco-Churn-Prediction

Надеюсь, статья вам понравилась. Если чего-то не хватает, дайте мне знать по адресу [email protected].