Введение

В этом проекте были проанализированы демографические данные клиентов компании по продаже товаров по почте в Германии и сопоставлены с демографической информацией для населения в целом. Данные предоставила Bertelsmann Arvato Analytics.

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

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

Сегментация клиентов - Анализ

Дата файлы:

  • Udacity_AZDIAS_052018.csv: Демографические данные для населения Германии в целом; 891 211 лиц (рядов) х 366 элементов (столбцов).
  • Udacity_CUSTOMERS_052018.csv: Демографические данные для клиентов компании, занимающейся доставкой по почте; 191 652 лиц (ряды) х 369 элементов (столбцы).

Вместе с данными были предоставлены два файла с описанием данных:

  • Атрибуты DIAS - значения 2017.xlsx: словарь данных столбцов, включая описание, возможные значения и их значение.
  • Уровни информации DIAS - Атрибуты 2017.xlsx: указывает уровень информации для каждого столбца (человек, дом, здание и т. Д.)

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

Отсутствующие функции

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

Недостающие значения

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

Отсутствующие значения по столбцу

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

Отсутствующие значения по строкам

В большинстве строк пропущено менее 25 значений.

Увеличив масштаб, чтобы увидеть количество пропущенных менее 50, мы видим, что 10 - хороший порог.

Сегментация клиентов - Методология

Очистка данных

Был создан скрипт очистки данных, который выполнил следующие действия.

Недостающие значения

  • Столбцы, в которых отсутствует более 20%, были удалены
  • Строки с более чем 10 пропущенными значениями были удалены.

Перекодирование и инженерные функции

  • Столбцы, начинающиеся с D19_: 10 (нет транзакций) были перекодированы на 0 (нет транзакций). Лишь некоторые из столбцов D19 имели десятки. Перекодирование было выполнено для согласования с другими столбцами D19.
  • OST_WEST_KZ был фиктивно закодирован
  • PRAEGENDE_JUGENDJAHRE разделена на десятилетия и движение
  • CAMEO_INTL_2015 был разделен на богатство и жизненный этап

Выпавшие функции

  • Функции, которых нет в словаре данных
  • CAMEO_DEU_2015, LP_FAMILIE_FEIN, LP_STATUS_FEIN были удалены, так как информация также была в _GROB (приблизительных) версиях функции.
  • Переменные KBA_ были отброшены, потому что они вызывали проблемы с PCA

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

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

Данные были рассчитаны с использованием медианы для удаления всех оставшихся пропущенных значений и масштабированы.

PCA

Анализ главных компонентов (PCA) был проведен из-за большого количества функций и того факта, что многие из них предоставляют почти одинаковую информацию. Для задачи сегментации клиентов будет использоваться алгоритм кластеризации, и они работают очень медленно с большим количеством функций.

Из графика объясненной совокупной дисперсии было определено, что при достижении 90% прирост объясненной дисперсии выравнивается. Это происходит на 76 основных компонентах.

Интерпретация PCA

Первый главный компонент

На первый главный компонент приходится 11,67% объясненной дисперсии.

Максимально взвешенные характеристики:

  • D19_VERSAND_ANZ_24 - транзакционная активность MAIL-ORDER за последние 12 месяцев (6 = очень высокая активность)
  • ONLINE_AFFINITAET - интерес в Интернете (5 = самый высокий)
  • D19_GESAMT_ANZ_24 - ОБЩИЙ ПУЛ транзакций по почте за последние 24 месяца (6 = очень высокая активность)

Признаки с наименьшим весом:

  • HH_EINKOMMEN_SCORE - расчетный чистый доход домохозяйства (1 = группа с самым высоким доходом)
  • CAMEO_DEUG_2015 является основной классификацией CAMEO 2015 (1 = высший класс)
  • богатство было получено из CAMEO_INTL_2015 (1 = богатый)

Этот компонент является индикатором покупательной активности и благосостояния. Обратите внимание: все индикаторы богатства перевернуты, где 1 указывает на наибольшее богатство.

Второй главный компонент

На второй главный компонент приходится 7,97% объясненной дисперсии.

Максимально взвешенные характеристики:

  • SEMIO_REL - родство, указывающее на то, как человек религиозен (1 = высшее родство)
  • Десятилетие произошло от PRAEGENDE_JUGENDJAHRE (1 = 40, 15 = 90)
  • FINANZ_SPARER - финансовая типология: экономия денег (1 = очень высокая)

Признаки с наименьшим весом:

  • ALTERSKATEGORIE_GROB - возрастная категория (4 = ›60 лет)
  • FINANZ_VORSORGER - финансовая типология: будьте готовы (1 = очень высокий)
  • FINANZ_MINIMALIST - финансовая типология: низкий финансовый интерес (1 = очень высокий)

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

Третий основной компонент

Третий главный компонент составляет 5,65% объясненной дисперсии.

Наибольший:

  • EWDICHTE - плотность населения (6 = самая плотная)
  • PLZ8_ANTG3 - количество 6–10 семейных домов в почтовом индексе (3 = высокая доля)
  • ORTSGR_KLS9 - размер сообщества, классифицированное количество жителей (9 = ›700 000 жителей).

Самый низкий:

  • SEMIO_KULT - это родство, указывающее на то, каким образом человек культурно настроен (1 = высшая близость)
  • SEMIO_REL - родство, указывающее на то, как человек религиозен (1 = высшее родство)
  • PLZ8_ANTG1 - количество 1-2 семейных домов в почтовом индексе (3 = высокая доля)

Этот компонент является индикатором плотности населения и культурного мышления / религиозности.

Выполнение

Кластеризация с использованием k-средних

Для определения оптимального количества кластеров использовался метод локтя. Среднее расстояние внутри кластера по k кластерам дисперсии было рассчитано и нанесено на график. Было решено, что 8 кластеров будут хорошей отправной точкой.

Уточнение

Трубопровод кластеризации

На этом этапе предварительная обработка (вменение и масштабирование), pca и средство оценки были объединены в конвейер. Преимущество конвейера заключается в том, что он сохраняет объекты предварительной обработки вместе с моделью.

Сравнение кластеров

Конвейер кластеризации был приспособлен к данным о населении, а затем использовался для кластеризации данных о населении и потребителях.

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

В 6 кластерах также был один перепредставленный кластер. Есть три недостаточно представленных кластера.

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

Сегментация клиентов - результаты

Кластерный анализ

Тепловая карта кластеров и их значений PCA показывает, что в пяти кластерах кластеры легко отличить друг от друга по первым трем компонентам PCA.

Сводка PCA первых трех значений

  • PCA 0 - индикатор покупательной активности и благосостояния
  • СПС 1 - показатель отсутствия религиозности, молодости, бесплатных трат.
  • PCA 2 - индикатор плотности населения и городской принадлежности.

Кластер 4: перепредставлен

Значения PCA: 1.46352879, -3.49229666, -0.74227797

Наиболее отличительной особенностью кластера 4 является очень низкое значение pca 1. Это указывает на то, что этот кластер более религиозен, старше и экономнее. Это также положительное значение для pca 0, которое является индикатором покупательной активности и благосостояния.

Кластер 0: недопредставлен

Значения PCA: -3.01992766, 4.10241541, 0.57541029

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

Кластер 1: также недопредставлен

Значения PCA: -0,84571908, 1,06199565, -3,32130468

Для кластера 1 наиболее отличительной особенностью является очень низкое значение pca2. Этот кластер отличается низкой плотностью населения и культурным уклоном / религиозностью.

Оценка

Метрики для алгоритмов обучения без учителя не так однозначны, как для модели обучения с учителем, и зависят от цели анализа.

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

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

Кластеризация маркетинговых данных

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

Уровень ответов для кластера 4 составил 1,4%, что выше, чем для всех других кластеров, и выше, чем общий уровень ответов, равный 1,2%. Разницы в скорости ответа было бы недостаточно, чтобы предсказать маркетинговые отклики. Затем от этой стратегии отказались.

Интересно отметить, что распределение лиц, выбранных для маркетинговой кампании, в основном согласуется с результатами анализа сегментации. 37,3% участников маркетинговой кампании были кластером 4. Этот кластер чрезмерно представлен в данных о клиентах по сравнению с населением, и у него больше шансов стать клиентами. Только 1,8% участников кампании были из кластера 0, одного из недостаточно представленных кластеров.

Маркетинговые прогнозы - Анализ

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

Дата файлы:

  • Udacity_MAILOUT_052018_TRAIN.csv: демографические данные для лиц, которые были целями маркетинговой кампании; 42 982 лиц (ряды) х 367 (столбики).
  • Udacity_MAILOUT_052018_TEST.csv: демографические данные для лиц, которые были целями маркетинговой кампании; 42 833 лиц (ряды) х 366 (столбцы).

Несбалансированные классы

Обучающие данные для задачи классификации состояли из 42 982 строк.

Столбец ответов содержит 42 430 отрицательных ответов (98,8%) и только 532 положительных (1,2%). Это невероятно несбалансированный набор данных, который повлияет на обучение модели классификации. Это также повлияет на выбор метрик.

Маркетинговые прогнозы - Методология

Очистка данных

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

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

  • Порог столбца оказался лучшим на уровне 22%.
  • Из-за недостатка положительных отзывов ни одна строка не была отброшена.
  • Функции перекодирования и инженерные разработки были такими же, как описано выше для задачи сегментации.
  • Столбцы без описания не отбрасывались
  • EINGEFUEGT_AM ’(дата и время) было удалено
  • "D19_LETZTER_KAUF_BRANCHE" фиктивен

LNR - это идентификатор, который следует отбросить перед классификацией, но нельзя включить в сценарий очистки, поскольку значения будут потеряны.

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

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

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

Выполнение

Модели

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

Другими обученными классификаторами были: последовательная модель Keras, Gradient Boost и AdaBoost. Были выбраны все модели, включая LightGBM, потому что они подходят для обработки несбалансированных данных.

Все модели были оценены с использованием 5-кратной перекрестной проверки с использованием roc_auc. Финальный подсчет очков, сделанный Kaggle, также использует roc_auc. Этот показатель подходит для несбалансированных данных, поскольку он делит точность на чувствительность (истинно положительный показатель) и специфичность (истинно отрицательный показатель). Если бы учитывалась только точность, с очень несбалансированным набором данных, классификатор, который предсказывает класс большинства, имел бы очень хорошие оценки, но бесполезен.

Уточнение

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

Конвейер предварительной обработки в файле python был создан и совместно используется ноутбуками Jupyter для обеспечения согласованности. Окончательные версии каждой модели были сохранены в файл рассола.

Маркетинговые прогнозы - Результаты

Конкурс Kaggle

Оценки были получены после загрузки работ на конкурс Kaggle (https://www.kaggle.com/c/udacity-arvato-identify-customers/leaderboard).

Анализ

Одним из преимуществ использования древовидной модели является то, что модель может дать представление о большинстве функций импорта. Все три древовидные модели (Gradient Boost, AdaBoost, LightGBM) имели D19_SOZIALES как наиболее важную функцию импорта.

D19_SOZIALES отсутствует в предоставленном словаре данных. Кажется категоричным со значениями от 0 до 5. «Sozial» означает «социальный», поэтому возможно, что этот признак относится к социальным группам. 84% лиц с ответом = 1 относятся к категории 1 D19_SOZIALES по сравнению с 30% с ответом = 0. Это означает, что люди категории 1 с гораздо большей вероятностью положительно отреагируют на маркетинговую кампанию.

Вывод

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

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

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

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

Код для этого анализа можно найти в его репозитории на Github.

использованная литература

8 тактик борьбы с несбалансированными классами в вашем наборе данных машинного обучения (https://machinelearningmaster.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/)

Porto Seguro: балансировка образцов мини-партиями с помощью Keras (https://imbalanced-learn.readthedocs.io/en/stable/auto_examples/applications/porto_seguro_keras_under_sampling.html#sphx-glr-auto-examples-applications-porto-se -keras-under-sampling-py )

Что такое LightGBM, как его реализовать? Как точно настроить параметры? (Https://medium.com/@pushkarmandot/https-medium-com-pushkarmandot-what-is-lightgbm-how-to-implement-it-how-to-fine-tune- the-parameters-60347819b7fc )

Отчет по сегментации клиентов для Arvato Financial Solutions (https://towardsdatascience.com/customer-segmentation-report-for-arvato-financial-solutions-b08a01ac7bc0)

Исследование сегментации клиентов для финансовых услуг Arvato (https://medium.com/@shihaowen/investigating-customer-segmentation-for-arvato-financial-services-52ebcfc8501)