Можете ли вы сгруппировать похожих клиентов в данных об оттоке? Хм... может быть, но чем похоже?

При выборе поставщика телекоммуникационных услуг у клиентов обычно есть много вариантов. Они могут выбрать любого поставщика услуг и могут отказаться от текущего поставщика. Процент клиентов, уходящих и отключающих услугу, известен как «отток». Сокращение оттока клиентов очень важно для роста бизнеса и удержания клиентов. Если отток высок, бизнес будет постоянно искать новых клиентов без стабильной клиентской базы. Эффективность бизнеса будет очень непредсказуемой. Предприятия стараются, чтобы клиенты были довольны, чтобы удержать их как можно дольше. Однако в реальном мире отток клиентов в телекоммуникационной отрасли может достигать 25% в год. Кроме того, затраты на привлечение нового клиента в 10 раз превышают затраты на удержание существующего клиента. Это представляет собой серьезную проблему для владельцев бизнеса.

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

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

Примечание. Данные для этого анализа доступны по адресу https://github.com/microbhai/CustomerChurnAnalysis/blob/master/tcommunication_customer_churn.csv.

Код доступен по адресу: https://github.com/microbhai/CustomerChurnAnalysis/tree/master/UnsupervisedLearningClusteringKMeans

Обучение без учителя

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

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

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

Общий объем анализа можно резюмировать следующим образом:

1. Создание модели обучения без учителя с использованием доступных данных об оттоке клиентов для разделения данных на несколько кластеров.

2. Проанализируйте кластеры, чтобы определить, соответствуют ли они какому-либо поведению клиентов.

KMeans

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

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

KMeans — это популярный неконтролируемый алгоритм кластеризации, предназначенный для группировки данных в кластеры и маркировки точек данных. Он широко используется в таких приложениях, как сегментация рынка, кластеризация документов, сегментация изображений, сжатие изображений и т. д. Алгоритм основан на расстоянии между точками в N-мерном пространстве и основан на поиске центроидов для каждого из номеров кластеров. , мы хотим идентифицировать в данных. Он перемешивает и случайным образом выбирает столько точек, сколько кластеров требуется для идентификации, и назначает их центрами кластеров. После этого он итеративно вычисляет расстояние между этими центрами кластеров (или центроидами) и точками данных, чтобы сгруппировать точки данных в кластеры.

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

Для объяснения и демонстрации я буду генерировать данные для кластеризации и применять алгоритм KMeans для маркировки кластеров и их центроидов в 2D и 3D пространстве. Мы создадим 50 точек данных, так что точки по своей сути принадлежат 3 кластерам. Затем мы будем использовать KMeans, чтобы идентифицировать 4 кластера в данных и найти их центроиды. Мы будем рисовать в 2D и 3D пространстве для визуального представления. На приведенных ниже диаграммах красные точки представляют собой центры кластеров.

Как видно, мы начали с набора случайных точек в 2D/3D-пространстве в качестве входных данных. Данные были смещены, чтобы иметь 3 кластера по своей сути. Я сделал это для демонстрации. После запуска KMeans мы получили наши случайные точки, помеченные в 4 разных кластера. Каждый из этих 4 кластеров имеет свой центр. И те были отмечены красными точками на графиках. Мы могли визуально видеть идентифицируемые центры и точки данных, нанесенные на график разными цветами, чтобы отметить метки кластеров. Однако в многомерном пространстве такая визуализация невозможна. Концепция остается прежней, логика вычислений и алгоритм остаются прежними, но они работают с гораздо большим числом измерений, чем можно изобразить на диаграмме.

Подготовка данных

Подготовка данных начинается с понимания имеющихся данных для анализа. Данные об оттоке клиентов содержат 40 полей. Одна из важных задач — определить, какие поля можно использовать для анализа KMeans. Существуют категориальные поля данных, такие как военное положение, пол и т. д., и непрерывные числовые поля данных, такие как срок пребывания в должности, возраст и т. д. Некоторые из этих полей могут быть не важны для анализа, например идентификатор клиента, взаимодействие и UID (которые связаны с клиентом). сервисное взаимодействие). Некоторые другие поля, которые не важны для анализа, — это широта и долгота клиента, порядок обращения (используется как порядковый номер). Мы также проверим данные на наличие нулевых значений, и если они будут найдены, их нужно будет обработать соответствующим образом.

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

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

Нормализация

Алгоритм KMeans основан на расстоянии, и нам необходимо нормализовать значения полей данных перед вычислением этих расстояний. Нормализация приведет значения поля в одинаковый диапазон для разных измерений. Например, если ежемесячная плата за услуги связи составляет от 100 до 400, возраст клиентов от 10 до 90, потребляемая пропускная способность в месяц от 100 до 700, а доход от 300 до 260 000, все эти поля находятся в разных диапазонах. значений и попытка вычислить расстояние между такими точками даст искаженные результаты. Если мы нормализуем данные и приведем их к аналогичному диапазону значений, вычисление расстояния будет иметь гораздо больше смысла в этом многомерном пространстве, а соответствующая кластеризация KMeans будет более надежной и удобной. Точность предсказания повышается, когда эти точки наносятся с использованием размеров с одинаковым масштабом, а не с размерами, которые сильно различаются (порядки величины).

Создание модели

У нас есть следующие переменные в данных об оттоке клиентов после первоначальной очистки данных. Все категориальные переменные были удалены.

Непрерывные числовые переменные:

«Население», «Дети», «Возраст», «Доход», «Отключение_сек_в неделю», «Электронная почта», «Контакты», «Ежегодный_отказ_оборудования», «Срок владения», «Ежемесячная оплата», «Пропускная способность_ГБ_Год»

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

В отличие от моделей обучения с учителем, в моделях кластеризации без учителя в данных обычно нет меток. Это алгоритм, который будет маркировать данные кластерными метками. Так что не с чем сравнивать для определения точности. Таким образом, этап разделения данных на наборы для обучения и тестирования и сравнения для оценки точности не годится. Это делает задачу кластеризации относительно простой. Однако основой кластеризации является расстояние между точками в N-мерном пространстве, и может быть трудно охарактеризовать эти кластеры в реальном смысле. Например, если вы передаете данные о клиентах алгоритму KMeans, и мы получаем маркировку кластеров, реальное значение этих клиентов, сгруппированных вместе, может быть трудно определить. Будет трудно предпринимать действия, основанные на этих сгруппированных клиентах, без понимания связанных с ними характеристик.

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

Чтобы сгруппировать эти данные с помощью алгоритма классификации KMeans:

1. Выберите диапазон количества кластеров (k)

2. Создайте модель для каждого выбора количества кластеров.

3. Инерционность компьютера для каждой из моделей

4. Создайте график значений инерции и количества кластеров.

5. Определите нужное количество кластеров с помощью метода локтя.

6. Для выбранного количества кластеров создайте модель KMeans и пометьте данные.

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

Анализ модели

Мы выбрали диапазон от 1 до 10 для количества кластеров. Для каждого из них мы создали модель KMeans. И для каждой из моделей мы вычислили инерцию модели. Инерция модели представляет собой сумму квадратов внутри кластеров. Инерция максимальна, когда количество кластеров равно одному (все точки сгруппированы в один кластер, а не кластеризация данных в отдельные группы). И инерция равна 0, когда у нас столько кластеров, сколько точек данных, так что каждая точка данных попадает в свой кластер, а сумма квадратов расстояния между точками с кластером равна 0.

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

График зависимости k от инерции для наших данных об оттоке клиентов представлен ниже.

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

Краткая информация о модели и последствия

Метод локтя показал нам, что алгоритм KMeans предлагает 2 различных кластера в данных. Используя модель, мы можем найти центры кластеров и инерционные значения. Мы также можем найти метки кластеров для различных точек данных. Учитывая, что здесь мы имеем дело с неконтролируемым машинным обучением, мы не знаем, чему соответствуют эти 2 кластера. Они были найдены алгоритмом, основанным на близости точек. А количество кластеров определяется падением инерции по отношению к количеству кластеров. Как они относятся к клиентам в реальном мире?

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

Метки KMeans имеют значения 0 и 1. Быстрый запрос к данным показывает, что в данных есть 2650 клиентов, для которых значение оттока равно "Да". Это клиент, который решил сменить оператора связи и ушел из компании. Другой запрос сообщает нам, что существует 2366 клиентов, у которых значение «Отток» равно «Да» вместе с меткой кластера KMeans, равной 1. Это показывает, что большинство клиентов, ушедших из компании, были помечены алгоритмом кластеризации KMeans в кластере 1. Это показывает сильное соответствие клиентов кластера 1 и их поведения оттока. Установив это соответствие, мы можем считать, что метки являются прогнозами поведения оттока клиентов. Значение метки 0 — это прогноз того, что клиент останется в компании, а метка 1 — прогноз ухода. Значения столбца оттока «Да» или «Нет» — это фактические значения, с которыми можно сравнить и получить точность прогноза.

Используя функции sklearn.metrics, мы обнаружили, что KMeans может точно предсказать 70,81% поведения оттока. Если в центре внимания анализа находятся клиенты, которые переходят от текущего поставщика услуг, KMeans прогнозирует 2366 из 2650. Это дает нам точность прогнозирования оттока 89,28%.

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

Ограничения KMeans

Хотя KMeans интуитивно понятен, проще в реализации и быстрее в вычислительном отношении по сравнению с некоторыми другими механизмами кластеризации, он имеет некоторые ограничения. Техника кластеризации KMeans представляет собой механизм обучения без учителя (без предварительной маркировки данных). Он идентифицирует кластеры в данных на основе расстояния точек друг от друга. Одним из важных ограничений этого метода является то, что он не использует категориальные переменные. Из предыдущего анализа данных об оттоке клиентов мы знаем, что некоторые категориальные переменные были очень важны для прогнозирования поведения оттока, например StreamingTV, StreamingMovies, Contract и т. д. Вся эта информация теряется при использовании Kmeans в качестве категориальной переменной, отображаемой как 1 с. и нули в N-мерном пространстве не дают никакой ценной информации. Вполне понятно, что Kmeans никогда не обещал создавать кластеры на основе поведения клиентов.

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

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

1. Кластеры пространственно сгруппированы — или однажды кластер может быть ограничен сферой

2. Кластеры одинакового размера

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

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

Код доступен по адресу: https://github.com/microbhai/CustomerChurnAnalysis/tree/master/UnsupervisedLearningClusteringKMeans