Композиция алгоритмов

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{well|Статья написана с использованием LLM '''ChatGPT, GPT-5.6 Thinking''' и проверена участником ~~~~}} {{TOCright}} '''Компози...)
(Перенаправление на Композиционные методы)
 
Строка 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
+
-
}}
+
-
 
+
-
[[Категория:Машинное обучение]]
+
-
[[Категория:Композиции алгоритмов]]
+
-
[[Категория:Классификация]]
+
-
[[Категория:Регрессия]]
+
-
[[Категория:Энциклопедия анализа данных]]
+

Текущая версия

  1. REDIRECT Композиционные методы
Личные инструменты