Как обрабатываются непрерывные признаки в решающих деревьях
Что проверяют
Понимаете ли вы механику поиска порога и её стоимость, а не только фразу «дерево делит по порогу». Следом часто спрашивают, нужно ли масштабировать признаки для деревьев и чем разбиение в градиентном бустинге отличается от классического CART.
Как отвечать
В CART непрерывный признак превращается в набор бинарных вопросов x <= t:
- кандидаты: значения признака в узле сортируются, порогом служит середина между соседними различными значениями. В scikit-learn именно так, поэтому в дереве видны пороги вроде
2.45; - критерий: для каждого кандидата считается уменьшение неоднородности. Для классификации это Gini или энтропия, для регрессии
squared_error. После сортировки все пороги перебираются за один проход с накопленными суммами, поэтому узел стоит O(n log n) на признак; - выбор: берётся лучший порог по всем признакам, и процедура рекурсивно повторяется в дочерних узлах. Один признак может встретиться в дереве многократно.
Бустинги так не делают, на миллионах строк это дорого. Они заранее разбивают признак на корзины по квантилям и перебирают только их границы: max_bin в LightGBM (255 по умолчанию), tree_method="hist", ставший умолчанием в XGBoost 2.0, border_count в CatBoost, max_bins в HistGradientBoostingClassifier. Точность почти не страдает, а обучение заметно ускоряется.
Из механики следуют свойства. Дереву безразлично монотонное преобразование признака, так что масштабирование и логарифм разбиения не меняют. Предсказание кусочно-постоянное, и за пределы диапазона обучающих данных регрессионное дерево не экстраполирует. Пропуски DecisionTreeClassifier в scikit-learn обрабатывает с версии 1.3, сам выбирая, в какую ветку их отправить.
Где спотыкаются
Советуют стандартизировать признаки перед деревом. Порядок значений от этого не меняется, значит, и разбиения тоже.
Вручную бинируют признак на три-пять интервалов, «чтобы дереву было проще». Так теряется информация, а оптимальный порог дерево нашло бы само.
Верят встроенной важности признаков. Важность по уменьшению неоднородности завышает непрерывные признаки с большим числом уникальных значений, для выводов надёжнее permutation importance.