Конвейерно-ориентированный подход

Мотивация

В этой статье мы попытаемся улучшить предсказание модели дерева решений применительно к исследованию, показывающему индивидуальный доход в Соединенных Штатах. Данные взяты из переписи 1994 года и содержат информацию о семейном положении каждого человека, возрасте, характере работы и других важных характеристиках. Мы хотим предсказать, зарабатывают ли люди меньше, равно или больше 50 000 долларов в год. Ниже вы можете увидеть первые 5 строк набора данных, который доступен в Университете Калифорнии.

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

Первоначальный проект был реализован с использованием языка программирования Python, а исходный код хранится в файле .ipynb, доступ к которому можно получить с помощью инструмента Google Collaboratory от Google. Чтобы загрузить файл, просто перейдите в Git Repository и обратитесь к разделу 3. Ниже приведены основные изменения, внесенные для улучшения результатов прогнозирования.

Описание конвейера

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

Наиболее важные изменения коснулись пайплайна: для категориальных функций был создан класс CategoricalTransformer, который реализует метод transform(), преобразующий столбцы объекта в категориальные и возвращающий фрейм данных. .

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

Настройка модели и гиперпараметры

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

Лучшая модель определялась следующим образом:

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

Для построения изображения выше необходимо было изменить значение параметра max_depth, лучшее найденное значение было 9, но из соображений размера дерева мы установили значение 3. Чтобы проверить изображение дерева с лучшим max_depth и иметь доступ к исходному коду. С упомянутыми здесь изменениями получите доступ к Git Repository.

Результат

В конечном результате мы можем просмотреть следующий отчет определенной модели:

Если мы сравним новые результаты со старым отчетом, мы увидим улучшение, достигнутое моделью, наиболее заметным из которых является повышение точности на 4%. Для лучшего анализа результатов важно знать, что результаты для класса 0 относятся к людям, имеющим доход меньше или равный 50 000 долларов в год; данные для класса 1 включают людей, которые получают более 50 000 долларов. В отчете, полученном после внесения изменений, следует отметить, что он не так точен в предсказании людей, принадлежащих к классу 1. Однако все остальные результаты были выше по сравнению со старой моделью.

Вывод

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