Как линейный базовый ученик работает в повышении? И как это работает в библиотеке xgboost?

9

Я знаю, как реализовать линейную целевую функцию и линейные усиления в XGBoost. Мой конкретный вопрос: когда алгоритм соответствует остаточному (или отрицательному градиенту), использует ли он один элемент на каждом шаге (т.е. одномерную модель) или все признаки (многомерная модель)?

Будем благодарны за любые ссылки на документацию о линейных бустах в XGBoost.

РЕДАКТИРОВАТЬ: Линейные усиления могут быть реализованы в XGBoost, установив параметр 'Booster' в 'gblinear'. См. Http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/ для получения полезной информации о линейном повышении. Обратите внимание, что я говорю не о целевой функции (которая может быть также линейной), а об усилении самого себя.

Спасибо!

Escachator
источник
1
Я не знаю, как это реализовано, но я не вижу причин, почему он должен рассматривать только одну функцию за раз
Алексей Григорьев
@ AlexeyGrigorev, скорее всего, требует много функций одновременно, но тогда как эти функции выбираются? Любой документ по конкретному процессу линейного повышения будет очень ясным.
Escachator

Ответы:

17

Краткий ответ на ваш вопрос:

когда алгоритм соответствует остаточному (или отрицательному градиенту), использует ли он один элемент на каждом шаге (т.е. одномерная модель) или все признаки (многомерная модель)?

Алгоритм использует одну функцию, или все функции зависят от вашей настройки. В моем длинном ответе, указанном ниже, в примерах решений и линейных учащихся они используют все функции, но при желании вы также можете использовать подмножество функций. Столбцы выборки (функции) рассматриваются как уменьшающие дисперсию модели или повышающие «надежность» модели, особенно если у вас большое количество функций.

В случае с xgboostучеником по древовидной базе вы можете выбрать colsample_bytreeобразцы объектов, подходящие для каждой итерации. Для линейного базового ученика таких вариантов нет, поэтому он должен соответствовать всем функциям. Кроме того, не так уж много людей используют линейного ученика в xgboost или для повышения градиента в целом.


Длинный ответ для линейного как слабый ученик для повышения:

В большинстве случаев мы не можем использовать линейного ученика в качестве базового ученика. Причина проста: сложение нескольких линейных моделей все равно будет линейной моделью.

В продвижении нашей модели есть сумма базовых учеников:

f(x)=m=1Mbm(x)

Mbmmth

2b1=β0+β1xb2=θ0+θ1x

f(x)=m=12bm(x)=β0+β1x+θ0+θ1x=(β0+θ0)+(β1+θ1)x

которая является простой линейной моделью! Другими словами, модель ансамбля обладает «одинаковой силой» с базовым учеником!

XTXβ=XTy


Поэтому люди хотели бы использовать другие модели, кроме линейной модели, в качестве базового обучающегося. Дерево - хороший вариант, так как добавление двух деревьев не равно одному дереву. Я продемонстрирую это на простом примере: пень решения, представляющий собой дерево только с 1 разбиением.

f(x,y)=x2+y2

введите описание изображения здесь

Теперь проверьте первые четыре итерации.

введите описание изображения здесь

Обратите внимание, что в отличие от линейного ученика, модель в 4-й итерации не может быть достигнута за одну итерацию (один отдельный пень решения) с другими параметрами.


Итак, я объяснил, почему люди не используют линейного ученика в качестве базового ученика. Однако ничто не мешает людям делать это. Если мы используем линейную модель в качестве базового обучающегося и ограничиваем количество итераций, это равносильно решению линейной системы, но ограничивает количество итераций в процессе решения.

Тот же пример, но на трехмерном графике красная кривая - данные, а зеленая плоскость - окончательное совпадение. Вы можете легко увидеть, что конечная модель - это линейная модель, z=mean(data$label)параллельная плоскости x, y. (Вы можете подумать, почему? Это потому, что наши данные "симметричны", поэтому любой наклон плоскости увеличит потери). Теперь проверьте, что произошло в первых 4 итерациях: подобранная модель медленно поднимается до оптимального значения (среднее значение).

введите описание изображения здесь


Окончательный вывод, линейный ученик не широко используется, но ничто не мешает людям использовать его или внедрить в R-библиотеку. Кроме того, вы можете использовать его и ограничить количество итераций для регуляризации модели.

Связанный пост:

Повышение градиента для линейной регрессии - почему это не работает?

Является ли пень решения линейной моделью?

Хайтау Ду
источник
1
Я бы сказал, что комбинация из n деревьев - это дерево, независимо от того, насколько велико n!
Метариат
@ Метариат НЕТ !, комбинация деревьев - это НЕ дерево! для дерева, вы увидите форму "Т" на раскол. Но на усиленном пне вы увидите "#" фигуру. то есть, разделение пересечет другие разделения!
Haitao Du
Можете ли вы привести пример n деревьев? Я дам вам эквивалентное дерево!
Метариат
@ Метариат, прости, у меня сейчас нет времени. Но я уверен, что повышение на пень решения не может легко генерироваться деревом решений. Вернусь к этому вопросу, когда у меня будет время.
Haitao Du
1
Я согласен, что эта комбинация из n деревьев все еще является деревом, но это дерево будет значительно больше. В худшем случае число листьев равно произведению числа листьев во всех входных деревьях, поэтому сложность такого дерева нецелесообразна. С другой стороны, в случае линейных функций сложность точно такая же.
Томек Тарчински