1. ОБЗОР ПРОЕКТА

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

Вопрос, который мы преследуем, звучит так: «Насколько эффективно компания, занимающаяся продажами по почте, может расширить свою клиентскую базу?». Чтобы ответить на этот вопрос, мы можем использовать две стратегии. Первый — это анализ сегментации клиентов с использованием модели неконтролируемого обучения. Второй — это контролируемая модель обучения для прогнозирования вероятности того, что люди превратятся в клиентов. В этом проекте я использовал оба метода, чтобы дать ответ на вопрос нашего исследования.

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

2. МЕТОД

2.1. Наборы данных

С этим проектом связаны четыре файла данных:

· Udacity_AZDIAS_052018.csv: демографические данные для населения Германии в целом; 891 211 лиц (строк) x 366 черт (столбцов).

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

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

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

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

Файл «CUSTOMERS» содержит три дополнительных столбца («CUSTOMER_GROUP», «ONLINE_PURCHASE» и «PRODUCT_GROUP»), в которых содержится обширная информация о клиентах, изображенных в файле. Исходный файл «MAILOUT» включал один дополнительный столбец «RESPONSE», в котором указывалось, стал ли каждый получатель клиентом компании или нет. Этот столбец позволяет нам запустить модель контролируемого обучения.

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

· Уровни информации DIAS — атрибуты 2017.xlsx: список атрибутов и описаний верхнего уровня, упорядоченный по информационным категориям.

· Атрибуты DIAS — значения 2017.xlsx: подробное сопоставление значений данных для каждой функции в алфавитном порядке.

2.2. Анализ данных

Этот проект состоит из двух основных частей: сегментация клиентов и контролируемое обучение.

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

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

2.2.2. Контролируемое обучение

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

2.2.2.1. Что делать с несбалансированными ответами

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

Методы отбора проб:

Методы выборки можно разделить на две группы: методы избыточной выборки и методы недостаточной выборки. Методы передискретизации дублируют наблюдения в миноритарном классе или синтезируют новые наблюдения из примеров в миноритарном классе. Некоторыми методами избыточной выборки являются случайная избыточная выборка, метод передискретизации синтетического меньшинства (SMOTE), пограничный SMOTE, пограничная передискретизация с SVM, адаптивная синтетическая выборка (ADASYN). В этом проекте я использовал методы случайной передискретизации, SMOTE и ADASYN. С другой стороны, методы недостаточной выборки удаляют или выбирают подмножество примеров из большинства классов. Некоторыми методами недостаточной выборки являются случайная недостаточная выборка, сокращенное правило ближайшего соседа (CNN), недостаточная выборка почти промаха и недостаточная выборка связей Томека. Методы недостаточной выборки лучше подходят для больших наборов данных, имеющих достаточно большой класс меньшинства. Следовательно, в этом проекте я не использовал метод недостаточной выборки, так как размер моего класса меньшинства недостаточно велик. Подробную информацию о методах семплирования вы можете найти здесь.

Методы прогнозирования:

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

Другие методы прогнозирования лучше работают с несбалансированными данными. Я использовал классификатор случайного леса (RFC) и классификатор повышения градиента X (XGBoost). RFC — это древовидный алгоритм, который создает деревья решений из случайных выборок, прогнозирует каждое дерево и выбирает наиболее эффективное из них. RFC — надежный и точный метод, но медленный. Классификатор с повышением градиента последовательно обучает множество моделей. Это алгоритм численной оптимизации, в котором каждая модель минимизирует функцию потерь. XGBoost — это расширенная и более эффективная реализация Gradient Boosting. В этом проекте я использовал метод XGBoost, поскольку он более эффективен, чем повышение градиента.

2.2.2.2.Показатели оценки

Для оценки производительности модели нужна метрика. Наиболее часто используемыми показателями являются точность, прецизионность, полнота, оценка f1 и AUC. Они были объяснены в таблице 1.

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

3. ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА ДАННЫХ

3.1.Понимание наборов данных

В этой части я резюмировал основные этапы очистки и предварительной обработки данных. Я использовал 6 различных наборов данных, которые подробно описаны в разделе «Набор данных». Основными наборами данных были общие данные о населении и данные о клиентах. Небольшой предварительный просмотр каждого набора данных показан на рисунке 1.

Рисунок 1. Предварительный просмотр основных данных

Общие данные о населении состоят из 891 221 строки и 366 столбцов, а данные о клиентах состоят из 191 652 строк и 369 столбцов. Прежде чем погрузиться в очистку данных, нам нужно понять каждую переменную и значения кодов. Для этой цели я исследовал два дополнительных файла данных: данные информационного уровня и данные атрибутов. Предварительный просмотр всех данных показан на рис. 2. Информационные уровни включают имена столбцов в столбцах атрибутов и описание столбцов, а данные атрибутов включают имена столбцов и значения значений каждой переменной.

В качестве первого шага к пониманию файлов данных я проверил, есть ли у нас информация для всех столбцов в общей совокупности и данных о клиентах. Для этого я проверил, есть ли в основных файлах данных переменные, не вошедшие в атрибутивные данные. Я встречаю 8 столбцов в общих данных о населении, в которых у нас нет информации об уровнях атрибутов или кодировках. Из этих 8 переменных 4 из них включены в данные уровней информации. Эти переменные были закодированы от 1 до 10. Однако у нас нет информации о значении этих кодов. Более того, от 76 до 99 % наблюдений относились к одной категории (категория № 10). Поскольку эти переменные не дают большой дисперсии, я их тоже исключил. В итоге у нас было 272 столбца для данных о клиентах и ​​генеральной совокупности.

Рисунок 2. Предварительный просмотр дополнительных данных

3.1.1. Знакомство с переменными

Типы переменных важны, так как каждый тип требует разных подходов. По этой причине, чтобы понять переменные, я проверил типы данных. Есть два столбца с целочисленным типом данных, 267 столбцов с плавающей запятой и 3 столбца с объектными типами данных. Типы данных объекта с двоичным кодированием были перекодированы как 0,1, а остальные преобразованы в фиктивные переменные. С другой стороны, типы данных с плавающей запятой требуют дальнейшего изучения. Процедура обработки данных с плавающей запятой следующая:

· Двоичные кодированные значения, перекодированные как 0 и 1.

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

· Некоторые переменные были преобразованы в другие, например, те же показатели, имеющие меньшее/большее количество категорий, были удалены.

3.2. Обработка отсутствующих данных

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

Рисунок 3. Распределение пропущенных значений по столбцам

Как показано на рис. 3, средний процент отсутствующих значений составляет 10 % для генеральной совокупности, а для данных о клиентах — 27 %. Мы также наблюдаем, что столбцы имеют огромное количество (более 50%) отсутствующих данных. Поэтому при очистке данных я удалил столбцы, в которых пропущено более 30% значений.

На рис. 4 показано построчное распределение отсутствующих значений, отсортированное по возрастанию для общей совокупности и данных о клиентах. Медианный процент отсутствующих значений составляет 0,7 % для населения в целом, а для данных о клиентах — 0,06 %. Однако графики показывают, что в строках очень мало данных. Чтобы защитить целостность данных, я удалил строки, в которых отсутствовало более 30% значения.

Рисунок 4. Распределение пропущенных значений по строкам

После отбрасывания крайних отсутствующих столбцов и строк я применил медианные значения для оставшихся отсутствующих значений. В конце очистки данных, вменения и одного горячего кодирования общие данные о населении состоят из 784 380 строк и 413 столбцов, а данные о клиентах состоят из 140 310 строк и 404 столбцов.

4. СЕГМЕНТАЦИЯ КЛИЕНТОВ

4.1. Описательный анализ

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

Рисунок 5. Демографическое распределение

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

4.2.Анализ основных компонентов

Для упрощения данных и уменьшения размеров был проведен анализ PCA. Количество компонентов по сравнению с объясненной дисперсией показано на рисунке 6. Я выбрал 250 компонентов, так как это точка с объясненной дисперсией более 90%.

Рисунок 6.Совокупная объясненная дисперсия в зависимости от количества компонентов

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

В качестве модели обучения без учителя использовалась кластеризация K-средних. Чтобы определить оптимальное количество кластеров, я попробовал размеры кластеров от 2 до 70. Полученные оценки модели показаны на рисунке 7. Исходя из рисунка 7, я решил использовать 10 кластеров.

Рисунок 7.Размер кластера и оценка модели

Проценты каждого кластера в общей совокупности и совокупности клиентов показаны на рисунке 8. Как показано на рисунке, процентные доли кластеров выше в первом, втором, третьем и 10-м кластерах совокупности клиентов. Для остальных кластеров процент населения клиентов ниже, чем население в целом.

Рисунок 8.Распределение по кластерам: общая совокупность и совокупность клиентов

5. МОДЕЛИ ОБУЧЕНИЯ С КОНТРОЛЕМ

Для модели контролируемого обучения нам предоставляется два отдельных набора данных в качестве данных для обучения и тестирования. Для конкурса Kaggle данные тестирования не имеют столбца ответов. Чтобы иметь возможность тестировать свои модели, я разделил тренировочные данные на тестовые и обучающие сплиты. Я очистил данные как для обучения, так и для тестирования, как описано в разделе предварительной обработки данных. Изначально обучающие данные состояли из 42962 строк и 367 столбцов. После очистки осталось 34987 строк и 413 столбцов. Тестовые данные 42833 строки и 366 столбцов. После очистки осталось 34980 строк и 413 столбцов.

Поскольку у нас несбалансированное распределение классов, я использовал два разных подхода к этой ситуации: выборка и использование чувствительных к стоимости алгоритмов обучения. Для стратегии выборки я использовал 3 метода выборки: случайная передискретизация, SMOTE и ADSYN, и сравнил их производительность с несбалансированными данными, используя три метода прогнозирования: LR, RFC, XGboost. Для каждого метода выборки я использовал две разные перспективы для проверки целостности модели. Сначала я передискретизировал все данные, а затем обучил и протестировал модель. Результаты повторной выборки тестов и наборов поездов показаны на рисунке 9 (а).

Рисунок 9. Значения ROC AUC для тестирования с выборочными данными

На рис. 9 (а) показаны значения AUC для каждого метода выборки при разных оценках. Результаты того, как методы выборки превзошли несбалансированные данные. Что касается методов оценки, XGboost работает лучше.

Мой второй подход к тестированию методов выборки заключался в выборке обучающих данных для тестирования производительности модели на несбалансированных данных. Я провел этот анализ, так как должен был использовать несбалансированные данные для тестирования. Результаты этого анализа представлены на рисунке 9 (b). Рисунок 9 (b) показывает, что методы выборки работают аналогично алгоритмам, обученным на несбалансированных данных при тестировании с несбалансированными данными. Кроме того, результаты AUC были около 0,50. чтобы увеличить показатели AUC модели, я выполнил поиск параметров и перекрестную проверку моделей RFC и XGboost.

5.1. Настройка параметров и перекрестная проверка

Для перекрестной проверки я использовал метод стратифицированного перемешивания с 5-кратным разбиением. Для метода RFC я настроил шесть параметров, в результате чего для каждого из 360 кандидатов было подобрано 5 кратностей, всего 1800 подгонок. Для XGboost я настроил пять параметров, в результате чего для каждого из 240 кандидатов было подобрано 5 кратностей, всего 1200 подгонок. Результаты для каждой модели до и после настройки параметров показаны в таблице 2.

Результаты перекрестной проверки с поиском по сетке улучшили показатель AUC RFC до 0,60 и показатель AUC XGboost до 0,57. Я продолжал работать с лучшим методом RFC, так как именно он дал более высокий показатель AUC.

6. РЕЗЮМЕ и ЗАКЛЮЧИТЕЛЬНЫЕ ПРИМЕЧАНИЯ

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

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

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

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

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

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

Лицензия, положения и условия:

Помимо Условий использования Udacity и других политик, загрузка и использование вами данных AZ Direct GmbH исключительно для использования в проектах Unsupervised Learning и Bertelsmann Capstone регулируются следующими дополнительными условиями. Большие выводы:

Вы соглашаетесь с Общими условиями AZ Direct GmbH, приведенными ниже, и с тем, что вы имеете право загружать и использовать данные AZ Direct GmbH исключительно для выполнения задачи интеллектуального анализа данных, которая является частью проектов Unsupervised Learning и Bertelsmann Capstone для Udacity Data Science Nano Degree. программа.

Вам запрещено использовать данные AZ Direct GmbH в любом другом контексте.

Вы также обязаны и настоящим заявляете и гарантируете, что удалите все данные, которые вы загрузили, в течение 2 недель после завершения проектов обучения без учителя и Bertelsmann Capstone и программы.

Если вы не согласны с этими дополнительными условиями, вы не сможете получить доступ к данным для этого проекта.

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

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

Коды, подробные условия можно посмотреть здесь