Композиционные методы

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{well|Статья написана с использованием LLM '''Claude Sonnet 5''' и проверена участником [[Участник:Danial Zhumabekov|Д. Жум...)
Строка 2: Строка 2:
{{TOCright}}
{{TOCright}}
-
== Введение ==
+
'''Композиция алгоритмов''' (ансамбль моделей, ансамблевый метод; англ. ''ensemble learning'') — методология [[Машинное обучение|машинного обучения]], в которой для решения одной задачи прогнозирования вместо единственной модели используется согласованный набор '''базовых алгоритмов''' (базовых моделей, ''base learners''), а итоговый прогноз получается объединением их индивидуальных предсказаний посредством '''корректирующей''' (агрегирующей) функции<ref>Dietterich T. G. Ensemble Methods in Machine Learning // Multiple Classifier Systems (Lecture Notes in Computer Science). — Berlin: Springer, 2000. — Vol. 1857. — P. 1–15.</ref>. Ансамблевые методы, как правило, показывают более высокое качество и устойчивость предсказаний, чем любой из составляющих их базовых алгоритмов по отдельности, за счёт снижения разброса, смещения или того и другого одновременно<ref>Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — New York: Springer, 2009.</ref>. К числу основных ансамблевых методов относятся [[Бэггинг]], [[Случайный лес]], [[Бустинг]], [[Стэкинг]] и смесь экспертов; эти методы широко применяются в [[Классификация|классификации]], [[Регрессия|регрессии]], ранжировании, оценивании вероятностей и обнаружении аномалий и стабильно занимают ведущие места в соревнованиях по анализу данных.
-
Пусть <tex>X^{\ell} = (x_i, y_i)_{i=1}^{\ell}</tex> — обучающая выборка, <tex>b_1, \dots, b_T: X \to \mathbb{R}</tex> — семейство '''базовых алгоритмов''' (базовых моделей), каждый из которых по отдельности решает задачу прогнозирования с некоторым, как правило невысоким, качеством. '''Композиционным методом''' (ансамблем) называется способ построения итогового алгоритма
+
== Формальное определение ==
-
:: <tex>a(x) = C\big(b_1(x), \dots, b_T(x)\big)</tex>
+
Пусть <tex>X^{\ell} = (x_i, y_i)_{i=1}^{\ell}</tex> — обучающая выборка, <tex>b_1, \dots, b_T: X \to \mathbb{R}</tex> — семейство базовых алгоритмов, каждый из которых по отдельности решает задачу прогнозирования с некоторым, как правило невысоким, качеством. '''Композицией''' (ансамблем) называется способ построения итогового алгоритма
-
где <tex>C: \mathbb{R}^T \to \mathbb{R}</tex> — '''корректирующая''' (агрегирующая) функция, объединяющая ответы базовых алгоритмов в единый прогноз. Мотивация построения композиции — эмпирический и теоретически обоснованный факт: ошибка согласованно скомбинированных базовых алгоритмов может оказаться существенно ниже ошибки любого из них по отдельности, если базовые алгоритмы допускают разнородные, слабо коррелированные ошибки.
+
:: <tex>a(x) = C(b_1(x), \dots, b_T(x))</tex>
 +
 
 +
где <tex>C: \mathbb{R}^T \to \mathbb{R}</tex> — корректирующая функция, объединяющая ответы базовых алгоритмов в единый прогноз. Правило <tex>C</tex> может быть простым или взвешенным средним, голосованием, медианой, обучаемой моделью (метаалгоритмом), функцией, зависящей от объекта, либо последовательным добавлением новых моделей к уже построенной части композиции. Базовые алгоритмы могут принадлежать одному семейству '''однородная композиция''' (например, деревья в случайном лесе) — или различным семействам — '''неоднородная композиция''' (например, стэкинг, объединяющий дерево, линейную модель и метод ближайших соседей). Однородные композиции удобно создавать с помощью случайности в данных, признаках или параметрах обучения; неоднородные обладают потенциально большей разнородностью ошибок, но их предсказания труднее согласовывать в силу различий в масштабе и природе выходов базовых алгоритмов.
По способу обучения базовых алгоритмов композиционные методы делятся на два класса.
По способу обучения базовых алгоритмов композиционные методы делятся на два класса.
-
* '''Параллельное (одновременное) обучение.''' Базовые алгоритмы <tex>b_1, \dots, b_T</tex> обучаются независимо друг от друга, как правило, на различных подвыборках или подпространствах признаков, после чего объединяются корректирующей функцией, не зависящей от процесса обучения базовых моделей. К этому классу относится [[Бэггинг]].
+
* '''Параллельное (одновременное) обучение.''' Базовые алгоритмы обучаются независимо друг от друга, как правило, на различных подвыборках или подпространствах признаков, после чего объединяются корректирующей функцией, не зависящей от процесса их обучения. К этому классу относится [[Бэггинг]].
-
* '''Последовательное обучение.''' Каждый следующий базовый алгоритм <tex>b_{t+1}</tex> строится с учётом качества работы уже построенной композиции <tex>b_1, \dots, b_t</tex>, как правило, с целью исправления её текущих ошибок. К этому классу относится [[Бустинг]].
+
* '''Последовательное обучение.''' Каждый следующий базовый алгоритм строится с учётом качества работы уже построенной композиции, как правило, с целью исправления её текущих ошибок. К этому классу относится [[Бустинг]].
-
Существенно, что оба класса решают одну и ту же общую задачу — снижение ошибки итогового алгоритма относительно ошибки базовых моделей, — но, как показано в следующем разделе, делают это за счёт принципиально разных механизмов, связанных с разложением ошибки на смещение и разброс.
+
== Историческая справка ==
-
== Смещение и разброс ==
+
Идея объединения нескольких оценок для получения более надёжного результата восходит к статистике XVIII—XIX веков — к усреднению независимых измерений и к теореме присяжных Кондорсе о коллективном принятии решений. В машинном обучении первые систематические результаты о выигрыше от комбинирования моделей относятся к концу 1980-х — началу 1990-х годов: Хансен и Саламон показали, что усреднение по ансамблю нейронных сетей снижает ошибку обобщения по сравнению с отдельной сетью<ref>Hansen L. K., Salamon P. Neural Network Ensembles // IEEE Transactions on Pattern Analysis and Machine Intelligence. — 1990. — Vol. 12. — No. 10. — P. 993–1001.</ref>, а в 1991 году была предложена адаптивная смесь локальных экспертов с обучаемым управляющим механизмом<ref>Jacobs R. A., Jordan M. I., Nowlan S. J., Hinton G. E. Adaptive Mixtures of Local Experts // Neural Computation. — 1991. — Vol. 3. — No. 1. — P. 79–87.</ref>.
-
Пусть ошибка алгоритма <tex>a</tex>, обученного по случайной выборке <tex>X^{\ell}</tex>, измеряется квадратичным функционалом. Усредняя по всем возможным обучающим выборкам фиксированного объёма, ожидаемую квадратичную ошибку алгоритма в точке <tex>x</tex> можно разложить на три неотрицательных слагаемых:
+
Решающий теоретический сдвиг произошёл в 1990 году, когда Р. Шапире доказал, что «слабую обучаемость» (существование алгоритма, чуть более точного, чем случайное угадывание) можно преобразовать в «сильную обучаемость» (произвольно высокую точность), формально обосновав саму возможность бустинга<ref>Schapire R. E. The Strength of Weak Learnability // Machine Learning. — 1990. — Vol. 5. — No. 2. — P. 197–227.</ref>. Эта теоретическая конструкция была превращена в практичный алгоритм — AdaBoost — Й. Фройндом и Р. Шапире в 1996—1997 годах<ref name="freund1997">Freund Y., Schapire R. E. A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting // Journal of Computer and System Sciences. — 1997. — Vol. 55. — No. 1. — P. 119–139.</ref>. В 1992 году Д. Вольперт предложил stacked generalization как общую схему обучаемого комбинирования моделей<ref name="wolpert1992">Wolpert D. H. Stacked Generalization // Neural Networks. — 1992. — Vol. 5. — No. 2. — P. 241–259.</ref>. В 1996 году Л. Брейман представил бэггинг<ref name="breiman1996">Breiman L. Bagging Predictors // Machine Learning. — 1996. — Vol. 24. — No. 2. — P. 123–140.</ref> и в 2001 году объединил идеи бэггинга и случайного выбора признаков в методе случайного леса<ref name="breiman2001">Breiman L. Random Forests // Machine Learning. — 2001. — Vol. 45. — No. 1. — P. 5–32.</ref>, а Т. Хо независимо развивала метод случайных подпространств для построения ансамблей деревьев<ref>Ho T. K. The Random Subspace Method for Constructing Decision Forests // IEEE Transactions on Pattern Analysis and Machine Intelligence. — 1998. — Vol. 20. — No. 8. — P. 832–844.</ref>.
-
:: <tex>\mathsf{E}_{X^{\ell}} \big[ (a(x) - y(x))^2 \big] = \mathrm{Bias}^2(x) + \mathrm{Var}(x) + \sigma^2</tex>
+
На рубеже 2000-х годов Дж. Фридман переформулировал бустинг в терминах численной оптимизации в функциональном пространстве, предложив градиентный бустинг как единую схему, применимую к произвольным дифференцируемым функциям потерь<ref name="friedman2001">Friedman J. H. Greedy Function Approximation: A Gradient Boosting Machine // The Annals of Statistics. — 2001. — Vol. 29. — No. 5. — P. 1189–1232.</ref>. Обзорная статья Т. Дитериха 2000 года систематизировала накопленные к тому времени статистические, вычислительные и репрезентационные аргументы в пользу ансамблевых методов, закрепив ансамблевое обучение как самостоятельное направление машинного обучения. В 2000-е и 2010-е годы на основе градиентного бустинга над решающими деревьями были разработаны промышленные библиотеки XGBoost, LightGBM и CatBoost, ставшие стандартом де-факто для табличных данных.
-
где
+
== Почему композиция может работать лучше отдельной модели ==
-
:: <tex>\mathrm{Bias}(x) = \mathsf{E}_{X^{\ell}}\, a(x) - y(x)</tex>
+
Идея ансамблей опирается на несколько взаимодополняющих соображений, сформулированных Т. Дитерихом.
-
'''смещение''' (bias), систематическое отклонение среднего по выборкам ответа алгоритма от истинной зависимости <tex>y(x)</tex>, и
+
* '''Статистическая причина.''' Если обучающая выборка невелика, у алгоритма обучения может существовать несколько разных гипотез, одинаково хорошо объясняющих данные; выбор одной из них рискован, тогда как усреднение по нескольким снижает риск выбрать неудачную гипотезу.
 +
* '''Вычислительная причина.''' Многие алгоритмы обучения выполняют локальный поиск (например, жадное построение решающего дерева) и могут застревать в локальных оптимумах; запуск алгоритма из разных начальных точек или на разных подвыборках и объединение результатов даёт лучшее приближение к оптимальному решению, чем единичный запуск.
 +
* '''Репрезентационная причина.''' Истинная зависимость между признаками и целевой переменной может не входить в пространство гипотез, доступное отдельному базовому алгоритму; взвешенная сумма нескольких таких гипотез способна аппроксимировать функции, недостижимые ни одной гипотезой по отдельности, — геометрически композиция выбирает точку в пространстве функций, лежащую в выпуклой оболочке базовых моделей, а не совпадающую ни с одной из них.
-
:: <tex>\mathrm{Var}(x) = \mathsf{E}_{X^{\ell}} \big[ (a(x) - \mathsf{E}_{X^{\ell}}\, a(x))^2 \big]</tex>
+
=== Разложение ошибки на смещение и разброс ===
-
— '''разброс''' (variance), чувствительность ответа алгоритма к конкретной реализации обучающей выборки; <tex>\sigma^2</tex> — неустранимый шум в данных, не зависящий от выбора алгоритма. Высокое смещение типично для слишком простых, негибких моделей (недообучение), высокий разброс — для слишком гибких моделей, чрезмерно подстраивающихся под конкретную выборку ([[Переобучение]]).
+
Пусть ошибка алгоритма <tex>a</tex>, обученного по случайной выборке <tex>X^{\ell}</tex>, измеряется квадратичным функционалом. Усредняя по всем возможным обучающим выборкам фиксированного объёма, ожидаемую квадратичную ошибку в точке <tex>x</tex> можно разложить на три неотрицательных слагаемых:
-
Ключевое наблюдение, лежащее в основе композиционных методов: усреднение нескольких некоррелированных алгоритмов с одинаковым смещением снижает разброс композиции пропорционально <tex>1/T</tex> при <tex>T</tex> независимых базовых алгоритмах, не увеличивая при этом смещения, — на этом принципе строится [[Бэггинг]]. Напротив, последовательная коррекция систематических ошибок предыдущих алгоритмов, лежащая в основе [[Бустинг|бустинга]], направлена в первую очередь на снижение смещения, поскольку каждый следующий базовый алгоритм целенаправленно уменьшает ту часть ошибки, которая систематически не устранена предыдущими членами композиции.
+
:: <tex>\mathrm{E}_{X^{\ell}} [ (a(x) - y(x))^2 ] = \mathrm{Bias}^2(x) + \mathrm{Var}(x) + \sigma^2</tex>
-
== Простое и взвешенное голосование ==
+
где <tex>\mathrm{Bias}(x) = \mathrm{E}_{X^{\ell}}\, a(x) - y(x)</tex> — смещение, систематическое отклонение среднего по выборкам ответа алгоритма от истинной зависимости, <tex>\mathrm{Var}(x) = \mathrm{E}_{X^{\ell}} [ (a(x) - \mathrm{E}_{X^{\ell}}\, a(x))^2 ]</tex> — разброс, чувствительность ответа к конкретной реализации выборки, а <tex>\sigma^2</tex> — неустранимый шум, не зависящий от алгоритма. Высокое смещение типично для слишком простых, негибких моделей (недообучение), высокий разброс — для слишком гибких моделей, чрезмерно подстраивающихся под конкретную выборку ([[Переобучение]]).
-
Простейшая корректирующая функция для задачи классификации — '''простое голосование''': каждый базовый алгоритм <tex>b_t</tex> голосует за класс, который он предсказывает, и итоговый ответ определяется классом, набравшим больше всего голосов:
+
Для композиции из <tex>T</tex> одинаково распределённых моделей с попарной корреляцией ошибок <tex>\rho</tex> и общей дисперсией <tex>\sigma^2</tex> дисперсия усреднённого предсказания равна
-
:: <tex>a(x) = \arg\max_{y \in Y} \sum_{t=1}^{T} [b_t(x) = y]</tex>
+
:: <tex>\mathrm{Var}(\overline{b}) = \rho\, \sigma^2 + \frac{1-\rho}{T}\, \sigma^2</tex>
-
Если базовые алгоритмы допускают ошибки независимо друг от друга с вероятностью ошибки <tex>p < 1/2</tex> каждый, простое голосование нечётного числа таких алгоритмов снижает вероятность ошибки композиции экспоненциально по <tex>T</tex> — это классический результат, объясняющий эффективность усреднения при низкой скоррелированности ошибок базовых моделей.
+
Если ошибки независимы (<tex>\rho=0</tex>), дисперсия убывает пропорционально <tex>1/T</tex>; если ошибки полностью совпадают (<tex>\rho=1</tex>), усреднение не даёт никакого выигрыша. Отсюда следуют два условия эффективного ансамбля: отдельные модели должны быть достаточно точными, а их ошибки по возможности не коррелированы. На этом принципе строится [[Бэггинг|бэггинг]], главным образом уменьшающий разброс нестабильного алгоритма при почти неизменном смещении. Бустинг, напротив, последовательно уменьшает смещение, комбинируя простые модели во всё более точную составную модель.
-
'''Взвешенное голосование''' обобщает эту схему, приписывая каждому базовому алгоритму вес <tex>w_t \geq 0</tex>, отражающий степень доверия к нему:
+
=== Диверсификация и корреляция ошибок ===
-
:: <tex>a(x) = \arg\max_{y \in Y} \sum_{t=1}^{T} w_t\, [b_t(x) = y]</tex>
+
Ключевой фактор эффективности ансамбля — '''разнообразие''' (diversity) базовых алгоритмов: если ошибки отдельных моделей слабо коррелированы, их усреднение взаимно гасит случайные ошибки. Для ансамбля из <tex>T</tex> независимых и одинаково точных классификаторов с вероятностью ошибки <tex>p<0{,}5</tex> у каждого голосование большинством даёт вероятность ошибки композиции, экспоненциально убывающую с ростом <tex>T</tex> — классический результат, восходящий к теореме присяжных Кондорсе и применённый к ансамблям классификаторов Хансеном и Саламоном. На практике полной независимости моделей добиться нельзя, и реальный выигрыш определяется компромиссом между точностью базовых алгоритмов и их взаимным разнообразием, что формализуется, в частности, разложением ошибки ансамбля на среднюю ошибку базовых моделей минус их взаимное «несогласие» (ambiguity decomposition)<ref>Krogh A., Vedelsby J. Neural Network Ensembles, Cross Validation, and Active Learning // Advances in Neural Information Processing Systems. — 1995. — Vol. 7. — P. 231–238.</ref>. Количественной мерой разнообразия пары классификаторов служат Q-статистика Йола или коэффициент согласия <tex>\kappa</tex> Коэна<ref>Kuncheva L. I., Whitaker C. J. Measures of Diversity in Classifier Ensembles and Their Relationship with the Ensemble Accuracy // Machine Learning. — 2003. — Vol. 51. — No. 2. — P. 181–207.</ref>; экспериментально установлено, что ансамбли показывают наибольший выигрыш, когда базовые модели ошибаются на разных подмножествах данных, чего добиваются введением случайности в обучение — бутстрепом, случайными подпространствами признаков или различием архитектур и гиперпараметров.
-
Эта конструкция в точности совпадает со схемой агрегирования логических закономерностей в классификаторе на основе набора правил: каждое правило <tex>\varphi_k</tex>, будучи интерпретируемым бинарным классификатором одного класса, естественно рассматривается как частный случай базового алгоритма <tex>b_t</tex>, а его вес <tex>w_t</tex> — как мера информативности правила относительно своего класса. Таким образом, взвешенное голосование правил — частный случай общей схемы композиционных методов, в котором базовые алгоритмы обладают дополнительным свойством интерпретируемости.
+
== Простое и взвешенное усреднение / голосование ==
-
== Бэггинг и случайный лес ==
+
Простейшая корректирующая функция для регрессии — среднее арифметическое ответов базовых алгоритмов:
-
 
+
-
'''Бэггинг''' (bagging, bootstrap aggregating) реализует параллельную схему обучения композиции за счёт следующей идеи: вместо обучения единственного алгоритма по всей выборке <tex>X^{\ell}</tex> строится <tex>T</tex> независимых алгоритмов <tex>b_1, \dots, b_T</tex>, каждый из которых обучается по собственной '''бутстреп-выборке''' <tex>\widetilde{X}^{\ell}_t</tex> — выборке объёма <tex>\ell</tex>, полученной случайным выбором объектов из <tex>X^{\ell}</tex> с возвращением. Итоговый алгоритм — простое (для регрессии — усреднение, для классификации — голосование) объединение ответов:
+
:: <tex>a(x) = \frac{1}{T} \sum_{t=1}^{T} b_t(x)</tex>
:: <tex>a(x) = \frac{1}{T} \sum_{t=1}^{T} b_t(x)</tex>
-
Поскольку бутстреп-выборки <tex>\widetilde{X}^{\ell}_t</tex> получены из одного и того же распределения, все <tex>b_t</tex> имеют приблизительно одинаковое смещение, совпадающее со смещением базового алгоритма, обученного по всей выборке; усреднение при этом снижает разброс композиции без существенного изменения смещения — в полном соответствии с разложением, приведённым в разделе «Смещение и разброс». Бэггинг наиболее эффективен для базовых алгоритмов с высоким разбросом и низким смещением — в первую очередь для глубоких [[Решающие деревья|решающих деревьев]], не подвергнутых стрижке.
+
Взвешенное среднее обобщает эту схему:
-
'''[[Случайный лес]]''' дополняет схему бэггинга решающих деревьев ещё одним источником случайности: при построении каждой вершины дерева оптимальный признак для разбиения ищется не среди всех <tex>n</tex> признаков, а среди случайно выбранного подмножества из <tex>m \ll n</tex> признаков (типичный выбор — <tex>m = \sqrt{n}</tex> для классификации и <tex>m = n/3</tex> для регрессии). Такое случайное подпространство признаков дополнительно снижает корреляцию между деревьями композиции, что усиливает эффект снижения разброса при усреднении, поскольку эффективность усреднения тем выше, чем слабее коррелированы усредняемые алгоритмы.
+
:: <tex>a(x) = \sum_{t=1}^{T} \alpha_t\, b_t(x), \qquad \sum_{t=1}^{T} \alpha_t = 1,\, \alpha_t \geq 0</tex>
-
Специфическая особенность бэггинга, отсутствующая у последовательных методов, — возможность получить несмещённую оценку ошибки композиции без отдельной контрольной выборки. Поскольку каждая бутстреп-выборка <tex>\widetilde{X}^{\ell}_t</tex> в среднем содержит около <tex>1 - e^{-1} \approx 63{,}2\%</tex> исходных объектов, оставшиеся приблизительно <tex>36{,}8\%</tex> объектов — '''out-of-bag''' (OOB) объекты — не участвовали в обучении дерева <tex>b_t</tex> и могут быть использованы для его тестирования. Усредняя ошибку каждого объекта <tex>x_i</tex> только по тем деревьям, для которых он был out-of-bag, получают '''OOB-оценку''' ошибки композиции:
+
Веса могут задаваться вручную, пропорционально качеству базовых моделей, оптимизацией функции потерь <tex>\min_{\alpha} \sum_{i=1}^{\ell} L(y_i, \sum_t \alpha_t b_t(x_i))</tex> по проверочной выборке, с ограничением неотрицательности и суммы, равной единице (что снижает риск неустойчивых взаимных компенсаций весов), либо с явной регуляризацией. Отрицательные веса допустимы в некоторых линейных композициях, но усложняют интерпретацию и могут давать неустойчивые предсказания. Усреднение уменьшает влияние отдельных необычных предсказаний, однако само среднее чувствительно к очень большим выбросам; в таких случаях применяют медиану или усечённое среднее.
-
:: <tex>Q_{\mathrm{OOB}} = \frac{1}{\ell} \sum_{i=1}^{\ell} L\Big( y_i,\, \frac{1}{|T_i|} \sum_{t \in T_i} b_t(x_i) \Big)</tex>
+
Для классификации, если каждый алгоритм выдаёт метку класса, '''простое голосование''' выбирает класс, набравший больше всего голосов:
-
где <tex>T_i</tex> — множество индексов деревьев, для которых объект <tex>x_i</tex> был out-of-bag, а <tex>L</tex> — функция потерь. OOB-оценка асимптотически эквивалентна оценке по [[Скользящий контроль|скользящему контролю]], но вычисляется за один проход обучения без дополнительных вычислительных затрат.
+
:: <tex>a(x) = \arg\max_{y \in Y} \sum_{t=1}^{T} [\, b_t(x) = y \,]</tex>
-
== Стэкинг и смесь экспертов ==
+
'''Взвешенное голосование''' приписывает каждому алгоритму вес <tex>w_t \geq 0</tex>, отражающий степень доверия к нему:
-
'''Обобщающий стэкинг''' (stacking) отказывается от заранее фиксированной корректирующей функции в пользу обучаемой: помимо базовых алгоритмов <tex>b_1, \dots, b_T</tex> обучается '''мета-алгоритм''' <tex>C</tex>, принимающий на вход вектор ответов базовых алгоритмов <tex>(b_1(x), \dots, b_T(x))</tex> и обученный предсказывать по нему целевую переменную <tex>y</tex>:
+
:: <tex>a(x) = \arg\max_{y \in Y} \sum_{t=1}^{T} w_t\, [\, b_t(x) = y \,]</tex>
-
:: <tex>a(x) = C\big(b_1(x), \dots, b_T(x)\big), \qquad C = \arg\min_{C} \sum_{i=1}^{\ell} L\big(y_i,\, C(b_1(x_i), \dots, b_T(x_i))\big)</tex>
+
Эта конструкция в точности совпадает со схемой агрегирования логических закономерностей в классификаторе на основе набора правил: каждое правило, будучи интерпретируемым бинарным классификатором одного класса, — частный случай базового алгоритма <tex>b_t</tex>, а его вес — мера информативности правила относительно своего класса. Голосование по готовым меткам не использует степень уверенности моделей; если доступны оценки вероятностей класса <tex>\widehat{P}_t(y \mid x)</tex>, как правило, эффективнее усреднять сами вероятности:
-
Принципиальная методологическая трудность стэкинга — необходимость избежать переобучения мета-алгоритма на ответах базовых моделей, вычисленных на тех же объектах, на которых эти модели обучались (в этом случае ответы <tex>b_t(x_i)</tex> искусственно завышают качество, недостижимое на новых данных). Стандартное решение — вычислять признаки для мета-алгоритма по схеме скользящего контроля: выборка делится на <tex>K</tex> блоков, для каждого блока базовые алгоритмы обучаются на остальных <tex>K-1</tex> блоках, а их ответы на отложенном блоке используются как обучающие признаки мета-алгоритма.
+
:: <tex>\widehat{P}(y \mid x) = \sum_{t=1}^{T} \alpha_t\, \widehat{P}_t(y \mid x)</tex>
-
'''Взвешенный стэкинг с признак-зависимыми весами''' — частный случай, в котором мета-алгоритм ограничен линейной по ответам базовых моделей формой с весами, зависящими от самого объекта:
+
с последующим выбором класса по максимуму усреднённой вероятности. Такое усреднение требует согласованного порядка классов у всех базовых моделей и, желательно, хорошо откалиброванных вероятностей (см. раздел «Калибровка вероятностей»).
-
:: <tex>a(x) = \sum_{t=1}^{T} c_t(x)\, b_t(x)</tex>
+
=== Пример: голосование по меткам против усреднения вероятностей ===
-
где <tex>c_t(x) \geq 0</tex>, <tex>\sum_t c_t(x) = 1</tex> — функции компетентности, показывающие, насколько базовому алгоритму <tex>b_t</tex> стоит доверять именно в точке <tex>x</tex>. В отличие от простого взвешенного голосования, где веса <tex>w_t</tex> постоянны по всему пространству <tex>X</tex>, здесь вес каждого базового алгоритма может меняться от объекта к объекту.
+
Пусть три классификатора дали следующие ответы для одного объекта:
-
'''Смесь экспертов''' (mixture of experts) формализует эту идею, вводя явную '''функцию компетентности''' (gating function) <tex>g_t(x)</tex>, которая сама является обучаемой моделью, предсказывающей вероятность того, что эксперт <tex>b_t</tex> компетентен на объекте <tex>x</tex>:
+
{| class="wikitable"
 +
! Алгоритм !! Предсказанный класс !! Вероятность класса A
 +
|-
 +
| <tex>b_1</tex> || A || 0,90
 +
|-
 +
| <tex>b_2</tex> || B || 0,49
 +
|-
 +
| <tex>b_3</tex> || B || 0,48
 +
|}
-
:: <tex>a(x) = \sum_{t=1}^{T} g_t(x)\, b_t(x), \qquad g_t(x) = \frac{\exp(v_t(x))}{\sum_{s=1}^{T} \exp(v_s(x))}</tex>
+
Обычное голосование по меткам выбирает класс B, поскольку за него подано два голоса из трёх. Средняя же вероятность класса A равна <tex>(0{,}90+0{,}49+0{,}48)/3 \approx 0{,}623</tex>, что превышает <tex>0{,}5</tex>, и при вероятностном усреднении будет выбран класс A. Пример показывает, что голосование по меткам и усреднение вероятностей — принципиально разные правила агрегирования, дающие разный ответ на одних и тех же исходных предсказаниях: первое игнорирует степень уверенности <tex>b_1</tex> в своём ответе, второе её учитывает.
-
где <tex>v_t(x)</tex> — некоторая параметрическая функция (как правило, линейная по признакам), обучаемая совместно с экспертами <tex>b_t</tex> максимизацией правдоподобия композиции. В качестве иллюстрации: пусть имеются два эксперта — <tex>b_1</tex>, специализирующийся на объектах с малым значением некоторого признака, и <tex>b_2</tex>, специализирующийся на объектах с большим значением того же признака; тогда обученная функция компетентности <tex>g_1(x)</tex> будет близка к единице в области малых значений признака и близка к нулю в области больших значений, плавно передавая ответственность за прогноз от одного эксперта к другому в переходной зоне. В отличие от бэггинга и бустинга, смесь экспертов явно моделирует неоднородность признакового пространства, в разных областях которого целесообразны структурно различные модели.
+
== Бэггинг ==
-
== Градиентный бустинг с произвольной функцией потерь ==
+
'''Бэггинг''' (bootstrap aggregating) строит <tex>T</tex> независимых базовых алгоритмов <tex>b_1,\dots,b_T</tex>, каждый из которых обучается по собственной '''бутстреп-выборке''' <tex>\widetilde{X}^{\ell}_t</tex> — выборке объёма <tex>\ell</tex>, полученной случайным выбором объектов из <tex>X^{\ell}</tex> с возвращением<ref name="breiman1996"/>. Итоговая композиция — простое усреднение (регрессия) или голосование (классификация) ответов. Поскольку бутстреп-выборки получены из одного и того же распределения, все <tex>b_t</tex> имеют приблизительно одинаковое смещение, совпадающее со смещением базового алгоритма, обученного по всей выборке; усреднение при этом снижает разброс композиции без существенного изменения смещения. Бэггинг наиболее эффективен для '''нестабильных''' алгоритмов — таких, у которых малое изменение обучающей выборки приводит к значительному изменению построенной модели (глубокие непрострижённые решающие деревья); для устойчивых алгоритмов (например, метода ближайших соседей или линейной регрессии, чьи МНК-оценки стабильны относительно возмущений выборки) выигрыш от бэггинга невелик или отсутствует.
-
Пусть <tex>L(y, z)</tex> — произвольная дифференцируемая по <tex>z</tex> функция потерь (квадратичная для регрессии, логистическая для классификации и так далее), и композиция строится аддитивно:
+
=== Оценка по объектам вне бутстрепа (out-of-bag) ===
-
:: <tex>a_T(x) = \sum_{t=1}^{T} \alpha_t\, b_t(x)</tex>
+
Поскольку каждая бутстреп-выборка в среднем содержит около <tex>1-e^{-1} \approx 63{,}2\%</tex> исходных объектов, оставшиеся приблизительно <tex>36{,}8\%</tex> объектов — '''out-of-bag''' (OOB) объекты — не участвовали в обучении соответствующего базового алгоритма и могут быть использованы для его тестирования без отдельного разбиения данных. Усредняя ошибку каждого объекта <tex>x_i</tex> только по тем базовым алгоритмам, для которых он был OOB, получают OOB-оценку ошибки композиции:
-
Задача обучения композиции состоит в минимизации эмпирического риска
+
:: <tex>Q_{\mathrm{OOB}} = \frac{1}{\ell} \sum_{i=1}^{\ell} L( y_i,\, \frac{1}{|T_i|} \sum_{t \in T_i} b_t(x_i) )</tex>
-
:: <tex>Q(a) = \sum_{i=1}^{\ell} L\big(y_i, a(x_i)\big) \to \min</tex>
+
где <tex>T_i</tex> — множество индексов алгоритмов, для которых <tex>x_i</tex> был out-of-bag. OOB-оценка асимптотически эквивалентна оценке по [[Скользящий контроль|скользящему контролю]], но вычисляется за один проход обучения без дополнительных затрат; она, однако, не всегда заменяет полноценную внешнюю проверку, особенно если по ней многократно подбирались гиперпараметры.
-
по всем функциям <tex>a</tex> вида, допускаемого композицией. Прямая минимизация по параметрам сразу всех <tex>T</tex> базовых алгоритмов, как правило, вычислительно неосуществима; '''градиентный бустинг''' решает эту задачу приближённо — как '''функциональный градиентный спуск''' в пространстве значений алгоритма на обучающей выборке.
+
== Случайный лес ==
-
Формально рассмотрим вектор текущего приближения на обучающих объектах
+
'''[[Случайный лес]]''' дополняет схему бэггинга решающих деревьев ещё одним источником случайности: при построении каждой вершины дерева признак для расщепления ищется не среди всех <tex>n</tex> признаков, а среди случайно выбранного подмножества из <tex>m \ll n</tex> признаков (типичный выбор — <tex>m=\sqrt{n}</tex> для классификации и <tex>m=n/3</tex> для регрессии). Такое случайное подпространство признаков дополнительно снижает корреляцию <tex>\rho</tex> между деревьями композиции, что усиливает эффект снижения разброса при усреднении. Л. Брейман определил случайный лес как композицию деревьев, зависящих от случайных векторов, независимо и одинаково распределённых для отдельных деревьев<ref name="breiman2001"/>.
-
:: <tex>u = \big( a(x_1), \dots, a(x_\ell) \big) \in \mathbb{R}^{\ell}</tex>
+
Ошибка обобщения случайного леса с ростом числа деревьев почти наверное сходится к величине <tex>\rho \cdot P_{X,Y}(\mathrm{margin}(X,Y) < 0)</tex>, где <tex>\rho</tex> — средняя корреляция между деревьями, а <tex>\mathrm{margin}</tex> — разность долей голосов за истинный и за наиболее популярный ошибочный класс<ref name="breiman2001"/>; из этой границы следует, что увеличение числа деревьев само по себе не ведёт к переобучению, а качество леса определяется соотношением силы отдельных деревьев и их взаимной корреляции. При определённых ограничениях на структуру деревьев и распределение данных случайный лес состоятелен в смысле сходимости к [[Оптимальный байесовский классификатор|байесовскому классификатору]] при стремлении объёма выборки к бесконечности<ref>Biau G., Scornet E. A Random Forest Guided Tour // Test. — 2016. — Vol. 25. — No. 2. — P. 197–227.</ref>. Важность отдельных признаков в случайном лесе оценивается по падению точности при случайной перестановке (пермутации) значений признака либо по суммарному уменьшению критерия неоднородности (индекса Джини или энтропии) на разбиениях, использующих данный признак.
-
как единственный аргумент функционала <tex>Q(u) = \sum_{i=1}^{\ell} L(y_i, u_i)</tex>, определённого уже не на пространстве функций, а на конечномерном пространстве <tex>\mathbb{R}^{\ell}</tex>. Направление наискорейшего убывания <tex>Q(u)</tex> в точке <tex>u</tex> задаётся антиградиентом:
+
== Бустинг ==
-
:: <tex>s_i = -\frac{\partial L(y_i, z)}{\partial z}\bigg|_{z = a(x_i)}, \qquad i = 1, \dots, \ell</tex>
+
'''Бустинг''' строит композицию последовательно: каждый новый базовый алгоритм добавляется с учётом уже построенной модели,
-
Величины <tex>s_1, \dots, s_\ell</tex> называются '''псевдо-остатками''': это координаты направления, в котором нужно сдвинуть вектор ответов композиции <tex>u</tex> на обучающих объектах, чтобы наискорейшим образом уменьшить суммарные потери. Если бы значения <tex>a(x)</tex> в точках <tex>x_1, \dots, x_\ell</tex> можно было менять независимо друг от друга, оптимальным шагом был бы в точности сдвиг <tex>u \to u + s</tex>. Однако <tex>a(x)</tex> должна быть определена не только на обучающих объектах, но и на всём пространстве <tex>X</tex>, поэтому истинный антиградиент <tex>s</tex> заменяется его '''параметрической аппроксимацией''' — новый базовый алгоритм <tex>b_{T+1}</tex> обучается решать задачу регрессии на псевдо-остатки:
+
:: <tex>F_t(x) = F_{t-1}(x) + \alpha_t\, b_t(x)</tex>
-
:: <tex>b_{T+1} = \arg\min_{b} \sum_{i=1}^{\ell} \big( b(x_i) - s_i \big)^2</tex>
+
В отличие от бэггинга, модели, как правило, нельзя обучать полностью независимо: шаг <tex>t</tex> зависит от результатов предыдущих шагов, что делает последовательную схему принципиально непараллелизуемой по базовым алгоритмам.
-
то есть приближает направление антиградиента функцией, обобщающейся на весь <tex>X</tex>, а не только на обучающие точки. После того как направление <tex>b_{T+1}</tex> найдено, вдоль него производится одномерный '''поиск оптимального шага''' — коэффициента <tex>\alpha_{T+1}</tex>, минимизирующего исходный функционал потерь вдоль выбранного направления:
+
=== AdaBoost ===
-
:: <tex>\alpha_{T+1} = \arg\min_{\alpha \in \mathbb{R}} \sum_{i=1}^{\ell} L\big( y_i,\, a_T(x_i) + \alpha\, b_{T+1}(x_i) \big)</tex>
+
'''AdaBoost''' («адаптивный бустинг») — первый практически реализованный алгоритм бустинга<ref name="freund1997"/>: он инициализирует равные веса всех объектов, на каждой итерации <tex>t</tex> обучает слабый классификатор <tex>b_t</tex>, вычисляет его взвешенную ошибку <tex>\varepsilon_t</tex> на текущих весах объектов и вес самого классификатора в композиции
-
после чего композиция обновляется: <tex>a_{T+1}(x) = a_T(x) + \alpha_{T+1}\, b_{T+1}(x)</tex>. В отличие от бэггинга, где базовые алгоритмы независимы и минимизация происходит по разбросу, здесь каждый следующий базовый алгоритм целенаправленно устраняет ту часть ошибки, которую не устранили предыдущие, — механизм, последовательно уменьшающий смещение композиции<ref>Friedman J. H. Greedy Function Approximation: A Gradient Boosting Machine // Annals of Statistics. — 2001. — Vol. 29. — P. 1189–1232.</ref>.
+
:: <tex>\alpha_t = \frac{1}{2} \ln \frac{1-\varepsilon_t}{\varepsilon_t}</tex>
-
Для квадратичной функции потерь <tex>L(y, z) = (y - z)^2</tex> антиградиент в точке <tex>z = a(x_i)</tex> равен <tex>s_i = 2(y_i - a(x_i))</tex>, то есть с точностью до постоянного множителя совпадает с обычными остатками регрессии — отсюда и происходит название «псевдо-остатки» для общего случая произвольной функции потерь.
+
после чего веса объектов обновляются по мультипликативному правилу: для бинарных меток <tex>y_i \in \{-1,+1\}</tex>
-
== Алгоритм градиентного бустинга ==
+
:: <tex>w_i^{(t+1)} = \frac{w_i^{(t)}\, \exp(-\alpha_t\, y_i\, b_t(x_i))}{Z_t}</tex>
-
'''Вход:''' обучающая выборка <tex>X^{\ell}</tex>; функция потерь <tex>L(y, z)</tex>; число итераций <tex>T</tex>; темп обучения (learning rate) <tex>\eta \in (0, 1]</tex>.
+
где <tex>Z_t</tex> — нормировочная константа, обеспечивающая <tex>\sum_i w_i^{(t+1)} = 1</tex>. Если <tex>b_t(x_i)</tex> совпадает с <tex>y_i</tex>, вес объекта уменьшается; при ошибке — увеличивается, вынуждая следующий базовый алгоритм концентрироваться на «трудных» примерах. Итоговый классификатор — знак взвешенного голосования: <tex>a(x) = \mathrm{sign}(\sum_t \alpha_t\, b_t(x))</tex>.
-
'''Выход:''' композиция <tex>a_T(x) = \sum_{t=1}^{T} \eta\, \alpha_t\, b_t(x)</tex>.
+
'''Теорема о сильной обучаемости''' (Шапире, 1990): если существует эффективный алгоритм, порождающий слабые гипотезы с ошибкой менее <tex>1/2</tex> для бинарной классификации, то бустингом можно построить сильную гипотезу со сколь угодно малой ошибкой на обучающей выборке. Для AdaBoost с экспоненциальной функцией потерь обучающая ошибка ограничена сверху величиной <tex>\exp(-2 \sum_{t=1}^{T} \gamma_t^2)</tex>, где <tex>\gamma_t = 1/2 - \varepsilon_t</tex> — отрыв слабого классификатора <tex>b_t</tex> от случайного угадывания<ref name="freund1997"/>: при достаточной ёмкости базовых моделей (гарантированном положительном <tex>\gamma_t</tex> на каждом шаге) обучающая ошибка композиции экспоненциально убывает с ростом <tex>T</tex>.
-
# Инициализировать начальное приближение константой: <tex>a_0(x) \equiv \arg\min_{z} \sum_{i=1}^{\ell} L(y_i, z)</tex>.
+
=== Градиентный бустинг ===
-
# Для <tex>t = 1, \dots, T</tex>:
+
 
-
## Вычислить псевдо-остатки на текущем приближении: <tex>s_i = -\partial L(y_i, z) / \partial z \big|_{z=a_{t-1}(x_i)}</tex> для всех <tex>i = 1, \dots, \ell</tex>.
+
Пусть <tex>L(y,z)</tex> — произвольная дифференцируемая по <tex>z</tex> функция потерь, и композиция строится аддитивно: <tex>a_T(x) = \sum_{t=1}^{T} \alpha_t\, b_t(x)</tex>. Задача обучения — минимизация эмпирического риска <tex>Q(a) = \sum_{i=1}^{\ell} L(y_i, a(x_i)) \to \min</tex> по всем функциям <tex>a</tex> заданного вида. Прямая минимизация по параметрам сразу всех <tex>T</tex> базовых алгоритмов, как правило, неосуществима; '''градиентный бустинг''' решает задачу приближённо — как '''функциональный градиентный спуск''' в пространстве значений алгоритма на обучающей выборке<ref name="friedman2001"/>.
-
## Обучить базовый алгоритм <tex>b_t</tex> на задаче регрессии, приближающей псевдо-остатки: <tex>b_t = \arg\min_{b} \sum_{i} (b(x_i) - s_i)^2</tex>.
+
 
-
## Найти оптимальный шаг вдоль направления <tex>b_t</tex>: <tex>\alpha_t = \arg\min_{\alpha} \sum_{i} L(y_i, a_{t-1}(x_i) + \alpha\, b_t(x_i))</tex>.
+
Рассмотрим вектор текущего приближения на обучающих объектах <tex>u = (a(x_1),\dots,a(x_\ell)) \in \mathbb{R}^{\ell}</tex> как единственный аргумент функционала <tex>Q(u) = \sum_i L(y_i, u_i)</tex>, определённого на конечномерном пространстве <tex>\mathbb{R}^{\ell}</tex> вместо пространства функций. Направление наискорейшего убывания <tex>Q(u)</tex> задаётся антиградиентом:
-
## Обновить композицию с учётом темпа обучения: <tex>a_t(x) = a_{t-1}(x) + \eta\, \alpha_t\, b_t(x)</tex>.
+
 
 +
:: <tex>s_i = -\frac{\partial L(y_i, z)}{\partial z}|_{z=a(x_i)}, \qquad i=1,\dots,\ell</tex>
 +
 
 +
Величины <tex>s_1,\dots,s_\ell</tex> — '''псевдо-остатки''': координаты направления, в котором нужно сдвинуть вектор ответов <tex>u</tex> на обучающих объектах, чтобы наискорейшим образом уменьшить суммарные потери. Поскольку <tex>a(x)</tex> должна быть определена не только на обучающих объектах, но и на всём <tex>X</tex>, истинный антиградиент <tex>s</tex> заменяется его параметрической аппроксимацией — новый базовый алгоритм обучается решать задачу регрессии на псевдо-остатки:
 +
 
 +
:: <tex>b_{T+1} = \arg\min_{b} \sum_{i=1}^{\ell} ( b(x_i) - s_i )^2</tex>
 +
 
 +
после чего вдоль найденного направления производится одномерный поиск оптимального шага:
 +
 
 +
:: <tex>\alpha_{T+1} = \arg\min_{\alpha \in \mathbb{R}} \sum_{i=1}^{\ell} L( y_i,\, a_T(x_i) + \alpha\, b_{T+1}(x_i) )</tex>
 +
 
 +
и композиция обновляется: <tex>a_{T+1}(x) = a_T(x) + \alpha_{T+1}\, b_{T+1}(x)</tex>. Для квадратичной функции потерь <tex>L(y,z)=(y-z)^2</tex> антиградиент равен <tex>s_i = 2(y_i-a(x_i))</tex>, то есть с точностью до постоянного множителя совпадает с обычными остатками регрессии — отсюда и название «псевдо-остатки» для общего случая произвольной функции потерь.
 +
 
 +
'''Псевдокод градиентного бустинга.''' Вход: выборка <tex>X^{\ell}</tex>, функция потерь <tex>L</tex>, число итераций <tex>T</tex>, темп обучения <tex>\eta \in (0,1]</tex>. Выход: композиция <tex>a_T(x) = \sum_{t=1}^{T} \eta\, \alpha_t\, b_t(x)</tex>.
 +
 
 +
# Инициализировать <tex>a_0(x) \equiv \arg\min_{z} \sum_{i} L(y_i,z)</tex>.
 +
# Для <tex>t=1,\dots,T</tex>:
 +
## вычислить псевдо-остатки <tex>s_i = -\partial L(y_i,z)/\partial z |_{z=a_{t-1}(x_i)}</tex> для всех <tex>i</tex>;
 +
## обучить <tex>b_t = \arg\min_{b} \sum_i (b(x_i)-s_i)^2</tex>;
 +
## найти шаг <tex>\alpha_t = \arg\min_{\alpha} \sum_i L(y_i, a_{t-1}(x_i)+\alpha\, b_t(x_i))</tex>;
 +
## обновить <tex>a_t(x) = a_{t-1}(x) + \eta\, \alpha_t\, b_t(x)</tex>.
# Вернуть <tex>a_T</tex>.
# Вернуть <tex>a_T</tex>.
-
Темп обучения <tex>\eta</tex>, уменьшающий вклад каждого отдельного базового алгоритма, — стандартный инструмент регуляризации градиентного бустинга: меньшие значения <tex>\eta</tex> требуют большего числа итераций <tex>T</tex>, но снижают риск переобучения композиции на обучающей выборке. Дополнительными средствами регуляризации служат ограничение глубины базовых деревьев <tex>b_t</tex> и стохастический вариант алгоритма, в котором на каждой итерации базовый алгоритм обучается по случайной подвыборке объектов и/или признаков по аналогии с идеей [[Стохастический градиентный спуск|стохастического градиентного спуска]], перенесённой из пространства параметров в пространство функций.
+
Темп обучения <tex>\eta</tex> — стандартный инструмент регуляризации: меньшие значения требуют большего числа итераций <tex>T</tex>, но снижают риск переобучения. Дополнительные средства регуляризации ограничение глубины базовых деревьев и стохастический вариант алгоритма, в котором на каждой итерации базовый алгоритм обучается по случайной подвыборке объектов и/или признаков, по аналогии со [[Стохастический градиентный спуск|стохастическим градиентным спуском]], перенесённым из пространства параметров в пространство функций.
-
== Практическое применение: прогнозирование оттока клиентов ==
+
==== Практическое применение: прогнозирование оттока клиентов ====
-
Рассмотрим задачу бинарной классификации: по табличным признакам клиента — длительность обслуживания в компании (мес.), число обращений в поддержку за последний квартал, среднемесячный платёж — требуется предсказать, расторгнет ли клиент договор в следующем периоде. Метка класса <tex>y \in \{-1, +1\}</tex>, где <tex>y=+1</tex> — отток. В качестве функции потерь используется логистическая функция:
+
Рассмотрим задачу бинарной классификации: по признакам клиента — длительность обслуживания (мес.), число обращений в поддержку за квартал, среднемесячный платёж — предсказывается расторжение договора, <tex>y \in \{-1,+1\}</tex>, <tex>y=+1</tex> — отток. При логистической функции потерь <tex>L(y,z)=\ln(1+e^{-yz})</tex> антиградиент равен <tex>s_i = y_i / (1+e^{y_i\, a(x_i)})</tex>. Пусть начальное приближение — константа <tex>a_0(x) \equiv \ln(P_1/P_{-1})</tex>, где <tex>P_1,P_{-1}</tex> — доли клиентов с оттоком и без него; при доле оттока <tex>20\%</tex> получаем <tex>a_0(x) \equiv \ln(0{,}2/0{,}8) \approx -1{,}386</tex>.
-
:: <tex>L(y, z) = \ln\big(1 + e^{-yz}\big)</tex>
+
'''Шаг 1.''' Для ушедшего клиента (<tex>y_i=+1</tex>) псевдо-остаток <tex>s_i = 1/(1+e^{-1{,}386}) \approx 0{,}80</tex> — предсказание нужно сдвинуть в сторону оттока; для оставшегося (<tex>y_i=-1</tex>) <tex>s_i \approx -0{,}80</tex> — предсказание уже смещено в верном направлении.
-
для которой антиградиент имеет вид
+
'''Шаг 2.''' На парах (признаки, псевдо-остаток) обучается неглубокое решающее дерево регрессии <tex>b_1</tex> (глубины 2–3), способное выделить, например, подгруппу «более трёх обращений в поддержку за квартал и менее шести месяцев обслуживания» как область с систематически высоким псевдо-остатком.
-
:: <tex>s_i = \frac{y_i}{1 + e^{y_i\, a(x_i)}}</tex>
+
'''Шаг 3.''' Вдоль <tex>b_1</tex> численно (например, методом Ньютона по одной переменной) находится оптимальный шаг <tex>\alpha_1</tex>, композиция обновляется: <tex>a_1(x)=a_0(x)+\eta\,\alpha_1\,b_1(x)</tex>. На последующих итерациях клиенты, для которых <tex>b_1</tex> уже дало верную поправку, получат псевдо-остатки, близкие к нулю, а клиенты со всё ещё неверным прогнозом сформируют псевдо-остатки, на которые нацелится <tex>b_2</tex>. Итоговый классификатор — знак композиции <tex>a_T(x)</tex>, а величина <tex>1/(1+e^{-a_T(x)})</tex> интерпретируется как оценка вероятности оттока.
-
Пусть на первой итерации начальное приближение — константа <tex>a_0(x) \equiv \ln(P_1/P_{-1})</tex>, где <tex>P_1, P_{-1}</tex> — доли клиентов с оттоком и без оттока в обучающей выборке (логарифм отношения шансов, минимизирующий логистические потери на константе). Пусть, например, отток наблюдается у 20% клиентов, тогда <tex>a_0(x) \equiv \ln(0{,}2/0{,}8) = \ln 0{,}25 \approx -1{,}386</tex> для всех клиентов.
+
== Стэкинг и смешивание ==
-
'''Шаг 1. Вычисление псевдо-остатков.''' Для клиента с меткой <tex>y_i = +1</tex> (действительно ушёл) псевдо-остаток равен <tex>s_i = 1/(1+e^{-1{,}386}) \approx 0{,}80</tex> — положительная величина, указывающая, что предсказание нужно сдвинуть в сторону оттока. Для клиента с меткой <tex>y_i = -1</tex> (остался) псевдо-остаток равен <tex>s_i = -1/(1+e^{-1{,}386}) \approx -0{,}80</tex> — отрицательная величина, указывающая, что предсказание для такого клиента уже смещено в верном направлении и корректировка должна быть небольшой. Псевдо-остатки вычисляются для каждого клиента обучающей выборки, образуя новую целевую переменную для регрессии.
+
'''Стэкинг''' (stacked generalization) отказывается от заранее фиксированной корректирующей функции в пользу обучаемой<ref name="wolpert1992"/>: помимо базовых алгоритмов обучается '''метаалгоритм''' <tex>C</tex>, принимающий на вход вектор их ответов <tex>z(x)=(b_1(x),\dots,b_T(x))</tex> и предсказывающий по нему целевую переменную:
-
'''Шаг 2. Подбор базового алгоритма.''' На множестве пар (признаки клиента, псевдо-остаток) обучается неглубокое [[Решающие деревья|решающее дерево]] регрессии <tex>b_1(x)</tex> — например, глубины 2–3, — приближающее псевдо-остатки. Полученное дерево может, к примеру, выделить подгруппу «число обращений в поддержку за квартал больше трёх и длительность обслуживания менее шести месяцев» как область с систематически высоким псевдо-остатком, то есть с высоким риском оттока, не объяснённым текущим (пока константным) приближением.
+
:: <tex>a(x) = C(z(x)), \qquad C = \arg\min_{C} \sum_{i=1}^{\ell} L(y_i,\, C(z(x_i)))</tex>
-
'''Шаг 3. Поиск оптимального шага.''' Для найденного направления <tex>b_1</tex> решается одномерная задача минимизации логистических потерь по <tex>\alpha_1</tex>; поскольку явного решения в замкнутом виде для логистической функции потерь нет, оптимальный шаг находится численно (например, методом Ньютона по одной переменной либо простым одномерным поиском), после чего композиция обновляется: <tex>a_1(x) = a_0(x) + \eta\, \alpha_1\, b_1(x)</tex>.
+
В классификации входами метаалгоритма обычно служат оценки вероятностей классов, а не только готовые метки. Принципиальная методологическая трудность стэкинга — необходимость избежать переобучения метаалгоритма на ответах базовых моделей, вычисленных на тех же объектах, на которых эти модели обучались: такие ответы искусственно завышают качество, недостижимое на новых данных, а метаалгоритм в этом случае учится на нереалистично точных входах и плохо переносится на новые данные. Правильная схема использует '''out-of-fold-предсказания''':
-
Последующие итерации повторяют шаги 1–3, вычисляя псевдо-остатки уже на обновлённом приближении <tex>a_1(x)</tex>: клиенты, для которых дерево <tex>b_1</tex> уже дало корректную поправку, получат псевдо-остатки, близкие к нулю, и не будут существенно влиять на обучение <tex>b_2</tex>, тогда как клиенты со всё ещё неверным прогнозом (например, ушедшие клиенты с низким числом обращений в поддержку, не выделенные деревом <tex>b_1</tex>) сформируют псевдо-остатки, на которые нацелится следующее дерево. Итоговый классификатор оттока — знак композиции <tex>a_T(x)</tex> после <tex>T</tex> итераций, а величина <tex>1/(1+e^{-a_T(x)})</tex> интерпретируется как оценка вероятности оттока конкретного клиента.
+
# обучающая выборка делится на <tex>K</tex> частей;
 +
# для каждой части базовые модели обучаются на остальных <tex>K-1</tex> частях;
 +
# отложенная часть получает предсказания моделей, которые её не видели;
 +
# после <tex>K</tex> проходов каждый обучающий объект имеет <tex>T</tex> out-of-fold-признаков (по числу базовых моделей);
 +
# по этим признакам обучается метаалгоритм;
 +
# для применения к новым данным базовые модели переобучаются на всей обучающей выборке, а тестовая выборка не используется при обучении метаалгоритма ни на одном из этапов.
-
== Современные реализации ==
+
'''Блендинг''' (blending) — упрощённый вариант той же идеи, при котором для обучения верхнего уровня выделяется одна отдельная проверочная часть вместо полной схемы скользящего контроля; он проще в реализации, но уменьшает объём данных, доступный и базовым моделям, и метаалгоритму. Стэкинг и блендинг, в отличие от бэггинга и бустинга, обычно применяются не для ансамблирования большого числа однотипных слабых моделей, а для комбинирования небольшого числа разнородных, уже достаточно точных моделей с целью получить дополнительный прирост качества за счёт их взаимодополняющих ошибок.
-
Три наиболее распространённые библиотеки градиентного бустинга над решающими деревьями различаются деталями реализации общей схемы, изложенной выше, при сохранении единого принципа функционального градиентного спуска.
+
'''Взвешенный стэкинг с признак-зависимыми весами''' — частный случай, в котором метаалгоритм ограничен линейной по ответам базовых моделей формой с весами, зависящими от объекта:
-
'''XGBoost''' явно включает в критерий построения дерева регуляризационное слагаемое, штрафующее число листьев дерева и величину значений в листьях (аналог <tex>L_1</tex>/<tex>L_2</tex>-регуляризации), а также использует приближение вторыми производными функции потерь (аналог метода Ньютона) при выборе структуры дерева, а не только первыми производными (антиградиентом), как в классической схеме Фридмана. Деревья строятся послойно (level-wise) с ограничением максимальной глубины.
+
:: <tex>a(x) = \sum_{t=1}^{T} c_t(x)\, b_t(x), \qquad c_t(x) \geq 0,\, \sum_t c_t(x) = 1</tex>
-
'''LightGBM''' отличается стратегией роста дерева: вместо послойного роста используется '''поразрядный (leaf-wise) рост''' — на каждом шаге расщепляется тот лист дерева, который даёт наибольшее уменьшение функции потерь, независимо от глубины, что при равном числе листьев даёт более точные, но и более склонные к переобучению деревья, обычно компенсируемые ограничением максимальной глубины. Дополнительно LightGBM использует гистограммное представление признаков для ускорения перебора порогов расщепления и нативную поддержку категориальных признаков через разбиение по подмножествам категорий, а не через предварительное однократное кодирование.
+
В отличие от простого взвешенного голосования, где веса постоянны по всему <tex>X</tex>, здесь вес каждой модели меняется от объекта к объекту.
-
'''CatBoost''' сосредоточен на корректной обработке категориальных признаков и устранении систематического смещения (target leakage), возникающего при наивной замене категории статистикой целевой переменной по этой категории, вычисленной на той же обучающей выборке. Для этого используется '''упорядоченное статистическое кодирование''' (ordered target statistics): для каждого объекта статистика по категориальному признаку вычисляется только по объектам, предшествующим ему в некотором случайном порядке, что эмулирует честную схему скользящего контроля внутри самого процесса построения признаков. Кроме того, CatBoost использует симметричные (oblivious) деревья, в которых на всех вершинах одного уровня используется одно и то же условие расщепления, что ускоряет применение модели и служит дополнительной формой регуляризации.
+
== Смесь экспертов ==
 +
 
 +
'''Смесь экспертов''' (mixture of experts) формализует идею признак-зависимых весов, вводя явную обучаемую '''функцию компетентности''' (gating function) <tex>g_t(x)</tex>, предсказывающую вероятность того, что эксперт <tex>b_t</tex> компетентен на объекте <tex>x</tex>:
 +
 
 +
:: <tex>a(x) = \sum_{t=1}^{T} g_t(x)\, b_t(x), \qquad g_t(x) = \frac{\exp(v_t(x))}{\sum_{s=1}^{T} \exp(v_s(x))}</tex>
 +
 
 +
где <tex>v_t(x)</tex> — параметрическая (как правило, линейная по признакам) функция, обучаемая совместно с экспертами <tex>b_t</tex> максимизацией правдоподобия композиции<ref>Jacobs R. A., Jordan M. I., Nowlan S. J., Hinton G. E. Adaptive Mixtures of Local Experts // Neural Computation. — 1991. — Vol. 3. — No. 1. — P. 79–87.</ref>. Например, если один эксперт специализируется на объектах с малым значением некоторого признака, а другой — на объектах с большим значением того же признака (скажем, один эксперт настроен на короткие временные ряды, другой — на длинные), обученная функция компетентности будет плавно передавать ответственность за прогноз от одного эксперта к другому в переходной зоне. В отличие от бэггинга и бустинга, смесь экспертов явно моделирует неоднородность признакового пространства, в разных областях которого целесообразны структурно различные модели, и, в отличие от простого взвешенного стэкинга, обучает веса <tex>g_t</tex> как часть единой вероятностной модели, а не отдельным пост-хок шагом.
 +
 
 +
== Современные реализации градиентного бустинга ==
 +
 
 +
Три наиболее распространённые библиотеки градиентного бустинга над решающими деревьями различаются деталями реализации общей схемы Фридмана.
 +
 
 +
'''XGBoost'''<ref>Chen T., Guestrin C. XGBoost: A Scalable Tree Boosting System // Proceedings of the 22nd ACM SIGKDD. — 2016. — P. 785–794.</ref> явно включает в критерий построения дерева регуляризационное слагаемое, штрафующее число листьев и величину значений в листьях (аналог <tex>L_1</tex>/<tex>L_2</tex>-регуляризации), и использует приближение вторыми производными функции потерь (аналог метода Ньютона) при выборе структуры дерева, а не только первыми производными, как в классической схеме. Деревья строятся послойно (level-wise) с ограничением максимальной глубины.
 +
 
 +
'''LightGBM'''<ref>Ke G., Meng Q., Finley T. и др. LightGBM: A Highly Efficient Gradient Boosting Decision Tree // Advances in Neural Information Processing Systems. — 2017. — Vol. 30. — P. 3146–3154.</ref> использует поразрядный (leaf-wise) рост дерева — на каждом шаге расщепляется тот лист, который даёт наибольшее уменьшение функции потерь, независимо от глубины, — гистограммное представление признаков для ускорения перебора порогов, градиентную одностороннюю выборку объектов (GOSS) и объединение взаимоисключающих признаков (EFB), а также нативную поддержку категориальных признаков через разбиение по подмножествам категорий.
 +
 
 +
'''CatBoost'''<ref>Prokhorenkova L., Gusev G., Vorobev A. и др. CatBoost: Unbiased Boosting with Categorical Features // Advances in Neural Information Processing Systems. — 2018. — Vol. 31.</ref> устраняет систематическое смещение (target leakage), возникающее при наивной замене категориального признака статистикой целевой переменной, вычисленной на той же обучающей выборке: '''упорядоченное статистическое кодирование''' вычисляет такую статистику для каждого объекта только по объектам, предшествующим ему в случайном порядке, что эмулирует честную схему скользящего контроля внутри самого построения признаков. CatBoost также использует симметричные (oblivious) деревья, где на всех вершинах одного уровня применяется одно и то же условие расщепления, что ускоряет применение модели и служит дополнительной регуляризацией.
 +
 
 +
== Ансамбли нейронных сетей ==
 +
 
 +
Несколько нейронных сетей можно обучить с разными случайными инициализациями, на разных подвыборках, с разными архитектурами, преобразованиями данных или функциями потерь, после чего их вероятности или числовые предсказания усредняются. Глубокие ансамбли применяются не только для повышения точности, но и для оценивания неопределённости: разброс предсказаний между сетями может указывать на области, в которых модели не согласны между собой. Показано, что ансамбль независимо обученных нейронных сетей может давать полезные оценки предсказательной неопределённости<ref>Lakshminarayanan B., Pritzel A., Blundell C. Simple and Scalable Predictive Uncertainty Estimation Using Deep Ensembles // Advances in Neural Information Processing Systems. — 2017. — Vol. 30.</ref>. Родственные приёмы — снэпшот-ансамбли (сохранение нескольких состояний одной сети в процессе циклического обучения) и приближённое ансамблирование через прореживание активаций на этапе применения модели. Главное ограничение таких ансамблей — высокая стоимость: необходимо обучать, хранить и запускать несколько больших моделей.
 +
 
 +
== Калибровка вероятностей и выбор порога ==
 +
 
 +
Средняя вероятность ансамбля, как правило, оказывается стабильнее вероятности одной модели, но калибровка (согласованность предсказанной вероятности с фактической частотой события) не гарантируется автоматически и должна проверяться отдельно — с помощью калибровочных кривых, логарифмической функции потерь, меры Брайера или показателей ожидаемой ошибки калибровки. Калибровку следует выполнять на данных, не использованных при обучении базовых моделей; если одна и та же проверочная выборка многократно применяется и для выбора состава ансамбля, и для калибровки, итоговая оценка становится оптимистичной.
 +
 
 +
В бинарной классификации решение по вероятности положительного класса принимается сравнением с порогом <tex>\tau</tex>: <tex>a(x) = [\, \widehat{P}(y=1\mid x) \geq \tau \,]</tex>. Порог следует выбирать по прикладной цене ошибок разного рода, а не автоматически принимать равным <tex>0{,}5</tex>: например, в медицинском скрининге пропуск заболевания обычно обходится дороже ложной тревоги, что смещает оптимальный порог в сторону меньших значений. Порог подбирается на проверочных данных уже после построения композиции.
 +
 
 +
== Сжатие композиции (дистилляция) ==
 +
 
 +
Большую композицию иногда заменяют одной компактной моделью — процесс называется '''дистилляцией знаний'''. Модель-ученик обучается воспроизводить ответы композиции, включая вероятности классов или числовые оценки, а не только исходную разметку. Это позволяет уменьшить задержку и объём памяти при применении модели, но ученик, как правило, теряет часть точности и практически всегда теряет оценку неопределённости, которую давал разброс ответов исходного ансамбля. Дистилляция особенно полезна, когда большая композиция используется на этапе подготовки модели, а конечное устройство применения имеет существенно более ограниченные вычислительные ресурсы.
== Сравнение методов ==
== Сравнение методов ==
Строка 169: Строка 234:
! Критерий !! Бэггинг !! Бустинг !! Стэкинг
! Критерий !! Бэггинг !! Бустинг !! Стэкинг
|-
|-
-
| Обучение базовых алгоритмов || параллельное, независимое || последовательное, каждый следующий зависит от предыдущих || параллельное для базовых алгоритмов, отдельное для мета-алгоритма
+
| Обучение базовых алгоритмов || параллельное, независимое || последовательное, каждый следующий зависит от предыдущих || параллельное для базовых алгоритмов, отдельное для метаалгоритма
|-
|-
| Основной эффект на ошибку || снижает разброс (variance) || снижает смещение (bias) || снижает и смещение, и разброс за счёт обучаемой корректирующей функции
| Основной эффект на ошибку || снижает разброс (variance) || снижает смещение (bias) || снижает и смещение, и разброс за счёт обучаемой корректирующей функции
|-
|-
-
| Параллелизуемость обучения || полная || отсутствует (строго последовательная схема) || полная для базовых алгоритмов
+
| Параллелизуемость обучения || полная || отсутствует (строго последовательная схема) || полная для базовых алгоритмов, кросс-валидация добавляет вычислительные затраты
|-
|-
-
| Устойчивость к переобучению || высокая при росте <tex>T</tex> || требует регуляризации (темп обучения, глубина деревьев, число итераций) || зависит от корректности схемы скользящего контроля при построении мета-признаков
+
| Устойчивость к переобучению || высокая, растёт с числом моделей || требует регуляризации (темп обучения, глубина деревьев, ранняя остановка) || зависит от корректности схемы скользящего контроля при построении метапризнаков
|-
|-
-
| Типичные базовые алгоритмы || алгоритмы с низким смещением и высоким разбросом (глубокие деревья) || алгоритмы с высоким смещением и низким разбросом (неглубокие деревья) || разнородные по своей природе алгоритмы (деревья, линейные модели, метрические методы)
+
| Типичные базовые алгоритмы || алгоритмы с низким смещением и высоким разбросом (глубокие деревья) || алгоритмы с высоким смещением и низким разбросом (неглубокие деревья) || разнородные по природе алгоритмы (деревья, линейные модели, метрические методы)
|-
|-
-
| Интерпретируемость || ниже отдельного дерева, но допускает оценку важности признаков || ниже отдельного дерева, но допускает оценку важности признаков || как правило, наименьшая среди трёх схем из-за дополнительного уровня мета-алгоритма
+
| Интерпретируемость || ниже отдельной модели, но допускает оценку важности признаков || ниже отдельной модели, но допускает оценку важности признаков (в том числе через SHAP-значения) || как правило, наименьшая среди трёх схем из-за дополнительного уровня метаалгоритма
 +
|-
 +
| Нативная работа с пропусками и категориальными признаками || обычно требует предварительной обработки || современные реализации (XGBoost, CatBoost) обрабатывают пропуски и категории нативно || зависит от используемых базовых моделей
|}
|}
 +
 +
== Практический выбор метода ==
 +
 +
{| class="wikitable"
 +
! Условия !! Возможный подход !! Причина
 +
|-
 +
| Нестабильная модель и достаточный вычислительный бюджет || Бэггинг || Уменьшение разброса
 +
|-
 +
| Табличные данные и деревья || Случайный лес или градиентный бустинг || Хорошее моделирование нелинейностей и взаимодействий признаков
 +
|-
 +
| Несколько сильных разных моделей || Усреднение или стэкинг || Использование различий в структуре ошибок
 +
|-
 +
| Разные модели полезны для разных объектов || Смесь экспертов || Зависимые от объекта веса
 +
|-
 +
| Большие нейронные сети || Небольшой глубокий ансамбль || Точность и оценка неопределённости
 +
|-
 +
| Жёсткое ограничение задержки применения || Одна модель или дистилляция композиции || Снижение стоимости применения
 +
|}
 +
 +
Таблица задаёт лишь отправные варианты; окончательный выбор должен определяться экспериментом и ограничениями конкретной системы.
 +
 +
== Корректный эксперимент и типичные ошибки ==
 +
 +
Для честной проверки композиции необходимо использовать одинаковые разбиения данных для всех базовых моделей, отделять обучение базовых моделей от обучения правила объединения, строить out-of-fold-признаки для стэкинга, не использовать тестовые ответы при выборе состава ансамбля, сравнивать итоговое качество с лучшей одиночной моделью, учитывать время работы, память и задержку при применении, повторять эксперимент при нескольких случайных разбиениях и проверять качество на значимых подгруппах данных. Сравнение с простой одиночной моделью особенно важно: если композиция улучшает целевой показатель лишь незначительно, но многократно увеличивает вычислительную стоимость, её применение может быть неоправданным.
 +
 +
Наиболее распространённые ошибки при построении композиций:
 +
 +
* '''Простое добавление большого числа похожих моделей''' — если базовые модели почти одинаковы, выигрыш от их объединения быстро насыщается (см. раздел «Диверсификация и корреляция ошибок»).
 +
* '''Выбор весов агрегирования по тестовой выборке''' — тестовая выборка фактически становится частью обучения, а итоговая оценка качества оказывается завышенной.
 +
* '''Стэкинг по внутривыборочным, а не out-of-fold-предсказаниям''' — метаалгоритм обучается на нереалистично точных входах и плохо переносится на новые данные.
 +
* '''Усреднение несопоставимых выходов''' — одна модель выдаёт калиброванные вероятности, другая — необработанные оценки; перед объединением выходы необходимо привести к согласованному смыслу.
 +
* '''Рассогласованный порядок классов''' — в разных программных реализациях столбцы вероятностей могут соответствовать классам в разном порядке, что при объединении приводит к смешиванию вероятностей разных классов.
 +
* '''Отсутствие базового сравнения''' — без отдельной оценки каждой базовой модели неизвестно, принесла ли композиция пользу вообще.
 +
* '''Игнорирование вычислительной стоимости''' — композиция из десятков моделей может быть непригодна для системы, работающей в реальном времени.
 +
* '''Усреднение моделей с общей систематической ошибкой''' — если все базовые модели используют один ошибочный признак или обучены на одинаково смещённых данных, ансамбль уверенно воспроизводит это смещение: композиция не отменяет смещение данных, ошибочную постановку задачи или неверную разметку.
 +
 +
== Применения ==
 +
 +
Композиции алгоритмов применяются в кредитном скоринге и риск-менеджменте (где встроенные меры важности признаков частично отвечают требованиям интерпретируемости), обнаружении мошенничества, медицинской диагностике (где особенно важны калибровка и оценка неопределённости), рекомендательных системах, прогнозировании спроса, ранжировании и поиске (алгоритм LambdaMART — модификация градиентного бустинга для попарных и списочных функций потерь — лежит в основе многих промышленных поисковых систем), анализе временных рядов, оценивании рисков и обработке мультимодальных данных, объединяющих текст, изображение, историю действий и табличные признаки одного объекта. В соревнованиях по анализу данных, включая Kaggle, композиции — в первую очередь градиентный бустинг, стэкинг и блендинг — стабильно доминируют среди решений победителей; XGBoost и LightGBM де-факто стандартны для табличных данных.
 +
 +
Современные системы автоматического машинного обучения (AutoML — Auto-Sklearn, H2O AutoML, AutoGluon) рассматривают построение композиции как один из ключевых этапов пайплайна, автоматически подбирая состав базовых моделей, их гиперпараметры и стратегию агрегирования (стэкинг, взвешенное усреднение, жадный отбор в ансамбль). В федеративном обучении ансамблирование локальных моделей, обученных на разных узлах, — естественный способ построения глобального предиктора без обмена исходными данными между узлами.
 +
 +
== Ограничения ==
 +
 +
'''Вычислительная стоимость.''' Несколько моделей требуют больше времени обучения, памяти и ресурсов при применении, чем единственная модель; бэггинг и случайный лес легко распараллеливаются по базовым моделям, тогда как бустинг — последовательный процесс, хотя современные реализации распараллеливают построение отдельного дерева.
 +
 +
'''Сложность интерпретации.''' Отдельное дерево или линейную модель объяснить проще, чем композицию из сотен компонентов; методы интерпретации (оценки важности признаков, частичная зависимость, SHAP-значения) должны применяться к итоговой композиции целиком, а не к одному произвольно выбранному базовому алгоритму.
 +
 +
'''Сложность воспроизводимости.''' Композиция может включать множество этапов, разбиений данных, случайных начальных значений и версий используемых библиотек — все эти сведения необходимо явно фиксировать и сохранять для воспроизведения результата.
 +
 +
'''Уязвимость к утечке данных.''' Стэкинг, подбор весов агрегирования, калибровка и выбор порога добавляют дополнительные уровни обработки, на каждом из которых проверочные или тестовые данные могут случайно попасть в обучение.
 +
 +
'''Сложность обновления.''' При поступлении новых данных может потребоваться переобучение сразу нескольких базовых моделей и правила их объединения, с контролем совместимости версий каждого компонента.
 +
 +
== Преимущества ==
 +
 +
Композиции алгоритмов позволяют уменьшать разброс предсказаний, использовать сильные стороны разных моделей, повышать устойчивость к случайным изменениям обучающей выборки, строить сложные зависимости из простых компонентов, оценивать неопределённость по расхождению предсказаний базовых моделей, разделять пространство объектов между специализированными экспертами и получать более высокое качество без разработки одного чрезвычайно сложного алгоритма. Некоторые схемы (бэггинг, независимые нейронные сети) хорошо распараллеливаются, что позволяет обучать базовые модели одновременно на разных вычислительных узлах.
== Литература ==
== Литература ==
<references/>
<references/>
 +
 +
* Zhou Z.-H. Ensemble Methods: Foundations and Algorithms. — Boca Raton: CRC Press, 2012.
 +
* James G., Witten D., Hastie T., Tibshirani R. An Introduction to Statistical Learning. — 2nd ed. — New York: Springer, 2021.
[[Категория:Методы классификации]]
[[Категория:Методы классификации]]

Версия 11:59, 25 июля 2026

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Д. Жумабеков 21:27, 19 июля 2026 (MSD)


Содержание

Композиция алгоритмов (ансамбль моделей, ансамблевый метод; англ. ensemble learning) — методология машинного обучения, в которой для решения одной задачи прогнозирования вместо единственной модели используется согласованный набор базовых алгоритмов (базовых моделей, base learners), а итоговый прогноз получается объединением их индивидуальных предсказаний посредством корректирующей (агрегирующей) функции[1]. Ансамблевые методы, как правило, показывают более высокое качество и устойчивость предсказаний, чем любой из составляющих их базовых алгоритмов по отдельности, за счёт снижения разброса, смещения или того и другого одновременно[1]. К числу основных ансамблевых методов относятся Бэггинг, Случайный лес, Бустинг, Стэкинг и смесь экспертов; эти методы широко применяются в классификации, регрессии, ранжировании, оценивании вероятностей и обнаружении аномалий и стабильно занимают ведущие места в соревнованиях по анализу данных.

Формальное определение

Пусть X^{\ell} = (x_i, y_i)_{i=1}^{\ell} — обучающая выборка, b_1, \dots, b_T: X \to \mathbb{R} — семейство базовых алгоритмов, каждый из которых по отдельности решает задачу прогнозирования с некоторым, как правило невысоким, качеством. Композицией (ансамблем) называется способ построения итогового алгоритма

a(x) = C(b_1(x), \dots, b_T(x))

где C: \mathbb{R}^T \to \mathbb{R} — корректирующая функция, объединяющая ответы базовых алгоритмов в единый прогноз. Правило C может быть простым или взвешенным средним, голосованием, медианой, обучаемой моделью (метаалгоритмом), функцией, зависящей от объекта, либо последовательным добавлением новых моделей к уже построенной части композиции. Базовые алгоритмы могут принадлежать одному семейству — однородная композиция (например, деревья в случайном лесе) — или различным семействам — неоднородная композиция (например, стэкинг, объединяющий дерево, линейную модель и метод ближайших соседей). Однородные композиции удобно создавать с помощью случайности в данных, признаках или параметрах обучения; неоднородные обладают потенциально большей разнородностью ошибок, но их предсказания труднее согласовывать в силу различий в масштабе и природе выходов базовых алгоритмов.

По способу обучения базовых алгоритмов композиционные методы делятся на два класса.

  • Параллельное (одновременное) обучение. Базовые алгоритмы обучаются независимо друг от друга, как правило, на различных подвыборках или подпространствах признаков, после чего объединяются корректирующей функцией, не зависящей от процесса их обучения. К этому классу относится Бэггинг.
  • Последовательное обучение. Каждый следующий базовый алгоритм строится с учётом качества работы уже построенной композиции, как правило, с целью исправления её текущих ошибок. К этому классу относится Бустинг.

Историческая справка

Идея объединения нескольких оценок для получения более надёжного результата восходит к статистике XVIII—XIX веков — к усреднению независимых измерений и к теореме присяжных Кондорсе о коллективном принятии решений. В машинном обучении первые систематические результаты о выигрыше от комбинирования моделей относятся к концу 1980-х — началу 1990-х годов: Хансен и Саламон показали, что усреднение по ансамблю нейронных сетей снижает ошибку обобщения по сравнению с отдельной сетью[1], а в 1991 году была предложена адаптивная смесь локальных экспертов с обучаемым управляющим механизмом[1].

Решающий теоретический сдвиг произошёл в 1990 году, когда Р. Шапире доказал, что «слабую обучаемость» (существование алгоритма, чуть более точного, чем случайное угадывание) можно преобразовать в «сильную обучаемость» (произвольно высокую точность), формально обосновав саму возможность бустинга[1]. Эта теоретическая конструкция была превращена в практичный алгоритм — AdaBoost — Й. Фройндом и Р. Шапире в 1996—1997 годах[1]. В 1992 году Д. Вольперт предложил stacked generalization как общую схему обучаемого комбинирования моделей[1]. В 1996 году Л. Брейман представил бэггинг[1] и в 2001 году объединил идеи бэггинга и случайного выбора признаков в методе случайного леса[1], а Т. Хо независимо развивала метод случайных подпространств для построения ансамблей деревьев[1].

На рубеже 2000-х годов Дж. Фридман переформулировал бустинг в терминах численной оптимизации в функциональном пространстве, предложив градиентный бустинг как единую схему, применимую к произвольным дифференцируемым функциям потерь[1]. Обзорная статья Т. Дитериха 2000 года систематизировала накопленные к тому времени статистические, вычислительные и репрезентационные аргументы в пользу ансамблевых методов, закрепив ансамблевое обучение как самостоятельное направление машинного обучения. В 2000-е и 2010-е годы на основе градиентного бустинга над решающими деревьями были разработаны промышленные библиотеки XGBoost, LightGBM и CatBoost, ставшие стандартом де-факто для табличных данных.

Почему композиция может работать лучше отдельной модели

Идея ансамблей опирается на несколько взаимодополняющих соображений, сформулированных Т. Дитерихом.

  • Статистическая причина. Если обучающая выборка невелика, у алгоритма обучения может существовать несколько разных гипотез, одинаково хорошо объясняющих данные; выбор одной из них рискован, тогда как усреднение по нескольким снижает риск выбрать неудачную гипотезу.
  • Вычислительная причина. Многие алгоритмы обучения выполняют локальный поиск (например, жадное построение решающего дерева) и могут застревать в локальных оптимумах; запуск алгоритма из разных начальных точек или на разных подвыборках и объединение результатов даёт лучшее приближение к оптимальному решению, чем единичный запуск.
  • Репрезентационная причина. Истинная зависимость между признаками и целевой переменной может не входить в пространство гипотез, доступное отдельному базовому алгоритму; взвешенная сумма нескольких таких гипотез способна аппроксимировать функции, недостижимые ни одной гипотезой по отдельности, — геометрически композиция выбирает точку в пространстве функций, лежащую в выпуклой оболочке базовых моделей, а не совпадающую ни с одной из них.

Разложение ошибки на смещение и разброс

Пусть ошибка алгоритма a, обученного по случайной выборке X^{\ell}, измеряется квадратичным функционалом. Усредняя по всем возможным обучающим выборкам фиксированного объёма, ожидаемую квадратичную ошибку в точке x можно разложить на три неотрицательных слагаемых:

\mathrm{E}_{X^{\ell}} [ (a(x) - y(x))^2 ] = \mathrm{Bias}^2(x) + \mathrm{Var}(x) + \sigma^2

где \mathrm{Bias}(x) = \mathrm{E}_{X^{\ell}}\, a(x) - y(x) — смещение, систематическое отклонение среднего по выборкам ответа алгоритма от истинной зависимости, \mathrm{Var}(x) = \mathrm{E}_{X^{\ell}} [ (a(x) - \mathrm{E}_{X^{\ell}}\, a(x))^2 ] — разброс, чувствительность ответа к конкретной реализации выборки, а \sigma^2 — неустранимый шум, не зависящий от алгоритма. Высокое смещение типично для слишком простых, негибких моделей (недообучение), высокий разброс — для слишком гибких моделей, чрезмерно подстраивающихся под конкретную выборку (Переобучение).

Для композиции из T одинаково распределённых моделей с попарной корреляцией ошибок \rho и общей дисперсией \sigma^2 дисперсия усреднённого предсказания равна

\mathrm{Var}(\overline{b}) = \rho\, \sigma^2 + \frac{1-\rho}{T}\, \sigma^2

Если ошибки независимы (\rho=0), дисперсия убывает пропорционально 1/T; если ошибки полностью совпадают (\rho=1), усреднение не даёт никакого выигрыша. Отсюда следуют два условия эффективного ансамбля: отдельные модели должны быть достаточно точными, а их ошибки — по возможности не коррелированы. На этом принципе строится бэггинг, главным образом уменьшающий разброс нестабильного алгоритма при почти неизменном смещении. Бустинг, напротив, последовательно уменьшает смещение, комбинируя простые модели во всё более точную составную модель.

Диверсификация и корреляция ошибок

Ключевой фактор эффективности ансамбля — разнообразие (diversity) базовых алгоритмов: если ошибки отдельных моделей слабо коррелированы, их усреднение взаимно гасит случайные ошибки. Для ансамбля из T независимых и одинаково точных классификаторов с вероятностью ошибки p<0{,}5 у каждого голосование большинством даёт вероятность ошибки композиции, экспоненциально убывающую с ростом T — классический результат, восходящий к теореме присяжных Кондорсе и применённый к ансамблям классификаторов Хансеном и Саламоном. На практике полной независимости моделей добиться нельзя, и реальный выигрыш определяется компромиссом между точностью базовых алгоритмов и их взаимным разнообразием, что формализуется, в частности, разложением ошибки ансамбля на среднюю ошибку базовых моделей минус их взаимное «несогласие» (ambiguity decomposition)[1]. Количественной мерой разнообразия пары классификаторов служат Q-статистика Йола или коэффициент согласия \kappa Коэна[1]; экспериментально установлено, что ансамбли показывают наибольший выигрыш, когда базовые модели ошибаются на разных подмножествах данных, чего добиваются введением случайности в обучение — бутстрепом, случайными подпространствами признаков или различием архитектур и гиперпараметров.

Простое и взвешенное усреднение / голосование

Простейшая корректирующая функция для регрессии — среднее арифметическое ответов базовых алгоритмов:

a(x) = \frac{1}{T} \sum_{t=1}^{T} b_t(x)

Взвешенное среднее обобщает эту схему:

a(x) = \sum_{t=1}^{T} \alpha_t\, b_t(x), \qquad \sum_{t=1}^{T} \alpha_t = 1,\, \alpha_t \geq 0

Веса могут задаваться вручную, пропорционально качеству базовых моделей, оптимизацией функции потерь \min_{\alpha} \sum_{i=1}^{\ell} L(y_i, \sum_t \alpha_t b_t(x_i)) по проверочной выборке, с ограничением неотрицательности и суммы, равной единице (что снижает риск неустойчивых взаимных компенсаций весов), либо с явной регуляризацией. Отрицательные веса допустимы в некоторых линейных композициях, но усложняют интерпретацию и могут давать неустойчивые предсказания. Усреднение уменьшает влияние отдельных необычных предсказаний, однако само среднее чувствительно к очень большим выбросам; в таких случаях применяют медиану или усечённое среднее.

Для классификации, если каждый алгоритм выдаёт метку класса, простое голосование выбирает класс, набравший больше всего голосов:

a(x) = \arg\max_{y \in Y} \sum_{t=1}^{T} [\, b_t(x) = y \,]

Взвешенное голосование приписывает каждому алгоритму вес w_t \geq 0, отражающий степень доверия к нему:

a(x) = \arg\max_{y \in Y} \sum_{t=1}^{T} w_t\, [\, b_t(x) = y \,]

Эта конструкция в точности совпадает со схемой агрегирования логических закономерностей в классификаторе на основе набора правил: каждое правило, будучи интерпретируемым бинарным классификатором одного класса, — частный случай базового алгоритма b_t, а его вес — мера информативности правила относительно своего класса. Голосование по готовым меткам не использует степень уверенности моделей; если доступны оценки вероятностей класса \widehat{P}_t(y \mid x), как правило, эффективнее усреднять сами вероятности:

\widehat{P}(y \mid x) = \sum_{t=1}^{T} \alpha_t\, \widehat{P}_t(y \mid x)

с последующим выбором класса по максимуму усреднённой вероятности. Такое усреднение требует согласованного порядка классов у всех базовых моделей и, желательно, хорошо откалиброванных вероятностей (см. раздел «Калибровка вероятностей»).

Пример: голосование по меткам против усреднения вероятностей

Пусть три классификатора дали следующие ответы для одного объекта:

Алгоритм Предсказанный класс Вероятность класса A
b_1 A 0,90
b_2 B 0,49
b_3 B 0,48

Обычное голосование по меткам выбирает класс B, поскольку за него подано два голоса из трёх. Средняя же вероятность класса A равна (0{,}90+0{,}49+0{,}48)/3 \approx 0{,}623, что превышает 0{,}5, и при вероятностном усреднении будет выбран класс A. Пример показывает, что голосование по меткам и усреднение вероятностей — принципиально разные правила агрегирования, дающие разный ответ на одних и тех же исходных предсказаниях: первое игнорирует степень уверенности b_1 в своём ответе, второе её учитывает.

Бэггинг

Бэггинг (bootstrap aggregating) строит T независимых базовых алгоритмов b_1,\dots,b_T, каждый из которых обучается по собственной бутстреп-выборке \widetilde{X}^{\ell}_t — выборке объёма \ell, полученной случайным выбором объектов из X^{\ell} с возвращением[1]. Итоговая композиция — простое усреднение (регрессия) или голосование (классификация) ответов. Поскольку бутстреп-выборки получены из одного и того же распределения, все b_t имеют приблизительно одинаковое смещение, совпадающее со смещением базового алгоритма, обученного по всей выборке; усреднение при этом снижает разброс композиции без существенного изменения смещения. Бэггинг наиболее эффективен для нестабильных алгоритмов — таких, у которых малое изменение обучающей выборки приводит к значительному изменению построенной модели (глубокие непрострижённые решающие деревья); для устойчивых алгоритмов (например, метода ближайших соседей или линейной регрессии, чьи МНК-оценки стабильны относительно возмущений выборки) выигрыш от бэггинга невелик или отсутствует.

Оценка по объектам вне бутстрепа (out-of-bag)

Поскольку каждая бутстреп-выборка в среднем содержит около 1-e^{-1} \approx 63{,}2\% исходных объектов, оставшиеся приблизительно 36{,}8\% объектов — out-of-bag (OOB) объекты — не участвовали в обучении соответствующего базового алгоритма и могут быть использованы для его тестирования без отдельного разбиения данных. Усредняя ошибку каждого объекта x_i только по тем базовым алгоритмам, для которых он был OOB, получают OOB-оценку ошибки композиции:

Q_{\mathrm{OOB}} = \frac{1}{\ell} \sum_{i=1}^{\ell} L( y_i,\, \frac{1}{|T_i|} \sum_{t \in T_i} b_t(x_i) )

где T_i — множество индексов алгоритмов, для которых x_i был out-of-bag. OOB-оценка асимптотически эквивалентна оценке по скользящему контролю, но вычисляется за один проход обучения без дополнительных затрат; она, однако, не всегда заменяет полноценную внешнюю проверку, особенно если по ней многократно подбирались гиперпараметры.

Случайный лес

Случайный лес дополняет схему бэггинга решающих деревьев ещё одним источником случайности: при построении каждой вершины дерева признак для расщепления ищется не среди всех n признаков, а среди случайно выбранного подмножества из m \ll n признаков (типичный выбор — m=\sqrt{n} для классификации и m=n/3 для регрессии). Такое случайное подпространство признаков дополнительно снижает корреляцию \rho между деревьями композиции, что усиливает эффект снижения разброса при усреднении. Л. Брейман определил случайный лес как композицию деревьев, зависящих от случайных векторов, независимо и одинаково распределённых для отдельных деревьев[1].

Ошибка обобщения случайного леса с ростом числа деревьев почти наверное сходится к величине \rho \cdot P_{X,Y}(\mathrm{margin}(X,Y) < 0), где \rho — средняя корреляция между деревьями, а \mathrm{margin} — разность долей голосов за истинный и за наиболее популярный ошибочный класс[1]; из этой границы следует, что увеличение числа деревьев само по себе не ведёт к переобучению, а качество леса определяется соотношением силы отдельных деревьев и их взаимной корреляции. При определённых ограничениях на структуру деревьев и распределение данных случайный лес состоятелен в смысле сходимости к байесовскому классификатору при стремлении объёма выборки к бесконечности[1]. Важность отдельных признаков в случайном лесе оценивается по падению точности при случайной перестановке (пермутации) значений признака либо по суммарному уменьшению критерия неоднородности (индекса Джини или энтропии) на разбиениях, использующих данный признак.

Бустинг

Бустинг строит композицию последовательно: каждый новый базовый алгоритм добавляется с учётом уже построенной модели,

F_t(x) = F_{t-1}(x) + \alpha_t\, b_t(x)

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

AdaBoost

AdaBoost («адаптивный бустинг») — первый практически реализованный алгоритм бустинга[1]: он инициализирует равные веса всех объектов, на каждой итерации t обучает слабый классификатор b_t, вычисляет его взвешенную ошибку \varepsilon_t на текущих весах объектов и вес самого классификатора в композиции

\alpha_t = \frac{1}{2} \ln \frac{1-\varepsilon_t}{\varepsilon_t}

после чего веса объектов обновляются по мультипликативному правилу: для бинарных меток y_i \in \{-1,+1\}

w_i^{(t+1)} = \frac{w_i^{(t)}\, \exp(-\alpha_t\, y_i\, b_t(x_i))}{Z_t}

где Z_t — нормировочная константа, обеспечивающая \sum_i w_i^{(t+1)} = 1. Если b_t(x_i) совпадает с y_i, вес объекта уменьшается; при ошибке — увеличивается, вынуждая следующий базовый алгоритм концентрироваться на «трудных» примерах. Итоговый классификатор — знак взвешенного голосования: a(x) = \mathrm{sign}(\sum_t \alpha_t\, b_t(x)).

Теорема о сильной обучаемости (Шапире, 1990): если существует эффективный алгоритм, порождающий слабые гипотезы с ошибкой менее 1/2 для бинарной классификации, то бустингом можно построить сильную гипотезу со сколь угодно малой ошибкой на обучающей выборке. Для AdaBoost с экспоненциальной функцией потерь обучающая ошибка ограничена сверху величиной \exp(-2 \sum_{t=1}^{T} \gamma_t^2), где \gamma_t = 1/2 - \varepsilon_t — отрыв слабого классификатора b_t от случайного угадывания[1]: при достаточной ёмкости базовых моделей (гарантированном положительном \gamma_t на каждом шаге) обучающая ошибка композиции экспоненциально убывает с ростом T.

Градиентный бустинг

Пусть L(y,z) — произвольная дифференцируемая по z функция потерь, и композиция строится аддитивно: a_T(x) = \sum_{t=1}^{T} \alpha_t\, b_t(x). Задача обучения — минимизация эмпирического риска Q(a) = \sum_{i=1}^{\ell} L(y_i, a(x_i)) \to \min по всем функциям a заданного вида. Прямая минимизация по параметрам сразу всех T базовых алгоритмов, как правило, неосуществима; градиентный бустинг решает задачу приближённо — как функциональный градиентный спуск в пространстве значений алгоритма на обучающей выборке[1].

Рассмотрим вектор текущего приближения на обучающих объектах u = (a(x_1),\dots,a(x_\ell)) \in \mathbb{R}^{\ell} как единственный аргумент функционала Q(u) = \sum_i L(y_i, u_i), определённого на конечномерном пространстве \mathbb{R}^{\ell} вместо пространства функций. Направление наискорейшего убывания Q(u) задаётся антиградиентом:

s_i = -\frac{\partial L(y_i, z)}{\partial z}|_{z=a(x_i)}, \qquad i=1,\dots,\ell

Величины s_1,\dots,s_\ellпсевдо-остатки: координаты направления, в котором нужно сдвинуть вектор ответов u на обучающих объектах, чтобы наискорейшим образом уменьшить суммарные потери. Поскольку a(x) должна быть определена не только на обучающих объектах, но и на всём X, истинный антиградиент s заменяется его параметрической аппроксимацией — новый базовый алгоритм обучается решать задачу регрессии на псевдо-остатки:

b_{T+1} = \arg\min_{b} \sum_{i=1}^{\ell} ( b(x_i) - s_i )^2

после чего вдоль найденного направления производится одномерный поиск оптимального шага:

\alpha_{T+1} = \arg\min_{\alpha \in \mathbb{R}} \sum_{i=1}^{\ell} L( y_i,\, a_T(x_i) + \alpha\, b_{T+1}(x_i) )

и композиция обновляется: a_{T+1}(x) = a_T(x) + \alpha_{T+1}\, b_{T+1}(x). Для квадратичной функции потерь L(y,z)=(y-z)^2 антиградиент равен s_i = 2(y_i-a(x_i)), то есть с точностью до постоянного множителя совпадает с обычными остатками регрессии — отсюда и название «псевдо-остатки» для общего случая произвольной функции потерь.

Псевдокод градиентного бустинга. Вход: выборка X^{\ell}, функция потерь L, число итераций T, темп обучения \eta \in (0,1]. Выход: композиция a_T(x) = \sum_{t=1}^{T} \eta\, \alpha_t\, b_t(x).

  1. Инициализировать a_0(x) \equiv \arg\min_{z} \sum_{i} L(y_i,z).
  2. Для t=1,\dots,T:
    1. вычислить псевдо-остатки s_i = -\partial L(y_i,z)/\partial z |_{z=a_{t-1}(x_i)} для всех i;
    2. обучить b_t = \arg\min_{b} \sum_i (b(x_i)-s_i)^2;
    3. найти шаг \alpha_t = \arg\min_{\alpha} \sum_i L(y_i, a_{t-1}(x_i)+\alpha\, b_t(x_i));
    4. обновить a_t(x) = a_{t-1}(x) + \eta\, \alpha_t\, b_t(x).
  3. Вернуть a_T.

Темп обучения \eta — стандартный инструмент регуляризации: меньшие значения требуют большего числа итераций T, но снижают риск переобучения. Дополнительные средства регуляризации — ограничение глубины базовых деревьев и стохастический вариант алгоритма, в котором на каждой итерации базовый алгоритм обучается по случайной подвыборке объектов и/или признаков, по аналогии со стохастическим градиентным спуском, перенесённым из пространства параметров в пространство функций.

Практическое применение: прогнозирование оттока клиентов

Рассмотрим задачу бинарной классификации: по признакам клиента — длительность обслуживания (мес.), число обращений в поддержку за квартал, среднемесячный платёж — предсказывается расторжение договора, y \in \{-1,+1\}, y=+1 — отток. При логистической функции потерь L(y,z)=\ln(1+e^{-yz}) антиградиент равен s_i = y_i / (1+e^{y_i\, a(x_i)}). Пусть начальное приближение — константа a_0(x) \equiv \ln(P_1/P_{-1}), где P_1,P_{-1} — доли клиентов с оттоком и без него; при доле оттока 20\% получаем a_0(x) \equiv \ln(0{,}2/0{,}8) \approx -1{,}386.

Шаг 1. Для ушедшего клиента (y_i=+1) псевдо-остаток s_i = 1/(1+e^{-1{,}386}) \approx 0{,}80 — предсказание нужно сдвинуть в сторону оттока; для оставшегося (y_i=-1) s_i \approx -0{,}80 — предсказание уже смещено в верном направлении.

Шаг 2. На парах (признаки, псевдо-остаток) обучается неглубокое решающее дерево регрессии b_1 (глубины 2–3), способное выделить, например, подгруппу «более трёх обращений в поддержку за квартал и менее шести месяцев обслуживания» как область с систематически высоким псевдо-остатком.

Шаг 3. Вдоль b_1 численно (например, методом Ньютона по одной переменной) находится оптимальный шаг \alpha_1, композиция обновляется: a_1(x)=a_0(x)+\eta\,\alpha_1\,b_1(x). На последующих итерациях клиенты, для которых b_1 уже дало верную поправку, получат псевдо-остатки, близкие к нулю, а клиенты со всё ещё неверным прогнозом сформируют псевдо-остатки, на которые нацелится b_2. Итоговый классификатор — знак композиции a_T(x), а величина 1/(1+e^{-a_T(x)}) интерпретируется как оценка вероятности оттока.

Стэкинг и смешивание

Стэкинг (stacked generalization) отказывается от заранее фиксированной корректирующей функции в пользу обучаемой[1]: помимо базовых алгоритмов обучается метаалгоритм C, принимающий на вход вектор их ответов z(x)=(b_1(x),\dots,b_T(x)) и предсказывающий по нему целевую переменную:

a(x) = C(z(x)), \qquad C = \arg\min_{C} \sum_{i=1}^{\ell} L(y_i,\, C(z(x_i)))

В классификации входами метаалгоритма обычно служат оценки вероятностей классов, а не только готовые метки. Принципиальная методологическая трудность стэкинга — необходимость избежать переобучения метаалгоритма на ответах базовых моделей, вычисленных на тех же объектах, на которых эти модели обучались: такие ответы искусственно завышают качество, недостижимое на новых данных, а метаалгоритм в этом случае учится на нереалистично точных входах и плохо переносится на новые данные. Правильная схема использует out-of-fold-предсказания:

  1. обучающая выборка делится на K частей;
  2. для каждой части базовые модели обучаются на остальных K-1 частях;
  3. отложенная часть получает предсказания моделей, которые её не видели;
  4. после K проходов каждый обучающий объект имеет T out-of-fold-признаков (по числу базовых моделей);
  5. по этим признакам обучается метаалгоритм;
  6. для применения к новым данным базовые модели переобучаются на всей обучающей выборке, а тестовая выборка не используется при обучении метаалгоритма ни на одном из этапов.

Блендинг (blending) — упрощённый вариант той же идеи, при котором для обучения верхнего уровня выделяется одна отдельная проверочная часть вместо полной схемы скользящего контроля; он проще в реализации, но уменьшает объём данных, доступный и базовым моделям, и метаалгоритму. Стэкинг и блендинг, в отличие от бэггинга и бустинга, обычно применяются не для ансамблирования большого числа однотипных слабых моделей, а для комбинирования небольшого числа разнородных, уже достаточно точных моделей с целью получить дополнительный прирост качества за счёт их взаимодополняющих ошибок.

Взвешенный стэкинг с признак-зависимыми весами — частный случай, в котором метаалгоритм ограничен линейной по ответам базовых моделей формой с весами, зависящими от объекта:

a(x) = \sum_{t=1}^{T} c_t(x)\, b_t(x), \qquad c_t(x) \geq 0,\, \sum_t c_t(x) = 1

В отличие от простого взвешенного голосования, где веса постоянны по всему X, здесь вес каждой модели меняется от объекта к объекту.

Смесь экспертов

Смесь экспертов (mixture of experts) формализует идею признак-зависимых весов, вводя явную обучаемую функцию компетентности (gating function) g_t(x), предсказывающую вероятность того, что эксперт b_t компетентен на объекте x:

a(x) = \sum_{t=1}^{T} g_t(x)\, b_t(x), \qquad g_t(x) = \frac{\exp(v_t(x))}{\sum_{s=1}^{T} \exp(v_s(x))}

где v_t(x) — параметрическая (как правило, линейная по признакам) функция, обучаемая совместно с экспертами b_t максимизацией правдоподобия композиции[1]. Например, если один эксперт специализируется на объектах с малым значением некоторого признака, а другой — на объектах с большим значением того же признака (скажем, один эксперт настроен на короткие временные ряды, другой — на длинные), обученная функция компетентности будет плавно передавать ответственность за прогноз от одного эксперта к другому в переходной зоне. В отличие от бэггинга и бустинга, смесь экспертов явно моделирует неоднородность признакового пространства, в разных областях которого целесообразны структурно различные модели, и, в отличие от простого взвешенного стэкинга, обучает веса g_t как часть единой вероятностной модели, а не отдельным пост-хок шагом.

Современные реализации градиентного бустинга

Три наиболее распространённые библиотеки градиентного бустинга над решающими деревьями различаются деталями реализации общей схемы Фридмана.

XGBoost[1] явно включает в критерий построения дерева регуляризационное слагаемое, штрафующее число листьев и величину значений в листьях (аналог L_1/L_2-регуляризации), и использует приближение вторыми производными функции потерь (аналог метода Ньютона) при выборе структуры дерева, а не только первыми производными, как в классической схеме. Деревья строятся послойно (level-wise) с ограничением максимальной глубины.

LightGBM[1] использует поразрядный (leaf-wise) рост дерева — на каждом шаге расщепляется тот лист, который даёт наибольшее уменьшение функции потерь, независимо от глубины, — гистограммное представление признаков для ускорения перебора порогов, градиентную одностороннюю выборку объектов (GOSS) и объединение взаимоисключающих признаков (EFB), а также нативную поддержку категориальных признаков через разбиение по подмножествам категорий.

CatBoost[1] устраняет систематическое смещение (target leakage), возникающее при наивной замене категориального признака статистикой целевой переменной, вычисленной на той же обучающей выборке: упорядоченное статистическое кодирование вычисляет такую статистику для каждого объекта только по объектам, предшествующим ему в случайном порядке, что эмулирует честную схему скользящего контроля внутри самого построения признаков. CatBoost также использует симметричные (oblivious) деревья, где на всех вершинах одного уровня применяется одно и то же условие расщепления, что ускоряет применение модели и служит дополнительной регуляризацией.

Ансамбли нейронных сетей

Несколько нейронных сетей можно обучить с разными случайными инициализациями, на разных подвыборках, с разными архитектурами, преобразованиями данных или функциями потерь, после чего их вероятности или числовые предсказания усредняются. Глубокие ансамбли применяются не только для повышения точности, но и для оценивания неопределённости: разброс предсказаний между сетями может указывать на области, в которых модели не согласны между собой. Показано, что ансамбль независимо обученных нейронных сетей может давать полезные оценки предсказательной неопределённости[1]. Родственные приёмы — снэпшот-ансамбли (сохранение нескольких состояний одной сети в процессе циклического обучения) и приближённое ансамблирование через прореживание активаций на этапе применения модели. Главное ограничение таких ансамблей — высокая стоимость: необходимо обучать, хранить и запускать несколько больших моделей.

Калибровка вероятностей и выбор порога

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

В бинарной классификации решение по вероятности положительного класса принимается сравнением с порогом \tau: a(x) = [\, \widehat{P}(y=1\mid x) \geq \tau \,]. Порог следует выбирать по прикладной цене ошибок разного рода, а не автоматически принимать равным 0{,}5: например, в медицинском скрининге пропуск заболевания обычно обходится дороже ложной тревоги, что смещает оптимальный порог в сторону меньших значений. Порог подбирается на проверочных данных уже после построения композиции.

Сжатие композиции (дистилляция)

Большую композицию иногда заменяют одной компактной моделью — процесс называется дистилляцией знаний. Модель-ученик обучается воспроизводить ответы композиции, включая вероятности классов или числовые оценки, а не только исходную разметку. Это позволяет уменьшить задержку и объём памяти при применении модели, но ученик, как правило, теряет часть точности и практически всегда теряет оценку неопределённости, которую давал разброс ответов исходного ансамбля. Дистилляция особенно полезна, когда большая композиция используется на этапе подготовки модели, а конечное устройство применения имеет существенно более ограниченные вычислительные ресурсы.

Сравнение методов

Сопоставление бэггинга, бустинга и стэкинга
Критерий Бэггинг Бустинг Стэкинг
Обучение базовых алгоритмов параллельное, независимое последовательное, каждый следующий зависит от предыдущих параллельное для базовых алгоритмов, отдельное для метаалгоритма
Основной эффект на ошибку снижает разброс (variance) снижает смещение (bias) снижает и смещение, и разброс за счёт обучаемой корректирующей функции
Параллелизуемость обучения полная отсутствует (строго последовательная схема) полная для базовых алгоритмов, кросс-валидация добавляет вычислительные затраты
Устойчивость к переобучению высокая, растёт с числом моделей требует регуляризации (темп обучения, глубина деревьев, ранняя остановка) зависит от корректности схемы скользящего контроля при построении метапризнаков
Типичные базовые алгоритмы алгоритмы с низким смещением и высоким разбросом (глубокие деревья) алгоритмы с высоким смещением и низким разбросом (неглубокие деревья) разнородные по природе алгоритмы (деревья, линейные модели, метрические методы)
Интерпретируемость ниже отдельной модели, но допускает оценку важности признаков ниже отдельной модели, но допускает оценку важности признаков (в том числе через SHAP-значения) как правило, наименьшая среди трёх схем из-за дополнительного уровня метаалгоритма
Нативная работа с пропусками и категориальными признаками обычно требует предварительной обработки современные реализации (XGBoost, CatBoost) обрабатывают пропуски и категории нативно зависит от используемых базовых моделей

Практический выбор метода

Условия Возможный подход Причина
Нестабильная модель и достаточный вычислительный бюджет Бэггинг Уменьшение разброса
Табличные данные и деревья Случайный лес или градиентный бустинг Хорошее моделирование нелинейностей и взаимодействий признаков
Несколько сильных разных моделей Усреднение или стэкинг Использование различий в структуре ошибок
Разные модели полезны для разных объектов Смесь экспертов Зависимые от объекта веса
Большие нейронные сети Небольшой глубокий ансамбль Точность и оценка неопределённости
Жёсткое ограничение задержки применения Одна модель или дистилляция композиции Снижение стоимости применения

Таблица задаёт лишь отправные варианты; окончательный выбор должен определяться экспериментом и ограничениями конкретной системы.

Корректный эксперимент и типичные ошибки

Для честной проверки композиции необходимо использовать одинаковые разбиения данных для всех базовых моделей, отделять обучение базовых моделей от обучения правила объединения, строить out-of-fold-признаки для стэкинга, не использовать тестовые ответы при выборе состава ансамбля, сравнивать итоговое качество с лучшей одиночной моделью, учитывать время работы, память и задержку при применении, повторять эксперимент при нескольких случайных разбиениях и проверять качество на значимых подгруппах данных. Сравнение с простой одиночной моделью особенно важно: если композиция улучшает целевой показатель лишь незначительно, но многократно увеличивает вычислительную стоимость, её применение может быть неоправданным.

Наиболее распространённые ошибки при построении композиций:

  • Простое добавление большого числа похожих моделей — если базовые модели почти одинаковы, выигрыш от их объединения быстро насыщается (см. раздел «Диверсификация и корреляция ошибок»).
  • Выбор весов агрегирования по тестовой выборке — тестовая выборка фактически становится частью обучения, а итоговая оценка качества оказывается завышенной.
  • Стэкинг по внутривыборочным, а не out-of-fold-предсказаниям — метаалгоритм обучается на нереалистично точных входах и плохо переносится на новые данные.
  • Усреднение несопоставимых выходов — одна модель выдаёт калиброванные вероятности, другая — необработанные оценки; перед объединением выходы необходимо привести к согласованному смыслу.
  • Рассогласованный порядок классов — в разных программных реализациях столбцы вероятностей могут соответствовать классам в разном порядке, что при объединении приводит к смешиванию вероятностей разных классов.
  • Отсутствие базового сравнения — без отдельной оценки каждой базовой модели неизвестно, принесла ли композиция пользу вообще.
  • Игнорирование вычислительной стоимости — композиция из десятков моделей может быть непригодна для системы, работающей в реальном времени.
  • Усреднение моделей с общей систематической ошибкой — если все базовые модели используют один ошибочный признак или обучены на одинаково смещённых данных, ансамбль уверенно воспроизводит это смещение: композиция не отменяет смещение данных, ошибочную постановку задачи или неверную разметку.

Применения

Композиции алгоритмов применяются в кредитном скоринге и риск-менеджменте (где встроенные меры важности признаков частично отвечают требованиям интерпретируемости), обнаружении мошенничества, медицинской диагностике (где особенно важны калибровка и оценка неопределённости), рекомендательных системах, прогнозировании спроса, ранжировании и поиске (алгоритм LambdaMART — модификация градиентного бустинга для попарных и списочных функций потерь — лежит в основе многих промышленных поисковых систем), анализе временных рядов, оценивании рисков и обработке мультимодальных данных, объединяющих текст, изображение, историю действий и табличные признаки одного объекта. В соревнованиях по анализу данных, включая Kaggle, композиции — в первую очередь градиентный бустинг, стэкинг и блендинг — стабильно доминируют среди решений победителей; XGBoost и LightGBM де-факто стандартны для табличных данных.

Современные системы автоматического машинного обучения (AutoML — Auto-Sklearn, H2O AutoML, AutoGluon) рассматривают построение композиции как один из ключевых этапов пайплайна, автоматически подбирая состав базовых моделей, их гиперпараметры и стратегию агрегирования (стэкинг, взвешенное усреднение, жадный отбор в ансамбль). В федеративном обучении ансамблирование локальных моделей, обученных на разных узлах, — естественный способ построения глобального предиктора без обмена исходными данными между узлами.

Ограничения

Вычислительная стоимость. Несколько моделей требуют больше времени обучения, памяти и ресурсов при применении, чем единственная модель; бэггинг и случайный лес легко распараллеливаются по базовым моделям, тогда как бустинг — последовательный процесс, хотя современные реализации распараллеливают построение отдельного дерева.

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

Сложность воспроизводимости. Композиция может включать множество этапов, разбиений данных, случайных начальных значений и версий используемых библиотек — все эти сведения необходимо явно фиксировать и сохранять для воспроизведения результата.

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

Сложность обновления. При поступлении новых данных может потребоваться переобучение сразу нескольких базовых моделей и правила их объединения, с контролем совместимости версий каждого компонента.

Преимущества

Композиции алгоритмов позволяют уменьшать разброс предсказаний, использовать сильные стороны разных моделей, повышать устойчивость к случайным изменениям обучающей выборки, строить сложные зависимости из простых компонентов, оценивать неопределённость по расхождению предсказаний базовых моделей, разделять пространство объектов между специализированными экспертами и получать более высокое качество без разработки одного чрезвычайно сложного алгоритма. Некоторые схемы (бэггинг, независимые нейронные сети) хорошо распараллеливаются, что позволяет обучать базовые модели одновременно на разных вычислительных узлах.

Литература


  • Zhou Z.-H. Ensemble Methods: Foundations and Algorithms. — Boca Raton: CRC Press, 2012.
  • James G., Witten D., Hastie T., Tibshirani R. An Introduction to Statistical Learning. — 2nd ed. — New York: Springer, 2021.
Личные инструменты