Обзор деревьев классификации и регрессии в машинном обучении

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

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

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

Parent Node - a node divided into sub-nodes
Child Node - sub-nodes from a parent node
Root Node - represents the sample space/population that will be split into two or more sets (sub-nodes)
Decision Node - sub-node that splits into more sub-nodes
 
Leaf Node - nodes without splits (children)
Branch - a subsection of a decision tree
Pruning - reducing the size of a decision tree by removing nodes

Критерии разделения

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

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

Энтропия и получение информации

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

где 𝑛 - количество групп, а (𝑝𝑖) - вероятность принадлежности к i -й группе. Допустим, у нас есть набор данных, содержащий 462 положительных (1) метки и 438 отрицательных (0) меток. Мы можем вычислить энтропию набора данных:

Прирост информации использует энтропию как меру примеси. Это разница в энтропии до и после разделения, и она даст нам число того, насколько уменьшилась неопределенность. Это также ключевой критерий, используемый в алгоритме дерева классификации ID3. Для расчета прироста информации:

Джини примеси

При выполнении задач классификации используется функция индекса Джини. Из Corrado Gini эта функция информирует нас о том, насколько чистыми являются листовые узлы в дереве. Примесь Джини всегда будет иметь значение от 0 до 0,5, чем выше значение, тем более неупорядоченная группа. Для расчета примеси джини:

где (𝑝𝑖) - вероятность принадлежности к i -й группе. В приведенном выше уравнении указано, что примесь Джини равна 1 минус сумма различных вероятностей в каждом расщеплении.

Обрезка деревьев решений

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

  • max_depth - определяет, насколько глубоко мы хотим, чтобы дерево было.
  • min_samples_leaf - минимальное количество обучающих выборок в каждом листовом узле.
  • max_leaf_nodes - максимальное количество конечных узлов
  • min_impurity_decrease - порог, определяющий, будет ли узел разделен или станет листом.

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

Деревья принятия решений с помощью Scikit-Learn

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

Импорт необходимых библиотек

Загрузка и предварительный просмотр набора данных

Определение предикторов и целевых функций, выполнение тестового разделения поездов и предварительная обработка данных

Обучение классификатору дерева решений

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

Построение дерева

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

Важность функции

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

Оптимизация классификатора дерева решений с поисковой сеткой cv

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

Запустив поиск по сетке с перекрестной проверкой, лучшие параметры улучшили наш компромисс между смещением и дисперсией. Первая модель с параметрами по умолчанию работала на наборе поездов на 20% лучше, чем на тестовом наборе, что указывает на низкую систематическую ошибку и высокую дисперсию в дереве. Дерево решений с гиперпараметрами, установленными из поиска по сетке, показывает, что дисперсия была уменьшена с 5% -ным падением точности для набора поездов и тестов.

Регрессия с КОРЗИНОЙ

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

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

  • 𝐷𝑚 - обучающее подмножество в узле 𝑚
  • 𝑛𝑚 - количество обучающих выборок в узле 𝑚.
  • 𝑦𝑖 - целевое значение для i -й выборки.
  • 𝑦̂𝑚 - прогнозируемое целевое значение, среднее значение выборки.

При оценке производительности модели мы будем смотреть на среднеквадратичную ошибку (RMSE). Это просто квадратный корень из среднего квадрата ошибок. Извлекая квадратный корень, мы можем измерить размер ошибки, при которой большие ошибки имеют больший вес, чем среднее значение. Метрика, которую мы будем использовать для оценки степени соответствия нашей модели, - это значение R-квадрат. R-квадрат показывает нам процент дисперсии зависимых переменных, объясняемых в совокупности (Frost et al., 2020).

Деревья регрессии с помощью Scikit-Learn

Давайте продолжим и построим регрессор дерева решений с помощью sklearn. Я буду использовать Набор данных Ames Housing, полученный из kaggle. В этом руководстве я буду использовать только 3 непрерывных функции и целевую функцию.

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

Обучение регрессору дерева решений

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

Оптимизация регрессора дерева решений с поиском по сетке

Запустив поиск по сетке с перекрестной проверкой с помощью регрессора дерева решений, мы улучшили производительность на тестовом наборе. R-квадрат был чрезмерным соответствием данным с базовым регрессором дерева решений с использованием параметров по умолчанию с оценкой r-квадрата .9998. Используя параметры поиска по сетке, мы увеличили r-квадрат на тестовом наборе с .42 до .56. R-квадрат поезда, равный .58, говорит нам, что модель не переоснащается обучающими данными и будет работать аналогичным образом на невидимом тестовом наборе.

Вывод

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

Я надеюсь, что этот пост был полезен для лучшего понимания деревьев регрессии и классификации. Если что-то упущено или что я мог бы объяснить более четко, не стесняйтесь оставлять отзыв! Большое спасибо за то, что нашли время прочитать сообщение.

Ресурсы

  • 1.10. Деревья решений. (нет данных). Получено с https://scikit-learn.org/stable/modules/tree.html#
  • Sklearn.tree.DecisionTreeClassifier. (нет данных). Получено с https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html
  • Sklearn.tree.DecisionTreeRegressor. (нет данных). Получено с https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html
  • Ронаган, С. (1 ноября 2019 г.). Математика деревьев решений, случайный лес и важность функций в Scikit-learn и Spark. Получено с https://towardsdatascience.com/the-mat Mathematics-of-decision-trees-random-forest-and-feature-importance-in-scikit-learn-and-spark-f2861df67e3
  • 14.2 - Рекурсивное разбиение на разделы. (нет данных). Получено с https://online.stat.psu.edu/stat555/node/100/
  • Браунли, Дж. (14 августа 2020 г.). Деревья классификации и регрессии для машинного обучения. Получено с https://machinelearningmaster.com/classification-and-regression-trees-for-machine-learning/
  • Фрост Дж., Ломбарди Дж., Хадеро М., Аксамитова Дж., Ламесса, Лори,. . . Дубей, Д. (03 ноября 2020 г.). Как интерпретировать R-квадрат в регрессионном анализе. Получено с https://statisticsbyjim.com/regression/interpret-r-squared-regression/
  • RMSE: среднеквадратическая ошибка. (2020, 06 июля). Получено с https://www.statisticshowto.com/probability-and-statistics/regression-analysis/rmse-root-mean-square-error/ »
  • Sklearn.metrics.mean_squared_error. (нет данных). Получено с https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html
  • Титаник - Машинное обучение после катастрофы. (нет данных). Получено с https://www.kaggle.com/c/titanic
  • Данные Ames Housing Data за лето 2018 г. (без даты). Получено с https://www.kaggle.com/c/ames-housing-data-summer-2018/data