Коротка відповідь на ваше запитання:
коли алгоритм підходить до залишкового (або від'ємного градієнта) - це використання однієї функції на кожному кроці (тобто універсарна модель) або всіх функцій (багатоваріантна модель)?
Алгоритм використовує одну функцію або всі функції залежать від вашої настройки. У моїй довгій відповіді, переліченій нижче, і в пні, і в лінійних прикладах для участі вони використовують усі функції, але якщо хочете, ви також можете помістити підмножину функцій. Стовпці вибірки (функції) розглядаються як зменшення дисперсії моделі або підвищення "надійності" моделі, особливо якщо у вас є велика кількість функцій.
Для того 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. Крім того, ви можете використовувати його та обмежити кількість ітерацій для регуляризації моделі.
Пов’язана публікація:
Підвищення градієнта для лінійної регресії - чому це не працює?
Чи є пень рішення лінійною моделлю?