Обрезка решающих деревьев
В итеративном построении решающих деревьев сверху вниз мы анализировали различные правила остановки и был приведён пример, когда ранняя остановка может приводить к неоптимальным решениям: начальные правила разбиения не приводят к снижению неопределённости, а последующие - приводят.
Это весьма распространённая ситуация на практике, поэтому для повышения точности прогнозов зачастую деревья строят до самого низа (пока в узлах не останется по одному объекту или все объекты листа не будут иметь один и тот же отклик), а потом обрезают лишние ветви дерева, что называется обрезкой дерева (tree pruning).
В обрезке дерева его поддеревья заменяются их корнями, которые назначаются листовыми вершинами (с константным прогнозом). Делать это можно полным перебором, сравнивая качество прогнозов полного решающего дерева с обрезанным на валидационной выборке, однако придётся перебирать слишком много вариантов.
Поэтому в качестве кандидатов на обрезку можно перебирать только предпоследние вершины, потом предпредпоследние и так далее снизу вверх по дереву, однако это также требует большого числа вычислений.
Чтобы сделать поиск кандидатов на обрезку более направленным и эффективным используется алгоритм обрезки по минимальной цене.
Алгоритм обрезки по минимальной цене
В алгоритме обрезки по минимальной цене (minimal cost-complexity pruning) дерево строится до самого низа (хотя также можно применять досрочный останов, например, по минимальному числу объектов в листьях), после чего для каждой внутренней вершины полного дерева оценивается целесообразность разрастания вершины до поддерева, сравнивая 2 ситуации:
-
когда эта вершина имеет под собой исходное поддерево
-
когда эта вершина является терминальной (без поддерева под ним).
Эти ситуации проиллюстрированы ниже для вершины :
Обозначим поддерево с корнем во внутренней вершине . Зададим штраф , вычисляющий неточность прогнозов поддерева как среднюю функцию неопределённости в листовых вершинах поддерева или, для классификации, как просто среднюю частоту ошибок. Усреднение правильнее производить пропорционально числу объектов, попадающих в каждый лист дерева.
Дополнительно опред елим регуляризованный штраф , который, помимо штрафа за неточность прогнозов, штрафует поддерево за сложность, вычисляемую как кол ичество листьев в этом поддереве. При этом обозначает штраф за каждый дополнительный лист поддерева.
Найдём равновесное значение , при котором регуляризованный штраф за поддерево совпадёт с регуляризованным штрафом, когда поддерево заменяется на его корень (в котором сразу будет строиться прогноз, как на рисунке выше):
что можно переписать в виде
поскольку поддерево состоит всего из одного листа.
Отсюда равновесное будет равно:
Равновесное задаёт целесообразность разрастания внутренней вершины в поддерево . Если оно равно нулю, то разрастание полностью нецелесообразно, поскольку одиночная вершина и образованное из неё поддерево даёт одинаковый уровень ошибок. Но чем выше , тем построение поддерева целесообразнее, поскольку, чтобы компенсировать более высокую точность поддерева по сравнению с корнем, приходится сильнее штрафовать увеличение числа листов.
В алгоритме обрезки по минимальной цене вычисляются целесообразности для каждого поддерева полного дерева, после чего удаляется поддерево с минимальной целесообразностью. Далее пересчитываются для всех оставшихся вершин (достаточно пересчитывать не для всех, а только для поддеревьев, затронутых удалением с предыдущего шага) и процесс повторяется до тех пор, пока не останется одна корневая вершина исходного дерева. Таким образом, алгоритм выдаст систему вложенных друг в друга поддеревьев
среди которых выбирается поддерево, дающее максимальную точность на валидационной выборке.