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

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

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

Некоторые функции, которые делают дерево решений очень эффективным:

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

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

Чтобы решить эту проблему, нам нужно тщательно настроить гиперпараметры деревьев решений.

Что такое гиперпараметр??

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

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

мы будем использовать один из встроенных наборов данных набора данных Seaborn Iris.

Начнем с классификатора дерева решений без какой-либо настройки гиперпараметров.

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

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

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

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

1. Критерий:

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

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

В основном это означает, что примесь увеличивается со случайностью. Например, допустим, у нас есть коробка с десятью мячами. Если все шары одного цвета, у нас нет случайности и примесь равна нулю. Однако, если у нас есть 5 синих шаров и 5 красных шаров, примесь равна 1. Если вы посмотрите на листовые узлы (узлы в конце дерева), вы увидите, что Джини равен нулю.

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

Мы можем выбрать Джини или примесь, используя параметр criterion. Значение по умолчанию — Джини.

2. Максимальная глубина:

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

3. Минимальное разделение образцов:

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

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

4. Минимальный лист образцов:

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

5. Min_impurity_split :

Этот параметр можно использовать для управления деревом на основе значений примесей. Он устанавливает порог Джини. Например, если для параметра min_impurity_split установлено значение 0,3, узел должен иметь значение Джини больше 0,3 для дальнейшего разделения.

6. min_impurity_decrease :

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

7. Максимальные возможности:

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

8. Разделитель:

Он определяет стратегию, используемую для выбора разделения в каждом узле. Два распространенных варианта:

  • Лучший: рассматривает все возможные разбиения и выбирает лучший на основе выбранного критерия.
  • Случайный: он выбирает случайное подмножество функций и выбирает наилучшее разделение из этого подмножества.

По умолчанию Splitter является «Лучшим».

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

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

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.