Настройка решающего дерева
Решающее дерево строится сверху вниз, начиная от корневой вершины, содержащей все объекты обучающей выборки. Сначала настраивается правило для корня, разделяющее эти объекты на две группы, первая из которых уходит левому потомку, а вторая - правому. Затем процесс расщепления вершин производится рекурсивно для каждой из образовавшихся вершин, как показано на рисунке:

Синим показаны внутренние узлы (inner nodes), в которых подбираются правила вида
а красным - листовые вершины (terminal nodes, leaves), в которых строится итоговый прогноз.
Обратим внимание, что указанные правила в узлах одинаково хорошо работают и для вещественных, и для бинарных признаков. В последнем случае как раз образуются две ветки в зависимости от значения бинарного признака. Категориальные признаки можно закодировать через one-hot кодирование, тогда спуск по дереву будет осуществляться вправо, если категориальный признак равен определённой категории, и влево иначе. Если категорий много, то потребуется много сравнений, и всё равно не все значения категорий окажутся перепробованными.
Поэтому для решающих деревьев рекомендуется кодирование средним. Тогда при использовании образовавшегося признака объекты с высоким средним значением отклика пойдут вправо, а с низким - влево, что резко упростит прогнозирование для последующих этапов.
Выбор решающего правила во внутренних узлах дерева
Чтобы задать решающее правило в каждом внутреннем узле дерева , необходимо специфицировать, какой именно признак с каким порогом сравнивать. Для этого вводится функция неопределённости (impurity fuction) , характеризующая степень неопределённости откликов для объектов, попавших в соответствующий узел . Примеры основных таких функций будут даны в следующей главе, а пока достаточно знать, что
-
эта функция равна нулю, когда все объекты, попавшие в лист, имеют одинаковый отклик (соответствуют одному значению в регрессии или одному классу в классификации);
-
функция тем выше, чем сильнее неопределённость в откликах (выше дисперсия для вещественных откликов, а в случае классификации - когда распределение классов ближе к равномерному).
Для -го признака и порога решающее правило разобьёт узел на два дочерних узла: левый и правый . Если изначально в узле было объектов, то они распределятся между левым и правым потомков в количествах и .
Тогда применение правила изменит неопределённость откликов с в родительском узле на в дочерних, в результате чего получим общее изменение неопределённости:
Подбор признака и порога осуществляется перебором всевозможных признаков и значений порога (среди уникальных значений -го признака для объектов, попавших в узел ) и выбором такой пары , для которых достигается минимальная неопределённость в дочерних узлах или (что то же самое) достигается максимальное изменение неопределённости при переходе от родительского узла к дочерним:
Стоит отметить, что в алгоритме вещественные признаки будут выбираться чаще, чем бинарные, поскольку для них больше уникальных значений порога, что даёт оптимизации больше гибкости подогнаться по порогу именно по вещественному признаку.
Сложность расчета , как будет видно из следующей главы, имеет порядок , поэтому сложность подбора решающего правила равна , поскольку для каждого признака в качестве порога нужно перебрать его всевозможные уникальные значения, число которых не превосходит .
Эту сложность можно снизить двумя способами:
-
Перебирать не все возможные пороги, а только основные. В качестве таковых можно взять 10%,20%,...90% персентиль в распределении признака. Тогда сложность подбора правила снизится до , поскольку мы будем перебирать всего 9 значений порога. Правда, для расчёта персентилей потребуется предварительно отсортировать значения каждого признака, что имеет порядок . Разумеется, можно брать и более детализированную сетку значений. Перебор по более грубой сетке значений повысит влияние бинарных признаков, т.к. они станут более конкурентоспособными в сравнении с вещественными. Также это повысит ожидаемую глубину дерева, необходимую для точного приближения данных.
-
Предварительно отсортировать каждый признак. Это наложит дополнительные вычислительные расходы на сортировку, зато позволит более эффективно пересчитывать значения функций неопределённости за , поскольку мы будем знать, какой объект переходит из правой дочерней вершины в левую при каждом изменении порога без сканирования всех объектов, и сможем пересчитывать за , используя кумулятивные статистики. Итоговая сложность подбора правила по всем порогам тогда будет .
Используя второй метод эффективного подбора правила, совокупная сложность построения всех правил на уровне будет иметь сложность (поскольку все объектов выборки проходят через один из узлов на каждом уровне), а общая сложность построения дерева глубины будет иметь порядок .