Arvato Financial Solutions

Вступление

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

Преамбула

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

Инженерия данных

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

Сегментация клиентской базы (обучение без учителя)

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

Обучение с учителем

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

Методы

Инженерия данных

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

  • Описание неконтролируемых данных

В этой категории у нас есть набор демографических данных о населении Германии («Udacity_ AZDIAS _052018.csv») с 891 211 людьми (строками) по 366 характеристикам (столбцам). Второй набор данных («Udacity_ CUSTOMERS _052018.csv») содержит информацию о клиентах из компании, занимающейся доставкой по почте, с 191 652 клиентами (строки) на 366 функций (столбцы).

  • Описание контролируемых данных

Здесь оба набора данных аналогичны тем, которые получены из неконтролируемой категории, за исключением функции ответа, добавленной в набор обучающих данных ('Udacity_ MAILOUT _052018_ TRAIN .csv' - 42 , 982 человека (строки) на 367 (столбцы)) для целей обучения и проверки. Второй набор данных ('Udacity_ MAILOUT _052018_ TEST .csv' - 42 833 человека по 366 столбцам) исключает только переменную ответа, которая будет использоваться для конкурса Kaggle, чтобы протестируйте нашу модель обучения с учителем.

  • Анализ отсутствующих данных

Из метаданных атрибутов мы замечаем, что отсутствующие значения описываются не только числовыми NAN, но и назначенными специальными символами. Например, атрибут «CAMEO_INTL_2015» описывает отсутствующие значения как «XX». Атрибут «AGER_TYP» в равной степени принимает «-1» для пропущенных значений, как и 80 других столбцов числового и порядкового типа с 0, -1 или 9, считающимися записями с нулевым значением. Все эти атрибуты с отсутствующими символами данных, кроме числового нулевого представления, идентифицируются и заменяются соответствующим образом.

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

На гистограмме мы видим шесть столбцов («ALTER_HH», «GEBURTSJAHR», «KBA05_BAUMAX», «KK_KUNDENTYP», «AGER_TYP», «TITEL_KZ»), в которых в среднем содержится более 30% значений NaN, что приводит к небольшому или отсутствию понимания их.

С другой стороны, горизонтальный анализ набора данных позволяет нам понять, что в наборе данных «AZDIAS» содержится до 111 068 строк с более чем 70% значений NaN. Сравнив эти строки с оставшимися строками с меньшим значением NaN, мы понимаем, что между ними есть некоторое сходство. Это дает нам основу для отбрасывания всех строк с более чем 70% значений NaN, тем самым получая фрейм данных, подготовленный для более точных результатов.

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

  • Проверьте и перекодируйте необходимые функции

Проанализировав наши типы функций, мы заметили, что в общей сложности 28 функций (7 из которых являются смешанными типами, а 21 - категориальными) требуют некоторой инженерии. Бинарные категориальные функции остаются неизменными, в то время как многоуровневые категориальные функции быстро кодируются по отношению к своим двоичным аналогам. Чтобы повысить эффективность вычислений и избежать слишком большого количества функций по отношению к количеству выборок, функция «CAMEO_DEUG», содержащая до 44 категорий, была удалена.

Из особенностей смешанного типа «PRAEGENDE_JUGENDJAHRE» (описываемое как доминирующее движение в юности человека) разделено на две важные особенности - «десятилетия» и «движение» (мейнстрим против авангарда). «CAMEO_INTL_2015» (международная типология) также включает характеристики «богатства» и «стадии жизни».

Что касается «WOHNLAGE» (жилой район), два флага (7 и 8) заменены на NaN, которым позже будут приписаны характеристики, что означает, что мы не знаем, описывают ли они местность высокого качества или нет.

Три другие функции смешанного типа («LP_FAMILIE_GROB», «LP_LEBENSPHASE_GROB» и «LP_STATUS_GROB») удаляются, а их соответствующие подробные версии сохраняются.

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

Из оставшихся числовых функций NZ_HH_TITEL, ANZ_TITEL и ANZ_KINDER отбрасываются, потому что они смещены в сторону множества нулевых значений (33486, 35674 и 33821 нулевые записи соответственно), что делает их бесполезными. Хотя числовые, «AKT_DAT_KL», «PLZ8_BAUMAX» и «ARBEIT» имеют горячее кодирование, поскольку их числовые значения представляют определенные категории.

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

Преобразование функции

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

Уменьшение функции

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

  • Анализ главных компонентов

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

На графике осыпи мы можем заметить, что первые 260 компонентов (из 430) предоставляют более 90% информации из всего набора данных. Остальные функции предоставляют довольно мало информации, которую в противном случае можно объяснить первыми 260. В таблице ниже показаны первые 10 функций (из 260) с наибольшим количеством информации:

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

Модель обучения без учителя

  • Кластеризация

Кластеризация KMeans используется в качестве модели прогнозирования для немаркированного набора данных. Чтобы определить подходящее количество кластеров для этого набора данных, применяется метод локтя с использованием MiniBatchKMeans Sklearn для повышения эффективности вычислений. Число диапазонов кластеров выбирается от 5 до 30, в зависимости от точки, в которой среднее расстояние между кластерами начинает уменьшаться на очень минимальные значения.

Точка, наиболее похожая на изгиб на графике, находится в точке 15, что соответствует 15 как желаемому количеству кластеров для точной сегментации.

  • Сравнение данных о клиенте с демографическими данными

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

Перепредставленные и недопредставленные кластеры

Из диаграммы мы четко определяем кластеры 8, 2, 14 как имеющие наиболее представленные клиенты, а кластеры 6, 7, 9 - наименее представленные клиенты. Ниже приведены характеристики, описывающие несколько выбранных функций из чрезмерно представленных кластеров по сравнению с недостаточно представленными:

Из диаграммы мы видим, что потенциальные клиенты, скорее всего, будут иметь больше акций трейлеров (функция «KBA05_ANHANG») по сравнению с недостаточно представленным кластером (диаграмма справа) с общим меньшим количеством акций трейлеров.

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

С точки зрения возрастного распределения, люди в возрасте 45 лет и младше с большой вероятностью станут клиентами в отраслях Arvato, в отличие от пожилых людей, возраст которых составляет 46 лет и старше. Гистограмма ниже также наглядно показывает разницу:

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

Обучение с учителем

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

Для достижения высокопроизводительных показателей в этом разделе мы используем четыре основные модели с использованием Sklearn's Pipeline. Первый - это Gradient Boosting Classifier (GBC), второй - Light Gradient Boost Machine (Light GBM), затем у нас есть машина XGBoost (реализация GBM, предназначенная для скорости и производительности) и, наконец, мы реализуем модель нейронной сети с Keras.

  • Нейронная сеть Keras

Для подготовленного кадра данных из 85795 выборок, 421 функции и переменной двоичного ответа (Является ли клиент - 1 и Не является клиентом - 0) наша архитектура нейронной сети состоит из одного входного слоя, одного выходного уровня и двух скрытых слоев как описано ниже:

Показатель эффективности

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

Из-за предвзятого характера эта модель дает плохой показатель ROC_AUC всего 0,54 процента. Это говорит нам о том, что небольшое количество клиентов, которые должны быть предсказаны как клиенты (1), вместо этого предсказываются как не являющиеся покупателями (0). Это полностью коррелирует с предвзятым характером нашего набора данных mail_out: только 1,2% населения идентифицированы как клиенты, а остальная часть - не клиенты. Решением этой проблемы будет либо увеличение количества клиентов, либо уменьшение количества тех, кто не является клиентами.

  • Классификатор повышения градиента (GBC)

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

Показатель эффективности

Оптимизированная оценка ROC, равная 0,4999, дает наилучшую комбинацию гиперпараметров для этого оценщика:

{‘Learning_rate’: 0,1,
‘max_depth’: 3,
‘min_samples_split’: 4,
‘n_estimators’: 100}

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

  • Light Gradient Boost Machine (Light GBM)

В отличие от GBC, Light GBM обрабатывает категориальные функции, вводя имена функций. Он не преобразуется в одно-горячее кодирование и намного быстрее, чем одно-горячее кодирование. Light GBM использует особый процесс для нахождения значения разделения категориальных признаков [ссылка].

Поиск по сетке для Light GBM построен на четырех основных параметрах со следующими величинами:

{'learning_rate': [0,01,0.001,0.16,0.1],
'max_depth': [3, 5, 10,30],
'n_estimators': [100,200,300,400, 500,1000,2000] ,
'min_samples_split': [2, 4]
}

Показатель эффективности

В отличие от GBC, поиск по сетке на Light GBM может обеспечить лучшую производительность ROC, равную 0,7503 на тестовых данных, за время стены 54 минуты 13 секунд с лучшими параметрами как:

{‘Learning_rate’: 0,001,
‘max_depth’: 30,
‘min_samples_split’: 2,
‘n_estimators’: 1000}
Время на стене: 54мин 13с

  • XGBoost (реализация GBM, разработанная для повышения скорости и производительности)

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

{'learning_rate': [0,01,0.001,0.16,0.1],
'max_depth': [2,3, 5, 10,30,40],
'n_estimators': [50,100,200,300,400], < br /> 'min_child_weight': [1,3,6]}

Показатель эффективности

Из всех четырех примененных подходов XGBoost показал лучшую метрическую производительность с показателем ROC 0,7741 на тестовых данных при времени стены 2 часа 3 минуты 56 секунд (вероятно, огромных размеров из-за большого количества комбинаций гиперпараметров. ) со следующими лучшими параметрами:

{‘Learning_rate’: 0,01,
‘max_depth’: 3,
‘n_estimators’: 100}
Время на стене: 2ч 3мин 56с

NB: веса, полученные из этой структуры, были собраны и использованы в конкурсе проекта Kaggle, получив оценку ROC 0,79781 при прогнозировании с разницей в 0,00268 от первого. оценка . [Ссылка]

Заключение

Благодаря углубленному изучению методологий Data Science, мы предоставляем ряд проницательных результатов для улучшения процесса принятия решений Arvato Industries:

  • мы извлекаем 260 функций, которые несут наибольшую информацию, необходимую для точного анализа, из широкого спектра предоставляемых функций.
  • Мы изучаем и сегментируем население Германии (Azdias.csv) на 15 кластеров на основе сходства между каждым человеком в отношении их характеристик.
  • Мы разделяем клиентов текущей компании на 15 сегментов населения (кластеров), чтобы увидеть, какие сегменты содержат больше всего клиентов.
  • Мы более внимательно изучаем сегменты с наибольшим количеством клиентов и анализируем, что общего у этих сегментов. Эти особенности позволяют нам узнать, какие свойства заставляют любого человека добровольно стать клиентом. Три из этих характеристик - это возрастной диапазон и каршеринг для автомобилей высшего класса и прицепов.
  • Используя набор структур контролируемого обучения, мы прогнозируем в режиме реального времени, станет ли человек, принадлежащий к населению Германии, клиентом или нет, с точностью ROC 79,781.

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