Дерево решений всегда найдет разделение, которое повышает точность / оценку
Например, я построил дерево решений на основе данных, аналогичных вашим:
Дерево решений может получить точность 100% для любого набора данных, в котором нет двух выборок с одинаковыми значениями признаков, но разными метками.
Это одна из причин, по которой деревья решений имеют тенденцию для наложения, особенно для многих функций или для категориальных данных с большим количеством опций.
Действительно, иногда мы предотвращаем разделение в узле, если улучшение, созданное разделением, недостаточно велико. Это проблематично c, так как некоторые отношения, такие как y=x_1 xor x_2
, не могут быть выражены деревьями с этим ограничением.
Обычно дерево не останавливается, потому что он не может улучшить модель обучающих данных. Причина, по которой вы не видите деревья со 100% точностью, заключается в том, что мы используем методы для уменьшения переобучения, такие как:
- Обрезка деревьев , как в этом относительно новом примере . По сути, это означает, что вы строите все дерево, но затем вы go возвращаете и сокращаете узлы, которые не оказали достаточного влияния на производительность модели.
- Используя коэффициент вместо усиления для расщепляется. По сути, это способ express того факта, что мы ожидаем меньшего улучшения от 50% -50%, чем 10% -90%.
- Установка гиперпараметров, таких как
max_depth
и min_samples_leaf
, чтобы дерево не раскололось слишком сильно.