Перейти к основному содержимому

Бустинг

Алгоритм бустинга (boosting) строит прогноз в виде ансамбля (композиции) базовых моделей:

f0(x),f1(x),f2(x),...fM(x)f_0(\mathbf{x}),f_1(\mathbf{x}),f_2(\mathbf{x}),...f_M(\mathbf{x})

Агрегирующая модель представляет собой линейную комбинацию базовых моделей с настраиваемыми весами:

GM(x)=f0(x)+c1f1(x)+c2f2(x)+...+cMfM(x)G_M(\mathbf{x})=f_0(\mathbf{x})+c_1 f_1(\mathbf{x})+c_2 f_2(\mathbf{x})+...+c_M f_M(\mathbf{x})

Все базовые модели, кроме начального приближения f0(x)f_0(\mathbf{x}), берутся из одного семейства. Как правило, начальное приближение выбирается тождественным нолём или настраиваемой константой, а остальные модели - решающими деревьями небольшой глубины.

Типы решаемых задач

Смысл GM(x)G_M(\mathbf{x}) меняется в зависимости от решаемой задачи:

  • для регрессии GM(x)G_M(\mathbf{x}) предсказывает регрессионный прогноз:

    y^(x)=GM(x)\widehat{y}(\mathbf{x})=G_{M}(\mathbf{x})
  • для бинарной классификации GM(x)G_M(\mathbf{x}) представляет собой рейтинг положительного класса по сравнению с отрицательным. Итоговый прогноз y{1,+1}y\in\{-1,+1\} строится как функция взятия знака GM(x)G_M(\mathbf{x}) (+1 для положительных и -1 для отрицательных аргументов):

    y^(x)=sign(GM(x))\widehat{y}(\mathbf{x})=\text{sign}( G_{M}(\mathbf{x}) )
  • в многоклассовой классификации на CC классов GM(x)=[GM1(x),...GMC(x)]G_M(\mathbf{x})=[G_M^1(\mathbf{x}),...G_M^C(\mathbf{x})] представляет собой вектор рейтингов для каждого класса, а прогноз строится по принципу назначения класса, обладающего максимальным рейтингом:

    y^=argmaxc{GM1(x),...GMC(x)}\hat{y}=\arg\max_c \{G_{M}^1(\mathbf{x}),...G_{M}^C(\mathbf{x})\}

Принцип построения ансамбля

Базовые модели, кроме начального приближения f0(x)f_0(\mathbf{x}), выбираются из одного класса, но неравнозначны между собой, поскольку настраиваются последовательно одна за другой:

  1. f0(x)f_0(\mathbf{x}) настраивается приближать целевую величину yy.

  2. c1f1(x)c_1 f_1(\mathbf{x}) учится исправлять ошибки G0(x)=f0(x)G_0(\mathbf{x})=f_0(\mathbf{x}).

  3. c2f2(x)c_2 f_2(\mathbf{x}) учится исправлять ошибки G1(x)=f0(x)+c1f1(x)G_1(\mathbf{x})=f_0(\mathbf{x})+c_1 f_1(\mathbf{x})

  4. \cdots

  5. cMfM(x)c_M f_M(\mathbf{x}) учится исправлять ошибки GM1(x)=f0(x)+c1f1(x)+...+cM1fM1(x)G_{M-1}(\mathbf{x})=f_0(\mathbf{x})+c_1 f_1(\mathbf{x})+...+c_{M-1}f_{M-1}(\mathbf{x}).

Более формально, решаются следующие задачи:

  1. Настраиваем начальное приближение

    f0(x)=argminfn=1NL(f(xn),yn)f_{0}(\mathbf{x})=\arg\min_{f}\sum_{n=1}^{N}\mathcal{L}(f(\mathbf{x}_{n}),y_{n})
  2. Для m=1,2,...Mm=1,2,...M:

    находим коррекцию:

    (cm,fm):=argminf,cn=1NL(Gm1(xn)+cf(xn),yn)(c_{m},f_{m}):=\arg\min_{f,c}\sum_{n=1}^{N}\mathcal{L}(G_{m-1}(\mathbf{x}_{n})+cf(\mathbf{x}_{n}),\,y_{n})

    обновляем ансамбль:

    Gm(x):=Gm1(x)+cmfm(x)G_{m}(\mathbf{x}):=G_{m-1}(\mathbf{x})+c_{m}f_{m}(\mathbf{x})
  3. Возвращаем GM(x)G_M(\mathbf{x}).

Описанная процедура также известна как forward stagewise additive modeling.

Особенности реализации

Для эффективности применения ансамбля усреднение должно происходить по многим базовым моделям, поэтому в бустинге их число измеряется сотнями и даже тысячами.

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

  • Начальное приближение полагается тождественному нулю f0(x)0f_0(\mathbf{x})\equiv 0 либо находится как наилучший константный прогноз f0(x)cRf_0(\mathbf{x})\equiv c\in \mathbb{R}.

  • Последующие базовые модели f1(x),...fM(x)f_1(\mathbf{x}),...f_M(\mathbf{x}) берутся простыми и неточными. Чаще всего это решающие деревья небольшой глубины (~1-5) или с ограничением на максимальное число листьев (~2-32).

    Какую модель получим, если будем строить бустинг над линейными моделями?

    Комбинируя с весами линейные модели мы снова получим линейную модель! Поэтому бустинг над линейными моделями моделями не используется. Хотя можно взять линейную модель в качестве начального приближения, а последующие базовые модели брать уже из другого семейства.

  • На каждой итерации настраивать модель fm(x)f_m(\mathbf{x}) и коэффициент cmc_m при ней можно неточно. Часто cmc_m просто берут малой константой, так как настройка fm(x)f_m(\mathbf{x}) уже настраивает общий масштаб изменения.