Понимание деревьев решений в машинном обучении и способы их реализации на Python с помощью sklearn

Деревья решений - это тип обучения с учителем, используемый для классификации (да / нет) и регрессии (непрерывные данные), когда данные непрерывно разделяются в соответствии с определенным параметром. Прогнозируемый класс является производным от характеристик данных. В следующей статье создается дерево решений из 311 в 3.11 Project. В этом проекте прогнозируется положительный или отрицательный результат разрешения проблемы. Это определяется следующими особенностями:

Агентство: Департамент транспорта, Департамент здравоохранения и психической гигиены, Департамент санитарии, Департамент сохранения и развития жилищного фонда, Департамент парков и зон отдыха и т. д.
Район: Бруклин, Куинс, Манхэттен, Бронкс, Статен-Айленд.
Местоположение: долгота / широта, перекрестки, перекрестки
Дата создания / закрытия
Жалоба Тип: отопление / горячая вода, грызуны, шум, состояние улицы, незаконная парковка, антисанитарное состояние, заблокированная подъездная дорога - вот лишь несколько примеров. < br /> Решение Описание: описал, что было сделано в ответ на запрос службы 311
.

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

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

Как сделать дерево решений в Python с помощью sklearn

У нас есть данные в фреймворке Pandas. Мы устанавливаем для всех наших функций значение X и удаляем resolution_outcome, потому что это то, что мы прогнозируем. Мы устанавливаем Y равным resolution_outcome.

Затем обучаем классификатор и делаем прогнозы:

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

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

Оттуда мы создаем визуализацию с помощью graphviz и pydotplus: