Отчет о сегментации клиентов Arvato Financial Services

Введение
Этот пост подготовлен в сотрудничестве с Arvato, компанией по доставке товаров по почте в Бертельсманне, Германия, что является частью выполнения Udacity DataScience NanoDegree. Проанализированные здесь наборы данных предоставлены Arvato Analytics.
В этом проекте используются методы обучения без учителя и с учителем для анализа демографических данных общего населения и демографических данных клиентов для прогнозирования потенциальных клиентов.
Цель этого поста — описать этапы проекта от сбора данных до использования методов обучения без присмотра и с учителем для анализа и подведения итогов по результатам.

Основные наборы данных, изучаемые здесь, включают:
1. Общая демография населения: демографические данные об общей популяции Германии (891 211 X 366).

2. Демография клиентов: демографические данные для клиентов, совершающих заказы по почте (191 652 X 369).

3. Udacity MAILOUT_052018 TRAIN: демографические данные из кампаний рассылки по рассылке Arvato вместе с соответствующим ответом. (42 982 х 367)

4. ТЕСТ Udacity MAILOUT_052018: демографические данные из кампаний рассылки по рассылке Arvato, ответы скрыты. (42 833 X 367)
Этот набор данных предназначен для прогнозирования соревнований Kaggle.

Дополнительные файлы
6. Уровни информации DIAS: файл Excel с информацией об атрибутах набора данных
7. Атрибуты DIAS: файл Excel с информацией о значении атрибута

Постановка задачи

Как Arvato может эффективно привлекать новых клиентов

Проект был разделен на 3 основные части:

  1. Обработка данных
    На это ушло больше всего времени. На этом этапе были получены данные и внесены коррективы с точки зрения типа и обработки отсутствующих значений (Nan) и дат. Эта обработка также называется очисткой данных.
  2. Отчет о сегментации клиентов
    Здесь использовались неконтролируемые методы обучения, такие как PDA (анализ основных компонентов) для уменьшения размеров для облегчения визуализации и K-Mean для группирования людей со схожими характеристиками в группы (кластеры) и сравнения. между кластерами для населения в целом и клиентов, чтобы выявить сегменты лиц из населения в целом, которые могут быть потенциальными клиентами.
  3. Использование машинного обучения для прогнозирования потенциальных клиентов (обучение с учителем)
    Здесь машинное обучение использовалось для прогнозирования потенциальных клиентов, наборов данных Udacity MAILOUT_052018 TRAIN и Udacity MAILOUT_052018 TESTнаборы данных использовались для создания и тестирования модели машинного обучения, которая может делать прогнозы для потенциальных клиентов.
  4. Kaggle Competition
    Используйте приведенную выше модель для создания прогнозов для Kaggle Competition.

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

1. Обработка данных

На этот раздел приходится около 60% проекта Entier. Этот раздел включает в себя процесс очистки данных, чтобы данные были стандартизированы и легко анализировались с помощью ранее существовавших методов. Шаги, включенные в эту часть, включают.

  • Запрос данных и анализ данных
  • Удаление нулевых столбцов и строк
  • Удаление высококоррелированных столбцов (корреляция больше 0,97)
  • Проверьте и исправьте типы данных, например даты, целые числа и т. д.
  • Вменение данных (заполнение нулевых значений)
  • Одно горячее кодирование (сведение всех значений категориальных переменных)
  • Масштабирование данных (стандартное масштабирование)

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

Запрос данных и изучение данных
Данные были получены в виде файлов CSV.

  • Общая демография населения
  • Демография клиентов
  • Информационные уровни DIAS
  • Атрибуты DIAS

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

Этот набор данных General Population будет основным набором данных, над которым будут работать на этом этапе очистки данных.
Обратите внимание, что в полях "Клиент" и "Общие" есть столбцы сохранения.

Удаление нулевых столбцов и строк

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

Ниже представлена ​​визуализация нулей для 42 столбцов с нулевыми значениями.

Некоторые столбцы имеют все обязательные 100% нулевые значения.

Предпринятые действия:
Я удалил все столбцы с более чем 60,0% пустых значений.

Ниже приведена визуализация после удаления столбцов с более чем 60% нулевых значений из 42 столбцов с нулевыми и нулевыми значениями.

2. Пустые строки
Посмотрев на набор дат, я заметил некоторые строки с большим количеством пустых значений, причем в некоторых из 366 столбцов пропущено до 240 столбцов.

Мы видим, что в некоторых строках отсутствует более 200–240 столбцов,

Предпринятые действия:
Что я сделал, чтобы строки с более чем 70,0% нулевых значений считались выбросами и удалялись.
Ниже приведена визуализация после выполнения вышеуказанного действия.

Теперь небольшая позиция строк имеет пропущенные значения, причем максимальное значение составляет от 60 до 80 пропущенных значений.

Удалить столбцы с высокой корреляцией
Затем я решил проверить корреляцию (измеряет силу связи между двумя переменными или победителями) и удалить столбцы с более чем 0,97/ 1 корреляция. Обозначая очень высокую корреляцию.

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

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

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

Nan’s для категориальных переменных

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

CAMEO_DEU_2015: функция, описывающая немецкую топологию для определенных групп.

Действие:
Для отсутствующих значений Nan в этом столбце I заменяется на XX, чтобы обозначить неизвестное.

CAMEO_DEUG_2015: Порядковый признак, описывающий немецкую топологию для верхней группы.
После подсчета значений этой переменной я заметил, что некоторые переменные численно будут одинаковыми, но строковое представление будет другим, например, 8.0 и 8, которые определенно относятся к одной и той же категории.

Действие:

  • Отсутствующие значения Nan в этом столбце я заменил на -1 для неизвестных.
  • Замените X на -1, они оба эквивалентны неизвестному
  • Преобразование поля в строковое представление int, преобразование всех чисел с плавающей запятой в int

CAMEO_INTL_2015:порядковый элемент, который определил немецкую топологию в международном масштабе.
После подсчета значений этой переменной я заметил, что некоторые переменные в числовом виде будут одинаковыми, но строковое представление будет другим, например, 50.0 и 50, которые определенно относятся к одной и той же категории.

Действие:

  • Для отсутствующих значений Nan в этом столбце я буду заменен на -1 для неизвестного.
  • Замените XX на -1, они оба эквивалентны unknown
  • Преобразование поля в строковое представление int, преобразование всех чисел с плавающей запятой в int.

EINGEFUEGT_AM:Функция даты
Обратите внимание, что время уже указано в формате строки временной метки
Действие:

  • Преобразование строки времени в стандарты Timestamp
  • Извлеките месяц и год и создайте 2 новых столбца для года и месяца.
  • Удалите столбцы EINGEFUEGT_AM, так как их свойства были захвачены выше.

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

Действие:
Это поле содержит более 175 157 строк из 785 421. Чтобы справиться с этим, я решил использовать прямое и обратное заполнение соответственно после тщательного наблюдения за набором данных, а не брать только среднее значение и избегать смещение среднего значения после этого обратного и прямого заполнения изменяется с 23,9% до 30,9%, что составляет большинство процессов заполнения нулями.

Nan's For Numeric Variable
С помощью пакета sklearn SimpleImputer я смог заменить все значения NULL в числовых столбцах на Mean(Average)этого столбца. .

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

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

Результирующий кадр данных ниже.

Отчет о сегментации клиентов

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

PDA (анализ основных компонентов)
Здесь мы стремимся уменьшить дисперсию между функциями набора данных за счет уменьшения размеров нашего набора данных, который в настоящее время составляет 466 (без столбцов), это позволяет избежать проклятия размерности, когда количество измерений в наборе данных огромно или сильно увеличено, это приводит к разреженности данных. Кроме того, это также снижает вероятность переобучения из-за добавления дополнительных функций, которые расширяют нашу модель новыми данными. Без уменьшения размерности визуализация становится затруднительной. Sklearns PDAПакет был использован ею

Прежде чем я продолжу уменьшение размеров масштабированных данных, мне нужно сначала определить, каково наилучшее количество уменьшенных измерений (n_componts).
Чтобы сделать это на графике, я выбрал случайное число, в моем случае текущее измерение 466 или лучше 100, и преобразовал его с помощью КПК. достигнутая дисперсия.

Ниже, если Визуализация сюжета

Из визуализации выше мы видим, что большая часть дисперсии фиксируется при n = 10, где дисперсия в этой точке составляет 93,4%
Теперь мы уменьшаем размеры, используя n = 10 (количество компонентов равно 10).

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

Прежде чем сделать это, мне нужно определить количество кластеров, в которые нужно сгруппировать элементы. Для этого я использую метод локтя, где я выбираю любой случайный размер кластера в моем случае не менее 5 плюс число уменьшенных размеров, затем вписываюсь в модель экземпляра пакета K-Mean Sklearn и строю график искажения в зависимости от количества кластеров.

Визуализация ниже.

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

Анализ
Основываясь на данных, полученных на данный момент из PCA и K-mean, я теперь интерпретирую свои результаты, а также дам и завершу этот раздел.

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

Наблюдения были распределены по 10 кластерам вместо 11.

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

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

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

Машинное обучение для прогнозирования потенциальных клиентов контролируемого обучения

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

Здесь используются наборы данных:
1. Udacity MAILOUT_052018 TRAIN: демографические данные из кампаний MailOut от Arvato вместе с соответствующим ответом. (42 982 X 367)
Этот набор данных будет разделен на две части: 80 % будут использоваться для обучения моей модели, а 20 % — для прогнозирования и оценки модели. Этот набор данных аналогичен набору данных для неконтролируемого обучения выше, за исключением того, что в нем есть новые столбцы RESPONSE, в которых указано, стал ли данный пользователь клиентом.

2. ТЕСТ Udacity MAILOUT_052018: демографические данные из кампаний рассылки по рассылке Arvato, ответы скрыты. (42 833 X 367)
Этот набор данных предназначен для прогнозирования соревнований Kaggle. Он не содержит столбцов RESPONSE.

Эта часть разделена на 2 части: Построение модели и прогнозирование и Конкурс Kaggle.

Построение модели и прогнозирование
Эта часть разделена на 3 подэтапа.

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

Подготовка набора данных
Здесь я прочитал в ТЕСТ Udacity MAILOUT_052018, который затем передал в функцию обработки данных, которую я создал, и содержит все этапы обработки данных. к Стандартизации. Это означает, что все данные, передаваемые в модели машинного обучения, уже стандартизированы, что позволяет их алгоритмам работать более эффективно, поскольку проблема масштабирования сведена к минимуму.
Глядя на ОТВЕТ и строим график I заметил, что эта переменная имеет менее 2% от 1 значения ответа на кампанию по рассылке и более 80% от 0 означает отсутствие ответа на кампанию.

Из рисунка выше вы заметите, что этот набор данных крайне нестабилен, поскольку у нас больше нулей, чем единиц, с которыми наши алгоритмы могут работать, чтобы делать надежные прогнозы. Следовательно, ROC и AUC предпочтительно используются для оценки производительности, а не для подсчета очков. Характеристика оператора-приемника (ROC) кривая представляет собой графический график, используемый для демонстрации диагностических возможностей бинарных классификаторов. 0,5 предполагает отсутствие дискриминации (то есть способность не давать ложных срабатываний), от 0,7 до 0,8 считается приемлемым, от 0,8 до 0,9 считается отличным, а более 0,9 считается выдающимся.

Выберите модели обучения под наблюдением, создайте и протестируйте модели
Я выбрал 4 алгоритма для этого проекта.

  • Случайный ЛесКлассификатор
  • Дерево решенийКлассификатор
  • GradientBoostingClassifier
  • БэггингКлассификатор
  • АдаBoostClassifier

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

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

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

Из приведенных выше кривых ROC мы видим, что кривые GradientBoostingClassifier и AdaBoostClassifier соответственно сдвинуты от диагонали 45-градусного пространства ROC, чем верхняя граница пространства ROC вверх. больше по сравнению с другими моделями.

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

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

  • СеткаПоиск
  • Случайный поиск
  • Байесовская оптимизация

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

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

После оптимизации с помощью Gridsearch у меня была небольшая погрешность повышения, которая увеличилась до 98,74% с 98,59%, а квадратная ошибка снизилась с 0,0141 до 0,0126. Глядя на кривую ROC, не было никакого незначительного повышения производительности по сравнению с ранее обученной моделью. это можно улучшить, настроив параметры и проведя дополнительное обучение.

Ниже приведены результаты новой модели.

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

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

Каггл Конкурс

Затем, используя созданную модель, я выполнил прогноз для MAILOUT_052018 TESTнабора данных и представленных вероятностей.

Заключение

Этот проект был направлен на то, чтобы использовать все, что у меня было в Udacity Data Science NanoDegree, для создания реального проекта по науке о данных. используя демографические данные населения Германии и их существующих клиентов.

  • Первая часть этого проекта заключалась в изучении наборов демографических данных и получении информации, а также в устранении проблем с набором данных, таких как нулевые значения в наборе данных. Результатом этой части стал масштабированный набор данных, который можно было использовать для дальнейшего анализа.
  • Следующая часть заключалась в использовании методов обучения без учителя для проведения анализа для определения потенциальных клиентов из набора данных. Основные методы обучения без учителя использовали ее там, где PCA (анализ основных компонентов) с выбранной стороной компонентов из 100 был направлен на уменьшение размеров набора данных для облегчения визуализации с помощью других методов обучения без учителя. Затем к набору данных была применена кластеризация K-Mean для разделения строк на отдельные кластеры, здесь использовалось 12 кластеров, и данные были разделены на разные сходства кластеров.
  • Заключительная часть этого проекта заключалась в использовании методов обучения под наблюдением, чтобы делать прогнозы для потенциальных клиентов. Здесь были протестированы 3 модели контролируемого обучения, и RandomForentClassifer был выбран для использования для обучения модели машинного обучения, которая будет прогнозировать потенциальных клиентов на основе демографических данных.

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

Во-вторых, можно улучшить модель машинного обучения, добавив дополнительные параметры (Tunning) к параметрам Gridsearch, чтобы получить еще лучшую модель для прогнозов.

Я хотел бы поблагодарить Udacity и Arvato Financial Service за такой отличный проект. Это было сложно, и мне понравился этот опыт.

Ссылка на гитхаб Здесь