Есть много постов в блогах, видео на YouTube и т. Д. Об идеях создания мешков или повышения деревьев. Мое общее понимание таково, что псевдокод для каждого из них:
Bagging:
- Возьмите N случайных выборок x% выборок и y% функций
- Установите вашу модель (например, дерево решений) на каждый из N
- Прогнозировать с каждым N
- Усредните прогнозы, чтобы получить окончательный прогноз
Повышая:
- Подгоните вашу модель (например, дерево решений) к вашим данным
- Получить остатки
- Подгоните вашу модель к остаткам
- Перейти к 2 для N раундов повышения
- Окончательный прогноз - это взвешенная сумма последовательных предикторов.
Я приму любые пояснения к моему пониманию выше, но мой заданный вопрос заключается в следующем:
И XGBoost, и LightGBM имеют параметры, которые позволяют упаковывать пакеты. Приложение не Bagging OR Boosting (о чем говорится в каждом сообщении в блоге), а Bagging AND Boosting. Каков псевдокод для того, где и когда происходит объединение в пакеты и повышение?
Я ожидал, что это будут «Boosted Baged Trees», но, похоже, это «Boosted Bagged Trees». Разница кажется существенной.
Усиленные деревья в мешках:
- Возьмите N случайных выборок x% выборок и y% функций
- Подберите увеличенные деревья на каждом из N образцов
- Прогнозировать с каждым N
- Усредните прогнозы, чтобы получить окончательный прогноз
Это кажется лучшим способом сделать это. В конце концов, риск в повышении - это переоснащение, и основное преимущество мешков - это уменьшение переоснащения; мешки с кучей модернизированных моделей кажутся отличной идеей.
Тем не менее, при просмотре, например, scikit-learn
Gradient_boosting.py (который делает выборку пакетов, но не случайный выбор объектов) и объединении нескольких маленьких самородков в сообщениях о LightGBM и XGBoost, похоже, что XGBoost и LightGBM работают следующим образом:
Усиленные деревья в мешках:
- Подгоните дерево решений к вашим данным
- Для я в N бустеров:
- Получить остатки
- если я модифицирую bag_frequency == 0 (то есть, мешок каждые 5 раундов):
- Возьмите одну случайную выборку из x% выборок и y% функций; использовать эту случайную выборку в будущем
- подгонять дерево к остаткам
- Окончательный прогноз - это взвешенная сумма последовательных предикторов.
Пожалуйста, исправьте мое понимание здесь и заполните детали. Boosted Bagged Tree (всего 1 случайное дерево на bag_frequency) не так мощно, как Baged Boosted Tree.