Производительность дерева решений, мл - PullRequest
1 голос
/ 22 апреля 2020

Если мы не дадим никаких ограничений, таких как max_depth, minimum number of samples for nodes, может ли дерево решений всегда давать 0 ошибок обучения? или это зависит от набора данных? Как насчет показанного набора данных?

edit - возможно разделение, которое приводит к более низкой точности, чем родительский узел, верно? Согласно теории дерева решений, там должно прекратиться расщепление, даже если конечные результаты после нескольких расщеплений могут быть хорошими! Я прав?

enter image description here

1 Ответ

1 голос
/ 22 апреля 2020

Дерево решений всегда найдет разделение, которое повышает точность / оценку

Например, я построил дерево решений на основе данных, аналогичных вашим:

Accuracy by depth

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

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

Действительно, иногда мы предотвращаем разделение в узле, если улучшение, созданное разделением, недостаточно велико. Это проблематично c, так как некоторые отношения, такие как y=x_1 xor x_2, не могут быть выражены деревьями с этим ограничением.

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

  1. Обрезка деревьев , как в этом относительно новом примере . По сути, это означает, что вы строите все дерево, но затем вы go возвращаете и сокращаете узлы, которые не оказали достаточного влияния на производительность модели.
  2. Используя коэффициент вместо усиления для расщепляется. По сути, это способ express того факта, что мы ожидаем меньшего улучшения от 50% -50%, чем 10% -90%.
  3. Установка гиперпараметров, таких как max_depth и min_samples_leaf, чтобы дерево не раскололось слишком сильно.
...