Як працює лінійна база, яка навчається, у стимуляції? І як це працює в бібліотеці xgboost?


9

Я знаю, як реалізувати лінійну цільову функцію та лінійні прискорення в XGBoost. Моє конкретне питання: коли алгоритм підходить до залишкового (або від'ємного градієнта), це використання однієї функції на кожному кроці (тобто універсарна модель) або всіх функцій (багатоваріантна модель)?

Будь-яке посилання на документацію про лінійні підсилення в XGBoost буде оцінено.

EDIT: Лінійні підсилення можуть бути реалізовані в XGBoost, встановивши для параметра "booster" значення "gblinear". Дивіться: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/ для корисної інформації про лінійне збільшення. Зауважте, що я говорю не про об'єктивну функцію (яка також може бути лінійною), а про прискорення їхнього рівня.

Дякую!


1
Я не знаю, як це реалізовується, але я не бачу причин, чому слід розглядати лише одну особливість за один раз
Олексій Григорьов

@ Алекс Грігорьов, швидше за все, займає багато можливостей одночасно, але тоді, як обираються ці функції? Будь-який документ щодо конкретного процесу лінійного прискорення був би дуже уточнюючим.
Ескахатор

Відповіді:


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-ї ітерації не може бути досягнута однією ітерацією (одним єдиним пнем рішення) з іншими параметрами.


Поки я пояснював, чому люди не використовують лінійного учня як базового учня. Однак ніщо не заважає людям це робити. Якщо ми використовуємо лінійну модель в якості базового учня і обмежимо кількість ітерацій, вона дорівнює вирішенню лінійної системи, але обмежимо кількість ітерацій в процесі розв’язування.

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

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


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

Пов’язана публікація:

Підвищення градієнта для лінійної регресії - чому це не працює?

Чи є пень рішення лінійною моделлю?


1
Я б сказав, що комбінація n дерев - це дерево, незалежно від того, наскільки великим є n!
Менаріат

@Metariat NO !, комбіновані дерева НЕ дерево !. для дерева ви побачите форму "Т" на роздвоєнні. Але підсилений пень, ви побачите форму "#". тобто розкол перетне інші розколи!
Haitao Du

Чи можете ви навести приклад російських дерев? Я дам тобі рівноцінне дерево!
Менаріат

@Metariat Вибачте, я зараз не маю часу. Але я впевнений, що прискорення набору рішень не може бути легко створене деревом рішень. Повернусь до цього питання, коли у мене з’явиться час.
Haitao Du

1
Я згоден, що ця комбінація російських дерев все ще є деревом, але це дерево буде значно більше. У гіршому випадку кількість листя дорівнює добуванню кількості листя у всіх вхідних деревах, тому складність такого дерева недоцільна. З іншого боку, складність лінійних функцій точно така ж.
Томек Тарчинський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.