Problem Introduction

Это упражнение по машинному обучению было выполнено с использованием африканского сообщества специалистов по данным под названием Zindi. Этот челлендж был разработан Data Science Nigeria специально для DSN Bootcamp 2018, который проходил 11–14 октября 2018 года. навыки.

Итак, давайте рассмотрим бизнес-проблему, прежде чем мы начнем с технических аспектов проекта. Как упоминалось в самой задаче:

SuperLender — местная компания, занимающаяся цифровым кредитованием, которая гордится тем, что эффективно использует модели кредитного риска для предоставления выгодных и высокоэффективных альтернатив кредитов. Его подход к оценке основан на двух основных факторах риска прогнозирования дефолта по кредиту: 1) готовность платить и 2) способность платить. Поскольку не все клиенты возвращают деньги, компания инвестирует в опытного специалиста по обработке данных для создания надежных моделей,для эффективного прогнозирования вероятности погашения. Ваша задача — предсказать, был ли кредит хорошим или плохим, т. е. точно предсказать переменную бинарного результата, где «Хорошо» равно 1, а «Плохо» равно 0.

Strategy to solve the problem

Процесс следовал CRISP-DM (межотраслевому стандартному процессу интеллектуального анализа данных). Приведенная ниже схема процесса использовалась для обработки и последующего прогнозирования данных:

Metrics

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

Мы можем заметить, что целевое распределение искажено, и класс (1) доминирует над переменной. Таким образом, это несбалансированная цель.

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

- Обзор ансамблей для проблемы дисбаланса классов: подходы на основе бэггинга, бустинга и гибрида, 2011 г.

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

EDA

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

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

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

Затем инженерия данных была завершена с использованием понимания данных, чтобы сообщить, какие функции необходимо разработать; Я не буду упоминать все функции, которые были разработаны, а только одну в качестве примера:

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

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

Modelling

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

Затем выбор признаков был завершен с использованием нескольких методов, перечисленных здесь:

  1. Hyperopt: одним из самых популярных пакетов оптимизации гиперпараметров является пакет Hyperopt, который использует байесовские алгоритмы оптимизации для поиска оптимальных решений заданной функции в неоднозначных пространствах.
  2. SmartCorrelatedSelection находит группы взаимосвязанных функций, а затем выбирает из каждой группы функцию по определенным критериям: функция с наименьшим количеством отсутствующих значений, функция с наибольшим количеством уникальных значений, функция с наибольшей дисперсией и функция с наилучшей производительностью в соответствии с оценкой, введенной пользователем. .
  3. SelectByShuffling выбирает функции, определяя падение производительности модели машинного обучения, когда значения каждой функции перемешиваются случайным образом.
  4. RecursiveFeatureElimination выбирает функции после процесса рекурсивного исключения.
  5. RecursiveFeatureAddition выбирает функции после рекурсивного процесса добавления.
  6. SelectByTargetMeanPerformance использует среднее значение цели по категории или интервалу (если переменная является числовой) в качестве прокси для оценки цели. С помощью этого прокси селектор определяет производительность каждой функции на основе выбранной метрики, а затем выбирает функции на основе этого значения производительности.

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

Было замечено, что это единственное серьезное влияние на дерево решений, но незначительное.

Hyperparameter tuning

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

Был ли способ фактически определить лучший набор функций, а также оптимизировать гиперпараметры модели?

Конечно, Sklearn Grid Search можно использовать, но исчерпывающий подход заставил меня задаться вопросом, есть ли лучший способ исследовать пространство поиска и найти оптимальное решение?

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

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

Results

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

Этот выбор порога переводится в следующую матрицу путаницы:

Conclusion/Reflection

Теперь пришло время представить прогноз Zindi, сайт не упомянул конкретную метрику, используемую для оценки, но моя модель работала достаточно хорошо, менее 0,1 от лучшего представления. (Мой результат: 0,2937, Лучший результат: 0,2)

Improvements

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

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