Размер дерева при увеличении градиентного дерева

10

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

Есть ли установленный способ, как вырастить деревья с точно Jконечными узлами для повышения градиентного дерева?

Я рассмотрел процедуру выращивания дерева пакета R, gbmи кажется, что он расширяет дерево в глубину и использует эвристику, основанную на улучшении ошибок, чтобы выбрать, расширять ли левый или правый дочерний узел - это правильно?

Питер Преттенхофер
источник
2
gbm использует CART для построения деревьев, хорошо известный алгоритм 80-х годов. Эвристика называется примесью Джини, довольно стандартный выбор для регрессии с квадратичной потерей.
2
Афаик Джини примесь используется для классификации проблем. Тем не менее, вопрос относится к размеру деревьев.
Питер Преттенхофер
Это добавляет ветку за один раз. Я был бы удивлен, если бы каждое следующее разделение было лучшим из оставшихся кандидатов разделения в дереве, а не только в ветви. Есть моменты, когда данные не поддерживают точное число - например, когда данные слишком малы для «J».
EngrStudent
Как сказал @EngrStudent, вы не можете форсировать точное количество узлов. Однако у вас есть некоторый контроль над верхней границей количества узлов. gbmимеет параметр, n.minobsinnodeкоторый контролирует минимальное количество объектов на узел. Конечно, тогда число узлов меньше или равно NumberOfPoints / n.minobsinnode
G5W
Если бы я искал листья «J», то я бы полностью построил дерево, а затем, предполагая, что их было больше, чем J, я бы подрезал до J. Это дало бы мне «J» узлы, и они были бы самыми информативные сплиты - это была бы самая здоровая модель CART. Если разделений недостаточно, я мог бы просто случайным образом разделить домены, чтобы получить 'J', но они были бы ложными и несколько тривиальными. Я мог бы взглянуть на распределение значений внутри листа и использовать приближение, основанное на CDF, но это будет отличаться от модели среднего значения для листа.
EngrStudent

Ответы:

2

Решение в R gbmне является типичным.

Другие пакеты, такие как scikit-learnили LightGBMиспользуют так называемые (в scikit-learn) BestFirstTreeBuilder, когда количество листьев ограничено. Он поддерживает приоритетную очередь всех листьев и на каждой итерации разбивает лист, что обеспечивает наилучшее уменьшение примесей. Таким образом, это не первый в глубину и не первый, а третий алгоритм, основанный на расчетах в листах.

ii

Дэвид Дейл
источник