Есть много статей, которые были перепечатаны.Я их читал.Из-за проблемы с форматом важные места не адаптированы к сайту перепечатки.Пожалуйста, нажмите на исходную ссылку, чтобы увидеть исходный текст для наиболее полного описания.
Как очень классическая модель GBDT, LightGBM и XGBoost имеют множество онлайн-принципов и реальных боевых кодов. Но я прочитал несколько формул и написал несколько строк кода. Вы всегда чувствуете пустоту в своем сердце? Пока меня однажды не спросил интервьюер. Дайте вам кучу данных, позвольте вам использовать модель GBDT для обработки. ЭтиКак данные работают внутри модели?а как вы получили окончательный ответ? Хотя ответ можно запинать на месте, но я чувствую, что интервьюер попадает в самую точку.На самом деле, это вопрос, который действительно нужно понять в первую очередь в процессе обучения. Я проверил информацию многими способами, в основном на основе XGBoost, и я изложу вам эту проблему. Вы можете сначала проверить эту ссылкуНекоторые основные параметры XGBoost, для принципиальной части, вотПринципиальное объяснение GBDT. Конечно,Принципиальное объяснение XGBoostДа, рекомендуется сначала начать с GBDT.
Пошагово объясняю процесс
Сначала поставьте перед учащимся амбициозные цели, затемОбщие параметрыслужба поддержки. использоватьboosterОпределяет, используем ли мы древовидный или линейный подход в качестве структуры для обучения. использоватьsilentОпределите, должна ли система выводить учебный контент в режиме реального времени, например глубину дерева и количество листьев. использоватьnthreadчтобы установить, сколько потоков использовать для запуска этой модели.
Следующим шагом является изучение целевых параметров. мы хотим определитьobjective, будем ли мы использовать эту модель для регрессии или классификации? Мультиклассовая или бинарная классификация? Это общая цель. Далееeval_metric, которая является функцией оценки, а также нашей функцией потерь. Все мы знаем, что оптимизация модели направлена на уменьшение значения функции потерь, поэтому это очень важно. В исходной статье xgboost наша целевая функция в XGBoost состоит из двух частей: первая часть этофункция потерь. Вторая частьфункция регуляризации, которые будут подробно рассмотрены позже.
С функцией потерь нам также необходимо определить параметр регуляризации, Функция регуляризации обычно измеряет сложность дерева.Принцип регуляризацииВы можете нажать на эту ссылку:
Здесь требуются три параметра,gamma,alpha,lambda. Стоит отметить, что я проверилxgboost оригинальная бумагаи различные блоги, не нашелОписание в математической формуле. Но это имеет смысл и существует как параметр регуляризации l1. Я предполагаю, что в большинстве случаев это может быть 0, в результате чего на формулу не обращают особого внимания. Я смело добавил это сюда.
Во-первых, дерево имеетлистовые узлы, этоЗначения листовых узлов образуютразмерный вектор, которые соответствуют приведенным выше функциям регуляризации соответственно.
я прав(gamma) Этот параметр подробно объясняется, этот абзац можно посмотреть, если интересно
gamma, в видеПараметр регуляризации , его существование должно позволятькак можно меньше,gammaЧем выше значение, тем более консервативным становится алгоритм. В первоначальном введении параметра говорилось так:gammaэто минимальное снижение потерь, необходимое для дальнейшего разделения в листовом узле дерева. Я пытаюсь объяснить это описание без лишних формул: мы видим, что функция регуляризации на самом деле может быть записана так:
Стратегия разделения узлов xgboost заключается в разделении, если сумма значений целевой функции левой и правой двухбайтовых точек меньше, чем у родительского узла. Здесь будет использована разница: целевая функция двух дочерних узлов минус целевая функция родительского узла должна быть больше 0. Здесь гамма - константа, тогда:
некоторые изФункция представляет собой целевую функцию за вычетом константычасть.разница в целевой функции, в основном обусловленная уменьшением функции потерь.
Я сделал простое объяснение здесь, вы можете увидеть спецификуоригинальная бумагаобъяснил более понятно.Если у вас есть какие-либо вопросы или идеи, пожалуйста, не стесняйтесь жаловаться в области комментариев.
Теперь, когда целевая функция определена, используйте данные для обучения. Наше обучение в основном использует GBDT в качестве основы для обучения.
Сначала выполните обучение CART для этой части данных. После обучения результата обучение дерева должно быть неточным. Затем, после того как функция оценки оценит ошибку, она переходит ко второму процессу генерации дерева.
Целью второго дерева является не исходная цель, а остаток между целью и предсказанным значением предыдущего дерева. Остаток принимается заГБДТТочно так же в качестве цели обучения второго дерева используется отрицательный градиент целевой функции.
Целью обучения третьего дерева является общий остаток, изученный первыми двумя деревьями. Изучая таким образом, теоретически наша общая ошибка уменьшается шаг за шагом.
.......
После повторения этой итерации n разn_estimatorПараметр ограничивает максимальное количество остовных деревьев, которое также является максимальным количеством итераций. Когда n достигает этого числа, генерация новых деревьев прекращается.
Значения деревьев в каждом предыдущем обучении суммируются как окончательный результат обучения. Мы увидим, что сложение значений каждого дерева фактически каждый раз добавляет отрицательный градиент к исходной целевой функции, что эквивалентно вычитанию градиента. Таким образом, процесс оптимизации GBDT на самом деле является принципом градиентного спуска. Это может быть ядром GBDT.
В этом тренировочном процессе мы используем:learning_rate: размер шага градиентного спуска для каждой итерации,max_depth: представляет максимальную глубину дерева,colsample_bytree: выбирается случайным образом при каждом создании дереваЧисло столбцовпропорция,colsample_bylevel: это более подробно, чем предыдущее, оно относится к коэффициенту выборки столбцов, когда каждый узел разделен в каждом дереве.subsample: Соотношение случайной выборки во время каждой тренировки, я думаю, это должно относиться клинейная выборкаБар. Есть также некоторые, которые я лично не использую очень часто, напримерmax_delta_step: этот параметр ограничивает максимальный размер шага каждого изменения веса дерева.
Выше приведены некоторые основные параметры, которые используются чаще.
Ключевым моментом в этой статье является то, как создается дерево, основные вещи говорятся, и интервьюер не должен быть недоволен.