Введение

В рамках моего последнего проекта в программе Udacity Data Scientist Nanodegree я выбрал проект Bertelsmann / Arvato.

Идея, лежащая в основе этого проекта, состоит в том, чтобы решить реальную проблему, с которой должна справиться группа Arvato Data Science: поиск новых клиентов.

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

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

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

Цели

Этот проект в основном делится на две цели:

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

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

Часть первая: анализ данных

Первым шагом в любом проекте Data Science является анализ данных, которые будут использоваться.

Для этого проекта были доступны четыре набора данных со следующими характеристиками:

  1. azdias: демографические данные по населению Германии в целом. 891211 лиц (рядов) х 366 черт (столбцов).
  2. клиенты: демографические данные для клиентов компании, занимающейся доставкой по почте. 191652 чел. (Рядов) х 369 шт. (Столбцов).
  3. mailout_train: демографические данные по лицам, которые были целями маркетинговой кампании. 42982 лиц (ряды) х 367 (столбцы).
  4. mailout_test: демографические данные по лицам, которые были целями маркетинговой кампании. 42833 лиц (ряды) х 366 (столбцы).

Также использовались два файла Excel, содержащие информацию о данных.

  1. Уровни информации DIAS - атрибуты 2017: информация о функциях, присутствующих в наборах данных.
  2. Атрибуты DIAS - значения 2017 г .: информация о значениях и их представлении в каждой функции набора данных.

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

Исследование данных

После загрузки наборов данных пора изучить предоставленные данные.

Были сделаны следующие наблюдения:

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

После этого первого процесса было удалено примерно 100 колонок.

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

На этом этапе будут обрабатываться обнаруженные ранее нулевые значения.

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

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

Часть вторая: сегментация клиентов

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

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

Алгоритм K-средних

Алгоритм K-средних группирует данные, пытаясь разделить выборки на k групп с равной дисперсией, минимизируя критерий, известный как инерция или сумма квадратов внутри кластера.

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

Группы характеристик были:

  • Человек
  • Домашнее хозяйство
  • Строительство
  • Микроячейка (RR4_ID)
  • Микроячейка (RR3_ID)
  • Почтовый индекс
  • RR1_ID
  • PLZ8
  • Сообщество

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

Результаты

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

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

  • быть более пассивным пожилым или культурным пожилым людям;
  • иметь возраст 46 лет и старше;
  • иметь высокий финансовый интерес;
  • быть очень экономными;
  • быть из семей, состоящих из нескольких человек;
  • быть из семьи, состоящей из нескольких поколений;
  • иметь высокий доход;
  • иметь доминирующее движение в молодости за экономическое чудо или молочный батончик / индивидуализацию;
  • быть очень религиозным;
  • не будьте очень чувственными;
  • будьте очень рациональны;
  • быть более приверженным традиционному мышлению;
  • быть более традиционным.
  • иметь более изысканный и разносторонний вид потребления;
  • очень низкая транзакционная активность за последние 12 и 24 месяца;
  • иметь более высокую долю автомобилей с объемом более 2499 куб.
  • меньше доля автовладельцев женского пола;
  • имеют более высокую долю ведущих немецких производителей (Mercedes, BMW);
  • имеют меньшую долю небольших автомобилей (относительно среднего по округу);
  • имеют более высокую долю автомобилей высшего класса (в среднем по округу);
  • иметь меньшую долю автомобилей с мощностью двигателя менее 59 кВт;
  • имеют более высокую долю автомобилей с мощностью двигателя более 119 кВт;
  • иметь в качестве наиболее распространенного производителя автомобилей в микроячейке: Top-German или VW-Audi;
  • имеют более высокую долю автомобилей высшего класса (в определении, специфичном для Аризоны);
  • иметь в микроячейке двигатели большего размера;
  • иметь меньшую долю маленьких и очень маленьких автомобилей (Ford Fiesta, Ford Ka и др.) в микроячейке;
  • имеют более высокую долю автомобилей высшего среднего класса и автомобилей высшего класса (BMW5er, BMW7er и т. д.);
  • иметь более высокую долю автомобилей высшего класса (BMW 7er и др.) в микроячейке;
  • имеют более высокую долю родстеров и конвертируемых устройств в микроячейке;

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

Часть третья: модель обучения с учителем

Для этой последней части предоставляется новый набор данных, содержащий столбец с метками, который сообщает, стал ли человек клиентом после маркетинговой кампании. Этот новый набор данных очень несбалансирован: 42430 выборок принадлежат к классу людей, которые не ответили на кампанию, и 532 - к классу, который ответил.

Метрики

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

Это потому, что, например, если модель предсказывает, что все образцы принадлежат классу с большинством образцов (в данном случае классу 0), точность модели будет 98,7%, что действительно хорошо. ценность.

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

Развитие модели представлено следующим образом:

  1. Анализ набора данных. Обучение и тестирование с использованием всех функций и только выбранных функций из части кластеризации клиентов. Классификатор логистической регрессии будет использоваться для определения того, какой из них является лучшим. Алгоритм стратифицированной перекрестной проверки K-Fold также будет использоваться, чтобы попытаться справиться с несбалансированными данными.
  2. Техника перераспределения выборки. Для работы с несбалансированными данными будут использоваться методы повторной выборки (случайная недостаточная выборка и случайная передискретизация). Тот же самый классификатор будет обучен и снова протестирован с передискретизированными данными, а результаты будут сравнены с ранее полученными.
  3. Определение лучшей модели. Несколько моделей машинного обучения будут использоваться, чтобы найти ту, которая обеспечивает наилучший результат.
  4. Настройка гиперпараметров. гиперпараметры лучшей модели будут настроены, чтобы найти комбинацию, которая оптимизирует результаты.

Результаты анализа набора данных

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

Выборка результатов перераспределения

Используя комбинацию случайной недостаточной выборки с последующими алгоритмами случайной избыточной выборки, логистическая регрессия получила средний балл ROC AUC 0,69. Сравнение этого результата с результатом, полученным на предыдущем шаге, показывает, что использование методов повторной выборки улучшило общие результаты. Отныне повторно выбранный набор данных будет использоваться для дальнейшего анализа.

Определение лучшей модели

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

  • Многослойный Perceptro (Scikit-learn)
  • Логистическая регрессия
  • K-Ближайшие соседи
  • AdaBoost

В этой части проекта все вышеперечисленные модели были инициализированы с использованием параметров по умолчанию. Я использовал метод Repeated Stratified KFold, чтобы применить перекрестную проверку к каждой модели.

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

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

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

Настройка гиперпараметров

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

Для этой части были настроены следующие параметры:

  • n_neighbors: количество соседей (значения от 3 до 21)
  • веса: функция веса, используемая в прогнозировании (были проверены равномерность и расстояние)
  • leaf_size: размер листа, передаваемый в BallTree или KDTree (значения от 20 до 100)
  • p: параметр мощности для метрики Минковского (значения от 2 до 20)

Лучшими значениями гиперпараметров были:

leaf_size = 20, n_neighbors = 3, weights = 'distance'

Оценка и проверка модели

С новыми параметрами модель была снова оценена с использованием той же перекрестной проверки, что и раньше, и теперь auc составил 0,951.

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

Scores standard deviation = 0.007875

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

Заключение

Над этим проектом было очень интересно работать!

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

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

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

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

Обоснование

Решения, найденные в этих проектах, считаются адекватными.

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

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

Важно сказать, что проект в области науки о данных редко следует прямым путем от начала до конца. Обычно то, что происходит, похоже на цикл PDCA: вы составляете план действий (План), вы выполняете план (Выполнить ), вы проверяете полученные результаты и видите возможные улучшения (Проверить) и, наконец, выполняете эти улучшения (Действие). Затем цикл продолжается до получения удовлетворительного результата.

Большое спасибо за чтение!

Надеюсь, мне удалось наглядно показать пример проекта Data Science, шаг за шагом, со всем анализом и мыслями.

Любые комментарии и предложения приветствуются!

Полный код доступен на моей странице GitHub

GitHub

Не стесняйтесь связаться со мной на моей странице в Linkedin

Linkedin