Привет всем🙌.

Ранее в части I мы построили модель дерева решений для классификации типов цветов.

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

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

Вот некоторые ключевые слова, которые будут рассмотрены:

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

Давайте визуализируем наше дерево решений.

Класс дерева в sklearn имеет метод plot_tree, который позволяет нам визуализировать дерево решений через matplotlib.

Выше представлено наше дерево решений, вы можете увидеть, какие вопросы оно задавало для разделения данных. Начиная с корневого узла, он разделяет данные, задавая вопрос «Ширина лепестка (см) ≤ 0,8?», данные, которые отвечают True, переместятся к левому дочернему узлу, в противном случае переместятся к правому дочернему узлу. (Обратите внимание, что X[3] → 4-й столбец в кадре данных X). Эта процедура повторяется до тех пор, пока листья не станут чистыми (все данные одного класса), что часто приводит к переоснащению.

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

Критерии остановки разделения можно настроить с помощью параметров в sklearn.tree.DecisionTreeClassifier, вот некоторые из них:

  • min_samples_split: останавливается, когда узел содержит меньше указанного предела N.
  • max_depth: после запроса останавливается до тех пор, пока глубина дерева не станет равной N (начиная с корневого узла = глубина 1), в противном случае продолжайте, пока все листья не станут чистыми.
  • min_impurity_split: останавливается, когда уровень загрязнения узла ниже n%. например, если n = 5, то дерево перестает разбиваться, когда более 95% данных принадлежат классу A.
  • min_impurity_decrease: остановить разбиение, если оно не приводит к получению дополнительной информации.

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

  1. Почему он использовал ≤ 0,8 (ширина лепестка (см)) для разделения данных?
  2. Почему сначала использовался 4-й столбец (ширина лепестка (см))?

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

Чтобы в столбце petal width было выбрано значение разделения, обеспечивающее наибольшую информационную выгоду, выполните следующие действия:

i) Сортировать значения в порядке возрастания в зависимости от столбца petal width.

ii) Рассчитать среднее между соседними значениями для всех строк.

iii) Для каждого среднего значения рассчитайте прирост информации.

iv) Выберите среднее значение из шага iii, которое выводит максимальное (прирост информации).

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

Для категориального столбца просто задайте такие вопросы, как «Категория = A?», «Категория = B» и т. д. и выберите тот, который приведет к наибольшему увеличению информации, чтобы использовать его в первую очередь.

Для ранжированного столбца просто задайте такие вопросы, как «Рейтинг ≤ 1?», «Ранг ≤ 2?» и т. д. и выберите вопрос, который в первую очередь приведет к получению наибольшей информации.

Но как рассчитать прирост информации? не волнуйтесь, вот формула:

I(Dp) = Мера примесей для родительского узла

I(Di) = Мера примесей для дочернего узла i

Ni = количество данных в дочернем узле i

Np = количество данных в родительском узле

Поскольку мы рассматриваем только бинарное дерево, наша формула может быть сведена к этому

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

Есть три меры примеси, которые обычно используются

i) Примесь Джини

ii) Энтропия

iii) Ошибка классификации

Примесь Джини

  • Может пониматься как критерий минимизации вероятности неправильной классификации.

Энтропия

  • энтропия колеблется от [0,1]. 0 — самый чистый, 1 — самый нечистый.
  • На практике энтропия часто выдает такой же результат, как и примесь Джини, поэтому нет необходимости тратить слишком много времени на оценку того, какую меру примеси использовать. Следует потратить больше времени на эксперименты с различными обрезками.

Ошибка классификации

  • Полезный критерий для обрезки после дерева (обрезка после построения дерева) и не рекомендуется для выращивания дерева из-за его нечувствительности к изменениям в классе % узла.

p(i|t) = вероятность класса i в t (узел)

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

Наша последняя строка кода упорядочивает кадр данных в порядке возрастания «ig». Вот результат:

Вы можете видеть, что действительно разделение с шириной лепестка 0,8 см (рассчитанной из столбца adj_avg) приводит к максимальному (приросту информации) столбцу whenpetal width (cm).

Теперь мы ответили, почему значение 0,8 было использовано для столбца ширины лепестка для разделения данных, теперь пришло время ответить, почему он использовал столбец ширины лепестка в первую очередь? вместо длины чашелистика или любых других столбцов?

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

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

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

Спасибо за чтение! Отзывы очень приветствуются, и, пожалуйста, прокомментируйте, если есть какая-либо дезинформация, я хотел бы исправить их как можно скорее!

Использованная литература: