|
|
| Строка 1: |
Строка 1: |
| - | {{well|Статья написана с использованием LLM '''ChatGPT, GPT-5.6 Thinking''' и проверена участником [[Участник:Vadim Iamaletdinov|Vadim Iamaletdinov]] 22:19, 19 июля 2026 (MSD)}}
| + | #REDIRECT [[Композиционные методы]] |
| - | {{TOCright}}
| + | |
| - | | + | |
| - | '''Композиция алгоритмов''' — алгоритм машинного обучения, объединяющий предсказания нескольких базовых алгоритмов в одно итоговое решение. В англоязычной литературе близкими терминами являются ''ensemble'', ''ensemble model'' и ''combined predictor''.
| + | |
| - | | + | |
| - | Основная идея состоит в том, что несколько моделей могут дополнять друг друга. Даже если каждый базовый алгоритм иногда ошибается, их ошибки могут происходить на разных объектах. Правильно построенная композиция способна быть точнее и устойчивее отдельных компонентов.
| + | |
| - | | + | |
| - | Композиции используются в [[Классификация|классификации]], [[Регрессия|регрессии]], ранжировании, оценивании вероятностей и обнаружении аномалий. К ним относятся голосование, усреднение, [[Бэггинг|бэггинг]], [[Случайный лес|случайный лес]], [[Бустинг|бустинг]], [[Стекинг|стекинг]], смеси экспертов и ансамбли нейронных сетей.
| + | |
| - | | + | |
| - | Объединение моделей не гарантирует улучшения автоматически. Если все базовые алгоритмы совершают одинаковые ошибки или итоговое правило обучено с утечкой данных, композиция может оказаться бесполезной или даже ухудшить качество.
| + | |
| - | | + | |
| - | == Основное определение ==
| + | |
| - | | + | |
| - | Пусть построены базовые алгоритмы
| + | |
| - | | + | |
| - | <center><tex>b_1(x),b_2(x),\ldots,b_T(x).</tex></center>
| + | |
| - | | + | |
| - | Композиция имеет вид
| + | |
| - | | + | |
| - | <center><tex>a(x)=C(b_1(x),b_2(x),\ldots,b_T(x)),</tex></center>
| + | |
| - | | + | |
| - | где <tex>C</tex> — корректирующая операция, или правило агрегирования.
| + | |
| - | | + | |
| - | Правило <tex>C</tex> может быть:
| + | |
| - | | + | |
| - | * средним значением;
| + | |
| - | * взвешенной суммой;
| + | |
| - | * голосованием;
| + | |
| - | * медианой;
| + | |
| - | * обучаемой моделью;
| + | |
| - | * функцией, веса которой зависят от объекта;
| + | |
| - | * последовательным добавлением новых моделей.
| + | |
| - | | + | |
| - | Базовые алгоритмы могут принадлежать одному семейству или быть различными. Например, случайный лес состоит из множества деревьев, а стекинг может объединять дерево, линейную модель и нейронную сеть.
| + | |
| - | | + | |
| - | == Почему композиция может работать лучше ==
| + | |
| - | | + | |
| - | === Усреднение случайных ошибок ===
| + | |
| - | | + | |
| - | Пусть регрессионные модели имеют ошибки с одинаковой дисперсией <tex>\sigma^2</tex>, а попарная корреляция ошибок равна <tex>\rho</tex>. Для среднего предсказания дисперсия ошибки при упрощающих предположениях равна
| + | |
| - | | + | |
| - | <center><tex>{\rm Var}(\overline{b})=\frac{\sigma^2}{T}\left(1+(T-1)\rho\right).</tex></center>
| + | |
| - | | + | |
| - | Если ошибки независимы, <tex>\rho=0</tex>, и дисперсия уменьшается примерно в <tex>T</tex> раз. Если ошибки полностью совпадают, <tex>\rho=1</tex>, усреднение не уменьшает дисперсию.
| + | |
| - | | + | |
| - | Эта формула показывает два важных свойства хорошего ансамбля:
| + | |
| - | | + | |
| - | * отдельные модели должны быть достаточно точными;
| + | |
| - | * их ошибки не должны быть слишком сильно коррелированы.
| + | |
| - | | + | |
| - | === Снижение нестабильности ===
| + | |
| - | | + | |
| - | Некоторые методы чувствительны к небольшим изменениям обучающей выборки. Например, изменение нескольких объектов способно заметно изменить дерево решений. Усреднение нескольких версий нестабильного алгоритма делает итоговое предсказание более устойчивым.
| + | |
| - | | + | |
| - | Именно эта идея лежит в основе бэггинга. Л. Брейман подчёркивал, что бэггинг особенно полезен для методов, предсказания которых значительно меняются при возмущении обучающей выборки.<ref name="BreimanBagging1996">{{статья
| + | |
| - | |автор = Breiman L.
| + | |
| - | |заглавие = Bagging Predictors
| + | |
| - | |ссылка = https://doi.org/10.1023/A:1018054314350
| + | |
| - | |издание = Machine Learning
| + | |
| - | |год = 1996
| + | |
| - | |том = 24
| + | |
| - | |номер = 2
| + | |
| - | |страницы = 123—140
| + | |
| - | |doi = 10.1023/A:1018054314350
| + | |
| - | }}</ref>
| + | |
| - | | + | |
| - | === Исправление систематических ошибок ===
| + | |
| - | | + | |
| - | Последовательные композиции могут добавлять новые алгоритмы, направленные на исправление текущих ошибок. Такой принцип используется в бустинге.
| + | |
| - | | + | |
| - | === Специализация моделей ===
| + | |
| - | | + | |
| - | Разные модели могут быть полезны в разных областях пространства объектов. Смесь экспертов обучает специальный механизм, определяющий, какому эксперту доверять для конкретного объекта.
| + | |
| - | | + | |
| - | == Простое усреднение ==
| + | |
| - | | + | |
| - | Для регрессии простейшая композиция вычисляет среднее:
| + | |
| - | | + | |
| - | <center><tex>a(x)=\frac{1}{T}\sum_{t=1}^{T}b_t(x).</tex></center>
| + | |
| - | | + | |
| - | Взвешенное среднее имеет вид
| + | |
| - | | + | |
| - | <center><tex>a(x)=\sum_{t=1}^{T}\alpha_tb_t(x),\qquad \sum_{t=1}^{T}\alpha_t=1.</tex></center>
| + | |
| - | | + | |
| - | Веса могут задаваться вручную или подбираться по проверочной выборке.
| + | |
| - | | + | |
| - | Усреднение уменьшает влияние отдельных необычных предсказаний. Однако среднее чувствительно к очень большим ошибкам. В некоторых задачах применяют медиану или усечённое среднее.
| + | |
| - | | + | |
| - | == Голосование в классификации ==
| + | |
| - | | + | |
| - | Пусть каждый алгоритм выдаёт класс из множества <tex>Y</tex>. При обычном голосовании выбирается класс, получивший больше всего голосов:
| + | |
| - | | + | |
| - | <center><tex>a(x)=\arg\max_{y\in Y}\sum_{t=1}^{T}[b_t(x)=y].</tex></center>
| + | |
| - | | + | |
| - | При взвешенном голосовании:
| + | |
| - | | + | |
| - | <center><tex>a(x)=\arg\max_{y\in Y}\sum_{t=1}^{T}\alpha_t[b_t(x)=y].</tex></center>
| + | |
| - | | + | |
| - | Голосование по готовым меткам не использует степень уверенности моделей. Если доступны оценки вероятностей, часто лучше усреднять их:
| + | |
| - | | + | |
| - | <center><tex>\widehat{P}(y\mid x)=\sum_{t=1}^{T}\alpha_t\widehat{P}_t(y\mid x).</tex></center>
| + | |
| - | | + | |
| - | Итоговый класс определяется по максимальной усреднённой вероятности.
| + | |
| - | | + | |
| - | Вероятностное усреднение требует согласованного порядка классов и желательно хорошо откалиброванных вероятностей.
| + | |
| - | | + | |
| - | == Пример голосования ==
| + | |
| - | | + | |
| - | Пусть три классификатора дали ответы:
| + | |
| - | | + | |
| - | {| class="wikitable"
| + | |
| - | ! Алгоритм
| + | |
| - | ! Предсказанный класс
| + | |
| - | ! Вероятность класса A
| + | |
| - | |-
| + | |
| - | | <tex>b_1</tex>
| + | |
| - | | A
| + | |
| - | | 0,90
| + | |
| - | |-
| + | |
| - | | <tex>b_2</tex>
| + | |
| - | | B
| + | |
| - | | 0,49
| + | |
| - | |-
| + | |
| - | | <tex>b_3</tex>
| + | |
| - | | B
| + | |
| - | | 0,48
| + | |
| - | |}
| + | |
| - | | + | |
| - | Обычное голосование выбирает класс B, поскольку за него подано два голоса. Средняя вероятность класса A равна
| + | |
| - | | + | |
| - | <center><tex>\frac{0.90+0.49+0.48}{3}\approx0.623.</tex></center>
| + | |
| - | | + | |
| - | При вероятностном усреднении будет выбран класс A. Пример показывает, что голосование по меткам и усреднение вероятностей являются разными правилами композиции.
| + | |
| - | | + | |
| - | == Бэггинг ==
| + | |
| - | | + | |
| - | '''Бэггинг''' (англ. ''bootstrap aggregating'') строит несколько версий базового алгоритма на бутстрэп-выборках и агрегирует их предсказания.<ref name="BreimanBagging1996"/>
| + | |
| - | | + | |
| - | Для каждого <tex>t=1,\ldots,T</tex>:
| + | |
| - | | + | |
| - | # из исходной обучающей выборки создаётся бутстрэп-выборка;
| + | |
| - | # на ней обучается алгоритм <tex>b_t</tex>;
| + | |
| - | # предсказания всех моделей усредняются или объединяются голосованием.
| + | |
| - | | + | |
| - | Бутстрэп-выборка получается случайным выбором объектов с возвращением. Поэтому некоторые исходные объекты встречаются несколько раз, а некоторые не попадают в конкретную выборку.
| + | |
| - | | + | |
| - | Бэггинг особенно хорошо сочетается с глубокими деревьями, поскольку они обладают низким смещением, но высокой нестабильностью.
| + | |
| - | | + | |
| - | === Объекты вне бутстрэп-выборки ===
| + | |
| - | | + | |
| - | Для каждого дерева часть обучающих объектов не попадает в его бутстрэп-выборку. Их называют out-of-bag-объектами. Предсказания только тех деревьев, которые не обучались на данном объекте, можно использовать для внутренней оценки качества.
| + | |
| - | | + | |
| - | Out-of-bag-оценка не всегда заменяет полноценную внешнюю проверку, особенно если по ней многократно подбирались параметры.
| + | |
| - | | + | |
| - | == Случайный лес ==
| + | |
| - | | + | |
| - | [[Случайный лес]] объединяет бэггинг деревьев со случайным выбором признаков при построении разбиений.
| + | |
| - | | + | |
| - | Случайность признаков уменьшает сходство деревьев. Если один сильный признак доступен в каждой вершине, обычные деревья могут строить похожие верхние разбиения. Ограничение набора кандидатов заставляет деревья использовать разные признаки и снижает корреляцию ошибок.
| + | |
| - | | + | |
| - | Л. Брейман определил случайный лес как композицию деревьев, зависящих от случайных векторов, одинаково распределённых и независимо сгенерированных для отдельных деревьев.<ref name="BreimanRF2001">{{статья
| + | |
| - | |автор = Breiman L.
| + | |
| - | |заглавие = Random Forests
| + | |
| - | |ссылка = https://doi.org/10.1023/A:1010933404324
| + | |
| - | |издание = Machine Learning
| + | |
| - | |год = 2001
| + | |
| - | |том = 45
| + | |
| - | |номер = 1
| + | |
| - | |страницы = 5—32
| + | |
| - | |doi = 10.1023/A:1010933404324
| + | |
| - | }}</ref>
| + | |
| - | | + | |
| - | Качество леса зависит от силы отдельных деревьев и корреляции между ними.<ref name="BreimanRF2001"/>
| + | |
| - | | + | |
| - | == Бустинг ==
| + | |
| - | | + | |
| - | '''Бустинг''' строит композицию последовательно. Каждый новый базовый алгоритм добавляется с учётом уже построенной модели:
| + | |
| - | | + | |
| - | <center><tex>F_T(x)=\sum_{t=1}^{T}\alpha_tb_t(x).</tex></center>
| + | |
| - | | + | |
| - | В отличие от бэггинга, модели обычно нельзя обучать полностью независимо: шаг <tex>t</tex> зависит от результатов предыдущих шагов.
| + | |
| - | | + | |
| - | === AdaBoost ===
| + | |
| - | | + | |
| - | AdaBoost увеличивает внимание к объектам, на которых текущие базовые классификаторы ошибаются. Для бинарных меток <tex>y_i\in\{-1,+1\}</tex> веса объектов обновляются по правилу вида
| + | |
| - | | + | |
| - | <center><tex>w_i^{(t+1)}=\frac{w_i^{(t)}\exp(-\alpha_ty_ib_t(x_i))}{Z_t},</tex></center>
| + | |
| - | | + | |
| - | где <tex>Z_t</tex> нормирует сумму весов.
| + | |
| - | | + | |
| - | Если <tex>b_t(x_i)</tex> совпадает с <tex>y_i</tex>, вес объекта уменьшается; при ошибке — увеличивается. Итоговая композиция использует взвешенное голосование.
| + | |
| - | | + | |
| - | AdaBoost был выведен Й. Фройндом и Р. Шапиром на основе мультипликативного обновления весов.<ref name="AdaBoost1997">{{статья
| + | |
| - | |автор = Freund Y., Schapire R. E.
| + | |
| - | |заглавие = A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting
| + | |
| - | |ссылка = https://doi.org/10.1006/jcss.1997.1504
| + | |
| - | |издание = Journal of Computer and System Sciences
| + | |
| - | |год = 1997
| + | |
| - | |том = 55
| + | |
| - | |номер = 1
| + | |
| - | |страницы = 119—139
| + | |
| - | |doi = 10.1006/jcss.1997.1504
| + | |
| - | }}</ref>
| + | |
| - | | + | |
| - | === Градиентный бустинг ===
| + | |
| - | | + | |
| - | В градиентном бустинге композиция строится как жадное приближение функции в пространстве базовых алгоритмов. На каждом шаге новый алгоритм приближает направление уменьшения функции потерь.<ref name="FriedmanGB2001">{{статья
| + | |
| - | |автор = Friedman J. H.
| + | |
| - | |заглавие = Greedy Function Approximation: A Gradient Boosting Machine
| + | |
| - | |ссылка = https://doi.org/10.1214/aos/1013203451
| + | |
| - | |издание = The Annals of Statistics
| + | |
| - | |год = 2001
| + | |
| - | |том = 29
| + | |
| - | |номер = 5
| + | |
| - | |страницы = 1189—1232
| + | |
| - | |doi = 10.1214/aos/1013203451
| + | |
| - | }}</ref>
| + | |
| - | | + | |
| - | Для квадратичной ошибки новый базовый алгоритм приближает остатки:
| + | |
| - | | + | |
| - | <center><tex>r_i^{(t)}=y_i-F_{t-1}(x_i).</tex></center>
| + | |
| - | | + | |
| - | Обновление имеет вид
| + | |
| - | | + | |
| - | <center><tex>F_t(x)=F_{t-1}(x)+\eta\alpha_tb_t(x),</tex></center>
| + | |
| - | | + | |
| - | где <tex>\eta</tex> — скорость обучения.
| + | |
| - | | + | |
| - | Малые значения <tex>\eta</tex> обычно требуют большего числа базовых алгоритмов, но позволяют более постепенно строить композицию.
| + | |
| - | | + | |
| - | == Стекинг ==
| + | |
| - | | + | |
| - | '''Стекинг''' (англ. ''stacked generalization'') обучает отдельную модель верхнего уровня объединять предсказания базовых алгоритмов.
| + | |
| - | | + | |
| - | Пусть базовые модели создают признаки
| + | |
| - | | + | |
| - | <center><tex>z_t(x)=b_t(x),\qquad t=1,\ldots,T.</tex></center>
| + | |
| - | | + | |
| - | Модель верхнего уровня получает вектор
| + | |
| - | | + | |
| - | <center><tex>z(x)=(z_1(x),\ldots,z_T(x))</tex></center>
| + | |
| - | | + | |
| - | и строит итоговое предсказание
| + | |
| - | | + | |
| - | <center><tex>a(x)=g(z(x)).</tex></center>
| + | |
| - | | + | |
| - | В классификации входами метамодели обычно служат вероятности классов, а не только готовые метки.
| + | |
| - | | + | |
| - | Д. Вольперт предложил stacked generalization как способ использовать модель следующего уровня для исправления систематических особенностей базовых алгоритмов.<ref name="Wolpert1992">{{статья
| + | |
| - | |автор = Wolpert D. H.
| + | |
| - | |заглавие = Stacked Generalization
| + | |
| - | |ссылка = https://doi.org/10.1016/S0893-6080(05)80023-1
| + | |
| - | |издание = Neural Networks
| + | |
| - | |год = 1992
| + | |
| - | |том = 5
| + | |
| - | |номер = 2
| + | |
| - | |страницы = 241—259
| + | |
| - | |doi = 10.1016/S0893-6080(05)80023-1
| + | |
| - | }}</ref>
| + | |
| - | | + | |
| - | === Предсказания вне обучающей части ===
| + | |
| - | | + | |
| - | Метамодель нельзя обучать на предсказаниях базовой модели для тех же объектов, по которым эта базовая модель обучалась. Такие предсказания могут быть чрезмерно точными и привести к утечке.
| + | |
| - | | + | |
| - | Правильная схема использует out-of-fold-предсказания:
| + | |
| - | | + | |
| - | # обучающая выборка делится на части;
| + | |
| - | # для каждой части базовая модель обучается на остальных частях;
| + | |
| - | # сохранённая часть получает предсказания модели, которая её не видела;
| + | |
| - | # все out-of-fold-предсказания объединяются;
| + | |
| - | # по ним обучается метамодель;
| + | |
| - | # для применения базовые модели переобучаются на всей обучающей выборке.
| + | |
| - | | + | |
| - | Тестовая выборка не должна использоваться для обучения метамодели.
| + | |
| - | | + | |
| - | === Блендинг ===
| + | |
| - | | + | |
| - | Блендинг похож на стекинг, но для обучения верхнего уровня обычно выделяется одна отдельная проверочная часть. Он проще, но уменьшает объём данных, доступный базовым моделям и метамодели.
| + | |
| - | | + | |
| - | == Смесь экспертов ==
| + | |
| - | | + | |
| - | В смеси экспертов веса моделей зависят от объекта:
| + | |
| - | | + | |
| - | <center><tex>a(x)=\sum_{t=1}^{T}g_t(x)b_t(x),</tex></center>
| + | |
| - | | + | |
| - | где
| + | |
| - | | + | |
| - | <center><tex>g_t(x)\geq0,\qquad \sum_{t=1}^{T}g_t(x)=1.</tex></center>
| + | |
| - | | + | |
| - | Функции <tex>g_t(x)</tex> образуют управляющую модель. Она определяет область компетентности каждого эксперта.
| + | |
| - | | + | |
| - | Например, один эксперт может специализироваться на коротких временных рядах, другой — на длинных; один — на дневных снимках, другой — на ночных.
| + | |
| - | | + | |
| - | Адаптивная смесь локальных экспертов была предложена как обучаемая система, в которой отдельные сети осваивают разные подзадачи, а управляющая сеть распределяет объекты между ними.<ref name="Jacobs1991">{{статья
| + | |
| - | |автор = Jacobs R. A., Jordan M. I., Nowlan S. J., Hinton G. E.
| + | |
| - | |заглавие = Adaptive Mixtures of Local Experts
| + | |
| - | |ссылка = https://doi.org/10.1162/neco.1991.3.1.79
| + | |
| - | |издание = Neural Computation
| + | |
| - | |год = 1991
| + | |
| - | |том = 3
| + | |
| - | |номер = 1
| + | |
| - | |страницы = 79—87
| + | |
| - | |doi = 10.1162/neco.1991.3.1.79
| + | |
| - | }}</ref>
| + | |
| - | | + | |
| - | Смесь экспертов отличается от простого взвешенного среднего: веса зависят от входного объекта и также являются частью обучаемой модели.
| + | |
| - | | + | |
| - | == Ансамбли нейронных сетей ==
| + | |
| - | | + | |
| - | Несколько нейронных сетей можно обучить:
| + | |
| - | | + | |
| - | * с разными случайными инициализациями;
| + | |
| - | * на разных подвыборках;
| + | |
| - | * с разными архитектурами;
| + | |
| - | * с разными преобразованиями данных;
| + | |
| - | * с разными функциями потерь или гиперпараметрами.
| + | |
| - | | + | |
| - | Их вероятности или числовые предсказания затем усредняются.
| + | |
| - | | + | |
| - | Глубокие ансамбли применяются не только для повышения точности, но и для оценивания неопределённости. Разброс предсказаний между сетями может указывать на области, где модели не согласны. Работа Лакшминараянана, Притцеля и Бланделла показала, что ансамбль независимо обученных нейронных сетей может давать полезные оценки предсказательной неопределённости.<ref name="DeepEnsembles2017">{{статья
| + | |
| - | |автор = Lakshminarayanan B., Pritzel A., Blundell C.
| + | |
| - | |заглавие = Simple and Scalable Predictive Uncertainty Estimation Using Deep Ensembles
| + | |
| - | |ссылка = https://proceedings.neurips.cc/paper/2017/hash/9ef2ed4b7fd2c810847ffa5fa85bce38-Abstract.html
| + | |
| - | |издание = Advances in Neural Information Processing Systems
| + | |
| - | |год = 2017
| + | |
| - | |том = 30
| + | |
| - | }}</ref>
| + | |
| - | | + | |
| - | Высокая стоимость является главным ограничением: необходимо обучать, хранить и запускать несколько больших моделей.
| + | |
| - | | + | |
| - | == Однородные и неоднородные композиции ==
| + | |
| - | | + | |
| - | '''Однородная композиция''' объединяет алгоритмы одного типа, например деревья в случайном лесе.
| + | |
| - | | + | |
| - | '''Неоднородная композиция''' объединяет разные семейства моделей, например:
| + | |
| - | | + | |
| - | * логистическую регрессию;
| + | |
| - | * градиентный бустинг;
| + | |
| - | * нейронную сеть;
| + | |
| - | * метод ближайших соседей.
| + | |
| - | | + | |
| - | Однородные композиции удобно создавать с помощью случайности в данных, признаках или параметрах. Неоднородные модели могут обладать большей разнородностью ошибок, но их предсказания труднее согласовать.
| + | |
| - | | + | |
| - | == Разнообразие базовых алгоритмов ==
| + | |
| - | | + | |
| - | Композиции полезны не из-за количества моделей само по себе, а из-за сочетания качества и разнообразия.
| + | |
| - | | + | |
| - | Разнообразие создаётся с помощью:
| + | |
| - | | + | |
| - | * различных обучающих подвыборок;
| + | |
| - | * различных наборов признаков;
| + | |
| - | * случайной инициализации;
| + | |
| - | * разных архитектур;
| + | |
| - | * разных функций потерь;
| + | |
| - | * разных параметров регуляризации;
| + | |
| - | * разных преобразований данных;
| + | |
| - | * последовательного обучения на ошибках;
| + | |
| - | * специализации по областям пространства объектов.
| + | |
| - | | + | |
| - | Слишком слабые модели не становятся хорошей композицией только благодаря разнообразию. И наоборот, несколько очень точных, но почти одинаковых моделей могут давать небольшой выигрыш.
| + | |
| - | | + | |
| - | == Смещение и разброс ==
| + | |
| - | | + | |
| - | Ошибка модели часто рассматривается через компромисс между смещением и разбросом.
| + | |
| - | | + | |
| - | Бэггинг главным образом уменьшает разброс нестабильного алгоритма. Бустинг может одновременно уменьшать смещение и строить более сложную границу, но при шуме и чрезмерной сложности способен переобучаться.
| + | |
| - | | + | |
| - | Композиция не отменяет смещение данных, ошибочную постановку задачи и неверные метки. Если все модели обучаются на одной систематически искажённой выборке, усреднение не устраняет это искажение.
| + | |
| - | | + | |
| - | == Калибровка вероятностей ==
| + | |
| - | | + | |
| - | Средняя вероятность ансамбля нередко оказывается стабильнее вероятности одной модели, но калибровка не гарантирована.
| + | |
| - | | + | |
| - | Для проверки применяются:
| + | |
| - | | + | |
| - | * калибровочные кривые;
| + | |
| - | * логарифмическая функция потерь;
| + | |
| - | * мера Брайера;
| + | |
| - | * показатели ожидаемой ошибки калибровки.
| + | |
| - | | + | |
| - | Калибровку выполняют на данных, не использованных при обучении базовых моделей. Если одна и та же проверочная выборка многократно применяется для выбора ансамбля и калибровки, оценка может стать оптимистичной.
| + | |
| - | | + | |
| - | == Выбор весов ==
| + | |
| - | | + | |
| - | Веса базовых алгоритмов можно задавать:
| + | |
| - | | + | |
| - | * одинаковыми;
| + | |
| - | * пропорционально качеству;
| + | |
| - | * оптимизацией функции потерь;
| + | |
| - | * с ограничением неотрицательности;
| + | |
| - | * с регуляризацией;
| + | |
| - | * с зависимостью от объекта.
| + | |
| - | | + | |
| - | Для регрессии веса могут подбираться по задаче
| + | |
| - | | + | |
| - | <center><tex>\min_{\alpha}\sum_{i=1}^{\ell}L\left(y_i,\sum_{t=1}^{T}\alpha_tb_t(x_i)\right).</tex></center>
| + | |
| - | | + | |
| - | Чтобы уменьшить риск нестабильных компенсаций, можно потребовать
| + | |
| - | | + | |
| - | <center><tex>\alpha_t\geq0,\qquad \sum_{t=1}^{T}\alpha_t=1.</tex></center>
| + | |
| - | | + | |
| - | Отрицательные веса допустимы в некоторых линейных композициях, но усложняют интерпретацию и могут давать неустойчивые предсказания.
| + | |
| - | | + | |
| - | == Выбор порога ==
| + | |
| - | | + | |
| - | В бинарной классификации композиция может выдавать вероятность положительного класса. Решение принимается по порогу <tex>\tau</tex>:
| + | |
| - | | + | |
| - | <center><tex>a(x)=[\widehat{P}(y=1\mid x)\geq\tau].</tex></center>
| + | |
| - | | + | |
| - | Порог следует выбирать по прикладной цене ошибок, а не автоматически считать равным 0,5. Например, в медицинском скрининге пропуск заболевания может быть дороже ложной тревоги.
| + | |
| - | | + | |
| - | Порог подбирается на проверочных данных после построения композиции.
| + | |
| - | | + | |
| - | == Корректный эксперимент ==
| + | |
| - | | + | |
| - | Для честной проверки композиции необходимо:
| + | |
| - | | + | |
| - | * использовать одинаковые разбиения для всех базовых моделей;
| + | |
| - | * отделять обучение базовых моделей от обучения правила объединения;
| + | |
| - | * строить out-of-fold-признаки для стекинга;
| + | |
| - | * не использовать тестовые ответы при выборе состава ансамбля;
| + | |
| - | * сравнивать с лучшей одиночной моделью;
| + | |
| - | * учитывать время, память и задержку;
| + | |
| - | * повторять эксперимент при нескольких случайных разбиениях;
| + | |
| - | * проверять качество на значимых подгруппах.
| + | |
| - | | + | |
| - | Особенно важно сравнение с простой моделью. Если композиция улучшает показатель лишь незначительно, но многократно увеличивает стоимость, её применение может быть неоправданным.
| + | |
| - | | + | |
| - | == Пример корректного стекинга ==
| + | |
| - | | + | |
| - | Пусть имеются три базовые модели и пятичастный скользящий контроль.
| + | |
| - | | + | |
| - | # Для каждой из пяти частей модели обучаются на остальных четырёх.
| + | |
| - | # На отложенной части сохраняются три предсказания.
| + | |
| - | # После пяти проходов каждый обучающий объект имеет три out-of-fold-признака.
| + | |
| - | # По этим признакам обучается метамодель.
| + | |
| - | # Каждая базовая модель переобучается на всей обучающей выборке.
| + | |
| - | # Для тестового объекта вычисляются три базовых предсказания.
| + | |
| - | # Метамодель объединяет их в итоговый ответ.
| + | |
| - | | + | |
| - | Если вместо out-of-fold-признаков использовать предсказания на обучающих объектах, сложная базовая модель может почти идеально запомнить выборку, и метамодель получит нереалистичные входы.
| + | |
| - | | + | |
| - | == Типичные ошибки ==
| + | |
| - | | + | |
| - | === Простое добавление большого числа похожих моделей ===
| + | |
| - | | + | |
| - | Если модели почти одинаковы, выигрыш быстро насыщается.
| + | |
| - | | + | |
| - | === Выбор весов по тестовой выборке ===
| + | |
| - | | + | |
| - | Тестовая выборка становится частью обучения, а итоговая оценка завышается.
| + | |
| - | | + | |
| - | === Стекинг по внутривыборочным предсказаниям ===
| + | |
| - | | + | |
| - | Метамодель учится на слишком оптимистичных результатах и плохо переносится на новые данные.
| + | |
| - | | + | |
| - | === Усреднение несопоставимых выходов ===
| + | |
| - | | + | |
| - | Одна модель может выдавать вероятности, другая — необработанные оценки. Перед объединением необходимо привести выходы к согласованному смыслу.
| + | |
| - | | + | |
| - | === Разный порядок классов ===
| + | |
| - | | + | |
| - | В программных реализациях столбцы вероятностей могут соответствовать классам в разном порядке. Ошибка приводит к смешиванию вероятностей разных классов.
| + | |
| - | | + | |
| - | === Отсутствие базового сравнения ===
| + | |
| - | | + | |
| - | Без оценки отдельных моделей неизвестно, принесла ли композиция пользу.
| + | |
| - | | + | |
| - | === Игнорирование стоимости ===
| + | |
| - | | + | |
| - | Композиция из десятков моделей может быть непригодна для системы реального времени.
| + | |
| - | | + | |
| - | === Усреднение моделей с общей систематической ошибкой ===
| + | |
| - | | + | |
| - | Ансамбль не исправит проблему, если все модели используют один ошибочный признак или одинаково смещённые данные.
| + | |
| - | | + | |
| - | == Преимущества ==
| + | |
| - | | + | |
| - | Композиции алгоритмов позволяют:
| + | |
| - | | + | |
| - | * уменьшать разброс предсказаний;
| + | |
| - | * использовать сильные стороны разных моделей;
| + | |
| - | * повышать устойчивость к случайным изменениям выборки;
| + | |
| - | * строить сложные зависимости из простых компонентов;
| + | |
| - | * оценивать неопределённость по расхождению моделей;
| + | |
| - | * разделять пространство объектов между экспертами;
| + | |
| - | * получать более высокое качество без разработки одного чрезвычайно сложного алгоритма.
| + | |
| - | | + | |
| - | Некоторые композиции хорошо распараллеливаются. Например, деревья бэггинга или независимые нейронные сети можно обучать одновременно.
| + | |
| - | | + | |
| - | == Ограничения ==
| + | |
| - | | + | |
| - | === Вычислительная стоимость ===
| + | |
| - | | + | |
| - | Несколько моделей требуют больше времени обучения, памяти и ресурсов при предсказании.
| + | |
| - | | + | |
| - | === Сложность интерпретации ===
| + | |
| - | | + | |
| - | Отдельное дерево или линейную модель объяснить проще, чем ансамбль из сотен компонентов. Методы интерпретации должны учитывать итоговую композицию, а не один произвольный базовый алгоритм.
| + | |
| - | | + | |
| - | === Сложность воспроизводимости ===
| + | |
| - | | + | |
| - | Композиция может включать множество этапов, разбиений, случайных начальных значений и версий библиотек. Все эти сведения необходимо сохранять.
| + | |
| - | | + | |
| - | === Уязвимость к утечке ===
| + | |
| - | | + | |
| - | Стекинг, подбор весов, калибровка и выбор порога создают дополнительные уровни, на которых проверочные или тестовые данные могут случайно попасть в обучение.
| + | |
| - | | + | |
| - | === Общая систематическая ошибка ===
| + | |
| - | | + | |
| - | Если все модели обучены на одних смещённых данных, ансамбль может уверенно воспроизводить это смещение.
| + | |
| - | | + | |
| - | === Сложность обновления ===
| + | |
| - | | + | |
| - | При поступлении новых данных может потребоваться переобучать несколько моделей и правило объединения. Необходимо контролировать совместимость их версий.
| + | |
| - | | + | |
| - | == Практический выбор метода ==
| + | |
| - | | + | |
| - | {| class="wikitable"
| + | |
| - | ! Условия
| + | |
| - | ! Возможный подход
| + | |
| - | ! Причина
| + | |
| - | |-
| + | |
| - | | Нестабильная модель и достаточный вычислительный бюджет
| + | |
| - | | Бэггинг
| + | |
| - | | Уменьшение разброса
| + | |
| - | |-
| + | |
| - | | Табличные данные и деревья
| + | |
| - | | Случайный лес или градиентный бустинг
| + | |
| - | | Хорошее моделирование нелинейностей и взаимодействий
| + | |
| - | |-
| + | |
| - | | Несколько сильных разных моделей
| + | |
| - | | Усреднение или стекинг
| + | |
| - | | Использование различий в ошибках
| + | |
| - | |-
| + | |
| - | | Разные модели полезны для разных объектов
| + | |
| - | | Смесь экспертов
| + | |
| - | | Зависимые от объекта веса
| + | |
| - | |-
| + | |
| - | | Большие нейронные сети
| + | |
| - | | Небольшой глубокий ансамбль
| + | |
| - | | Точность и оценка неопределённости
| + | |
| - | |-
| + | |
| - | | Жёсткое ограничение задержки
| + | |
| - | | Одна модель или дистилляция композиции
| + | |
| - | | Снижение стоимости применения
| + | |
| - | |}
| + | |
| - | | + | |
| - | Таблица задаёт отправные варианты. Окончательный выбор должен определяться экспериментом и ограничениями системы.
| + | |
| - | | + | |
| - | == Сжатие композиции ==
| + | |
| - | | + | |
| - | Большую композицию иногда заменяют одной более компактной моделью. Такой процесс называют дистилляцией знаний.
| + | |
| - | | + | |
| - | Модель-ученик обучается воспроизводить ответы композиции, включая вероятности классов или числовые оценки. Это позволяет уменьшить задержку и память, но ученик может потерять часть качества и неопределённости ансамбля.
| + | |
| - | | + | |
| - | Сжатие особенно полезно, когда большая композиция применяется при подготовке модели, а конечное устройство имеет ограниченные ресурсы.
| + | |
| - | | + | |
| - | == Применения ==
| + | |
| - | | + | |
| - | Композиции алгоритмов применяются:
| + | |
| - | | + | |
| - | * в кредитном скоринге;
| + | |
| - | * в обнаружении мошенничества;
| + | |
| - | * в медицинской диагностике;
| + | |
| - | * в рекомендательных системах;
| + | |
| - | * в прогнозировании спроса;
| + | |
| - | * в распознавании изображений;
| + | |
| - | * в обработке текста и речи;
| + | |
| - | * в анализе временных рядов;
| + | |
| - | * в оценивании рисков;
| + | |
| - | * в ранжировании и поиске;
| + | |
| - | * в соревнованиях по анализу данных;
| + | |
| - | * в системах, где важна оценка неопределённости.
| + | |
| - | | + | |
| - | В прикладных системах композиция часто объединяет модели, обученные на разных представлениях одного объекта: тексте, изображении, истории действий и табличных признаках.
| + | |
| - | | + | |
| - | == История ==
| + | |
| - | | + | |
| - | Объединение нескольких правил принятия решений появилось задолго до современного машинного обучения. В статистике использовались усреднение оценок и объединение прогнозов, а в распознавании образов — голосование классификаторов.
| + | |
| - | | + | |
| - | В 1991 году была описана адаптивная смесь локальных экспертов с обучаемым управляющим механизмом.<ref name="Jacobs1991"/> В 1992 году Д. Вольперт предложил stacked generalization.<ref name="Wolpert1992"/>
| + | |
| - | | + | |
| - | В 1996 году Л. Брейман представил бэггинг как построение и агрегирование моделей по бутстрэп-выборкам.<ref name="BreimanBagging1996"/> В 1997 году Й. Фройнд и Р. Шапир опубликовали алгоритм AdaBoost и его теоретическое обоснование.<ref name="AdaBoost1997"/>
| + | |
| - | | + | |
| - | В 2001 году были опубликованы работы о случайных лесах и градиентном бустинге, ставших основными ансамблевыми методами для табличных данных.<ref name="BreimanRF2001"/><ref name="FriedmanGB2001"/>
| + | |
| - | | + | |
| - | В дальнейшем композиции распространились на глубокие нейронные сети, оценивание неопределённости, мультимодальные модели и крупные системы машинного обучения.<ref name="DeepEnsembles2017"/>
| + | |
| - | | + | |
| - | == См. также ==
| + | |
| - | | + | |
| - | * [[Ансамбль алгоритмов]]
| + | |
| - | * [[Бэггинг]]
| + | |
| - | * [[Бустинг]]
| + | |
| - | * [[Градиентный бустинг]]
| + | |
| - | * [[Случайный лес]]
| + | |
| - | * [[Стекинг]]
| + | |
| - | * [[Смесь экспертов]]
| + | |
| - | * [[Решающее дерево]]
| + | |
| - | * [[Классификация]]
| + | |
| - | * [[Регрессия]]
| + | |
| - | * [[Скользящий контроль]]
| + | |
| - | * [[Калибровка вероятностей]]
| + | |
| - | * [[Переобучение]]
| + | |
| - | * [[Дистилляция знаний]]
| + | |
| - | * [[Жадные алгоритмы в машинном обучении]]
| + | |
| - | | + | |
| - | == Примечания ==
| + | |
| - | | + | |
| - | <references/>
| + | |
| - | | + | |
| - | == Литература ==
| + | |
| - | | + | |
| - | * {{статья
| + | |
| - | |автор = Jacobs R. A., Jordan M. I., Nowlan S. J., Hinton G. E.
| + | |
| - | |заглавие = Adaptive Mixtures of Local Experts
| + | |
| - | |ссылка = https://doi.org/10.1162/neco.1991.3.1.79
| + | |
| - | |издание = Neural Computation
| + | |
| - | |год = 1991
| + | |
| - | |том = 3
| + | |
| - | |номер = 1
| + | |
| - | |страницы = 79—87
| + | |
| - | |doi = 10.1162/neco.1991.3.1.79
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор = Wolpert D. H.
| + | |
| - | |заглавие = Stacked Generalization
| + | |
| - | |ссылка = https://doi.org/10.1016/S0893-6080(05)80023-1
| + | |
| - | |издание = Neural Networks
| + | |
| - | |год = 1992
| + | |
| - | |том = 5
| + | |
| - | |номер = 2
| + | |
| - | |страницы = 241—259
| + | |
| - | |doi = 10.1016/S0893-6080(05)80023-1
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор = Breiman L.
| + | |
| - | |заглавие = Bagging Predictors
| + | |
| - | |ссылка = https://doi.org/10.1023/A:1018054314350
| + | |
| - | |издание = Machine Learning
| + | |
| - | |год = 1996
| + | |
| - | |том = 24
| + | |
| - | |номер = 2
| + | |
| - | |страницы = 123—140
| + | |
| - | |doi = 10.1023/A:1018054314350
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор = Freund Y., Schapire R. E.
| + | |
| - | |заглавие = A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting
| + | |
| - | |ссылка = https://doi.org/10.1006/jcss.1997.1504
| + | |
| - | |издание = Journal of Computer and System Sciences
| + | |
| - | |год = 1997
| + | |
| - | |том = 55
| + | |
| - | |номер = 1
| + | |
| - | |страницы = 119—139
| + | |
| - | |doi = 10.1006/jcss.1997.1504
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор = Breiman L.
| + | |
| - | |заглавие = Random Forests
| + | |
| - | |ссылка = https://doi.org/10.1023/A:1010933404324
| + | |
| - | |издание = Machine Learning
| + | |
| - | |год = 2001
| + | |
| - | |том = 45
| + | |
| - | |номер = 1
| + | |
| - | |страницы = 5—32
| + | |
| - | |doi = 10.1023/A:1010933404324
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор = Friedman J. H.
| + | |
| - | |заглавие = Greedy Function Approximation: A Gradient Boosting Machine
| + | |
| - | |ссылка = https://doi.org/10.1214/aos/1013203451
| + | |
| - | |издание = The Annals of Statistics
| + | |
| - | |год = 2001
| + | |
| - | |том = 29
| + | |
| - | |номер = 5
| + | |
| - | |страницы = 1189—1232
| + | |
| - | |doi = 10.1214/aos/1013203451
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор = Lakshminarayanan B., Pritzel A., Blundell C.
| + | |
| - | |заглавие = Simple and Scalable Predictive Uncertainty Estimation Using Deep Ensembles
| + | |
| - | |ссылка = https://proceedings.neurips.cc/paper/2017/hash/9ef2ed4b7fd2c810847ffa5fa85bce38-Abstract.html
| + | |
| - | |издание = Advances in Neural Information Processing Systems
| + | |
| - | |год = 2017
| + | |
| - | |том = 30
| + | |
| - | }}
| + | |
| - | | + | |
| - | [[Категория:Машинное обучение]]
| + | |
| - | [[Категория:Композиции алгоритмов]]
| + | |
| - | [[Категория:Классификация]]
| + | |
| - | [[Категория:Регрессия]]
| + | |
| - | [[Категория:Энциклопедия анализа данных]]
| + | |