Блог проекта Capstone Data Scientist от Udacity.

Описание проблемы: создание отчета по сегментации клиентов для Arvato Financial Services.

Введение

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

В соответствии с инструкциями проекта, окончательный прогноз будет оцениваться посредством конкурса Kaggle с оценочной метрикой AUC для кривой ROC, где кривая ROC создается путем построения графика истинно положительный коэффициент (TPR) против ложного. положительный показатель »(FPR) при различных настройках порога.

Очистка и расследование данных

В этом проекте нам предоставлено 4 исчерпывающих набора данных:

AZDIAS: Демографические данные для всего населения Германии.

ЗАКАЗЧИКИ: Демографические данные для изучения клиентов компании, занимающейся доставкой по почте.

MAILOUT_TRAIN и MAILOUT_TEST: демографические данные по людям, которые были целями маркетинговой кампании.

Мы собираемся сравнить КЛИЕНТОВ с AZDIAS и использовать методы обучения без учителя для выполнения задачи. С противоположной стороны в разделе контролируемого обучения этого проекта будут использоваться MAILOUT_TRAIN и MAILOUT_TEST. Мы представим модель на Конкурсе Kaggle, чтобы определить те части населения, которые лучше всего описывают основную клиентскую базу компании, и протестировать прогноз.

Изображенный выше набор данных AZIDAS состоит из 891211 строк x 366 столбцов. Он в основном состоит из категориальных данных со сравнительно большим процентом пропущенных значений.

Теперь давайте кратко рассмотрим распределение случайных функций между наборами данных AZDIA и CUSTOMERS.

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

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

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

Подведение итогов:

Верните отсутствующие данные в NaN и удалите столбцы с более высоким процентом отсутствующего значения.

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

Применяйте быстрое кодирование к категориальным данным.

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

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

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

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

1 анализ главных компонентов (PCA)

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

В конце мы собираемся перейти к 260 основным компонентам и совокупной дисперсии более 95%. Мы всегда можем увеличить количество и переобучить модель PCA, если будущая производительность не на должном уровне.

2 кластера

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

В основном мы рассматриваем изгибы / изгибы, где погрешность начинает медленно уменьшаться. На упомянутом графике расстояния постепенно уменьшаются после того, как количество кластеров достигает 12, так как расстояние уменьшается на уровне 12. Таким образом, нам нужно выбрать 12 в качестве нашего окончательного номера кластера, и следующим шагом будет повторная подгонка K - Означает, что экземпляр выполняет операцию кластеризации и применяет ее к нашему набору данных CUSTOMERS.

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

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

На приведенном выше графике мы можем ясно заметить, что частоты кластеров 6 и 7 в наборе данных CUSTOMERS значительно больше, чем частоты в наборе данных AZDIAS. Если клиентская база компании универсальна, то пропорции распределения кластеров между ними должны быть почти одинаковыми. Несоответствие кластеров между наборами данных AZIDAS и CUSTOMERS показывает, что продукты компании интересуют лишь определенную группу людей.

Заметная разница кластера 6/7 (29% против 9,8% и 24,3% против 8,3%) между двумя наборами данных предполагает, что люди в этих двух кластерах являются целевой аудиторией для компании. С другой стороны, доля данных в кластере больше в общей совокупности, чем данные опроса клиентов (например, кластеры 1, 3 и 8), указывает на то, что эта группа людей находится за пределами целевой демографии.

Чтобы более точно доказать нашу точку зрения, мы рассмотрим кластер 6 и кластер 1, чтобы увидеть, есть ли какие-либо существенные различия.

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

Ниже приводится описание данных:

1, 0: неизвестно

1: самый высокий доход

2: очень высокий доход

3: высокий доход

4: средний доход

5: более низкий доход

6: очень низкий доход

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

Затем я случайным образом выбрал несколько столбцов для сравнения различий между кластером 6 и кластером 1. Здесь «SEMIO_PFLICHT» представляет типология личности, где меньшее значение означает более высокую степень сродства.

Контролируемое обучение и конкурс Kaggle

В последней части проекта мы собираемся применить контролируемое обучение, чтобы изучить MAILOUT_TRAIN и MAILOUT_TEST набор данных , чтобы предсказать, может ли человек стать клиентом компании по итогам акции. (Обозначается столбцом RESPONSE в наборе данных TRAIN)

Здесь набор данных MAILOUT разделен на две примерно равные части, каждая из которых содержит почти 43 000 строк данных. Мы собираемся спрогнозировать RESPNESE для набора данных MAILOUT_TEST, и этот прогноз будет отправлен в Kaggle для оценки.

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

Мы можем выбрать из множества моделей машинного обучения, начиная с линейной модели, такой как 'LogisticRegression', или древовидной модели, такой как 'DecisionTreeRegressor'. в ансамблевые модели, такие как 'RandomForestRegressor' и 'GradientBoostingClassifier'. После тестирования точности нескольких моделей на основе результатов перекрестной проверки я использовал ‘LGBMRegressor’, а обучил модель с помощью 5-кратного метода проверки. В конце я отправил результат на конкурс Kaggle и получил 0,80745 roc_auc_score (кривая рабочих характеристик приемника).

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

Давайте рассмотрим самую важную функцию «D19_SOZIALES».

Заключение

Я надеюсь, что этот блог сможет эффективно выполнять свои функции. Спасибо udacity за предоставленную возможность работать с отраслевыми проектами. Подводя итоги блога: Мы исследовали демографические данные по населению Германии в целом и данные для клиентов компании, занимающейся доставкой по почте, предварительно обработали набор данных на основе свойства столбца / функции и внедрили алгоритмы неконтролируемого обучения, а именно PCA и KMeans для сегментации население (в разные кластеры), чтобы было эффективно рекомендовать потенциальных клиентов для компании. Мы более внимательно изучили два основных кластера и сравнили их, проверив различия нескольких случайно выбранных функций. Затем мы применили контролируемое обучение, чтобы предсказать, сможет ли человек стать клиентом компании после кампании. Исследовал наиболее важную функцию, обученную с помощью модели машинного обучения, и сравнил распределение функций между целевой / нецелевой популяцией.

Instagram: https://www.instagram.com/jyotsna_tiwary/?hl=en

Github: https://github.com/jyotsnatiwary

Facebook: https://www.facebook.com/jyotsna.tiwary.790

Linkedin: https://www.linkedin.com/in/jyotsna-4140ab171/