Бустинг: AdaBoost

## Бустинг

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

## Процедура последовательного построения линейного ансамбля (Forward stagewise additive modeling (FSAM))

Рассматривается задача классификации или регрессии. Пусть

h
i

(
x
)
,
# i

0
,
M

¯

{\displaystyle h\_i(x), i = \overline{0, M}}

 — базовые алгоритмы,

c
i

∈

R

,
# i

1
,
M

¯

{\displaystyle c\_i \in \mathbb{R}, i =
 \overline{1, M}}

 — числовые коэффициенты. Тогда

F
(
x
# )

h
0

(
x
)

c
1

⋅

h
1

(
x
)
⋯

c
M

⋅

h
M

(
x
)

{\displaystyle F(x) = h\_0(x)
 + c\_1\cdot h\_1(x) + \dots + c\_M\cdot h\_M(x)}

 — линейный ансамбль. Для задачи регрессии

F
(
x
)

{\displaystyle F(x)}

 представляет собой значение целевой переменной. Для задачи классификации

F
(
x
)

{\displaystyle F(x)}

 представляет собой уверенность в принадлежности объекта к определённому классу.

Совместная оптимизация

h
i

(
x
)
,
# i

0
,
M

¯

{\displaystyle h\_i(x), i = \overline{0, M}}

,

c
i

,
# i

1
,
M

¯

{\displaystyle c\_i, i = \overline{1, M}}

 затратна по времени для больших

M

{\displaystyle M}

. Основная идея FSAM состоит в жадной оптимизации

h
0

(
x
)
,
(

c
i

,

h
i

(
x
)
)
,
# i

1
,
M

¯

{\displaystyle h\_0(x), (c\_i, h\_i(x)), i = \overline{1, M}}

. После жадной процедуры можно дополнительно настроить

c
i

,
# i

1
,
M

¯

{\displaystyle c\_i, i = \overline{1, M}}

, решив задачу линейной регрессии/классификации с признаками

h
i

(
x
)
,
# i

0
,
M

¯

{\displaystyle h\_i(x), i = \overline{0, M}}

.

### Алгоритм жадной оптимизации

* **Вход:** обучающая выборка

(

x
i

,

y
i

)
,
# i

1
,
N

¯

{\displaystyle (x\_i, y\_i), i = \overline{1, N}}

; функция потерь

L

(
h
(
x
)
,
y
)

{\displaystyle \mathfrak{L}(h(x), y)}

; общий вид базового алгоритма

h
(
x
# )
h
(
x

γ
)
,
γ

{\displaystyle h(x) = h(x|\gamma), \gamma}

 — параметр;

M

{\displaystyle M}

 — число итераций
* Начальное приближение

f
0

(
x
# )
arg
⁡

min

h

∑

# i
1

N

L

(
h
(

x
i

)
,

y
i

)

{\displaystyle f\_0(x) = \arg\min\limits\_{h}\sum\limits\_{i = 1}^{N}\mathfrak{L}(h(x\_i), y\_i)}
* Для

# m
1
,
2
,
…
,
M

{\displaystyle m = 1, 2, \dots, M}

:
	+ Поиск следующего лучшего алгоритма

	(

	c
	m

	,

	h
	m

	)
	=
	arg
	⁡

	min

	h
	,
	c

	∑

	i
	=
	1

	N

	L

	(

	f

	m
	−
	1

	(

	x
	i

	)
	c
	⋅
	h
	(

	x
	i

	)
	,

	y
	i

	)

	{\displaystyle (c\_m, h\_m) = \arg\min\limits\_{h, c}\sum\limits\_{i = 1}^{N}\mathfrak{L}(f\_{m - 1}(x\_i) + c\cdot h(x\_i), y\_i)}
	+ Присвоение

	f
	m

	(
	x
	)
	=

	f

	m
	−
	1

	(
	x
	)

	c
	m

	⋅

	h
	m

	(
	x
	)

	{\displaystyle f\_m(x) = f\_{m - 1}(x) + c\_m\cdot h\_m(x)}
* **Выход:** приближение

f
M

(
x
# )

h
0

(
x
)

∑

# m
1

M

c
m

⋅

h
m

(
x
)

{\displaystyle f\_M(x) = h\_0(x) + \sum\limits\_{m = 1}^{M}c\_m\cdot h\_m(x)}

Комментарии:

* Значение

M

{\displaystyle M}

 следует подбирать по валидации.
* Начальное приближение не обязательно решать в пространстве функций

h
(
x
)

{\displaystyle h(x)}

, можно

f
0

=
arg
⁡

min

β
∈

R

∑

# i
1

N

L

(
β
,

y
i

)

{\displaystyle f\_0 = \arg\min\limits\_{\beta \in \mathbb{R}}\sum\limits\_{i = 1}^{N}\mathfrak{L}(\beta, y\_i)}

 или

f
0

(
x
)
≡
0

{\displaystyle f\_0(x) \equiv 0}

. Ожидается исправление ошибок на последующих итерациях.
* По схожим причинам не требуется высокая точность при нахождении

f
m

(
x
)

{\displaystyle f\_m(x)}

.
* Для некоторых функций потерь FSAM имеет аналитическое решение.
* В общем случае используется схема градиентного бустинга.

## AdaBoost

Рассмотрим задачу бинарной классификации с метками

y
∈
{
−
1
,
1
}

{\displaystyle y \in \{-1, +1\}}

. Общий вид базового алгоритма

h
(
x
# )
h
(
x

γ
)
,
h
(
x
)
∈
{
−
1
,
1
}

{\displaystyle h(x) = h(x|\gamma), h(x) \in \{-1, +1\}}

, классификатор

y
^

(
x
# )
s
i
g
n
{

h
0

(
x
)

∑

# i
1

N

c
i

⋅

h
i

(
x
)
)
}

{\displaystyle \hat{y}(x) = sign\{h\_0(x) + \sum\limits\_{i = 1}^{N}c\_i\cdot h\_i(x))\}}

, функция потерь

L

(
h
(
x
)
,
y
# )

e

−
y
⋅
h
(
x
)

{\displaystyle \mathfrak{L}(h(x), y) = e^{-y\cdot h(x)}}

. Для построения ансамбля AdaBoost используем модификацию FSAM.

### Алгоритм (дискретная версия)

* **Вход:** обучающая выборка

(

x
i

,

y
i

)
,
# i

1
,
N

¯

{\displaystyle (x\_i, y\_i), i = \overline{1, N}}

; базовый алгоритм

h
(
x
)
∈
{
−
1
,
1
}

{\displaystyle h(x) \in \{-1, +1\}}

, обучаемый на взвешенных выборках;

M

{\displaystyle M}

 — число итераций
* Инициализация весов

w
i

=

1
N

,
# i

1
,
N

¯

{\displaystyle w\_i = \frac{1}{N}, i = \overline{1, N}}
* Для

# m
1
,
2
,
…
,
M

{\displaystyle m = 1, 2, \dots, M}

:
	+ Обучить

	h
	m

	(
	x
	)

	{\displaystyle h^m(x)}

	 на обучающей выборке, используя веса

	w
	i

	,
	i
	=

	1
	,
	N

	¯

	{\displaystyle w\_i, i = \overline{1, N}}
	+ Вычислить взвешенную ошибку классификации

	E
	m

	=

	∑

	i
	=
	1

	N

	w
	i

	⋅

	I

	[

	h
	m

	(

	x
	i

	)
	≠

	y
	i

	]

	∑

	i
	=
	1

	N

	w
	i

	{\displaystyle E\_m = \frac{\sum\limits\_{i = 1}^{N}w\_i\cdot\mathbb{I}[h^m(x\_i)\neq y\_i]}{\sum\limits\_{i = 1}^{N}w\_i}}
	+ Если

	E
	m

	>
	0.5

	{\displaystyle E\_m > 0.5}

	 или

	E
	m

	=
	0

	{\displaystyle E\_m = 0}

	: остановить процедуру
	+ Вычислить

	c
	m

	=

	1
	2

	⋅
	ln
	⁡

	1
	−

	E
	m

	E
	m

	{\displaystyle c\_m = \frac{1}{2}\cdot\ln\frac{1 - E\_m}{E\_m}}
	+ Увеличить все веса, где базовый алгоритм ошибся:

	w
	i

	:=

	w
	i

	⋅

	e

	2
	⋅

	c
	m

	,
	i
	∈
	{
	i
	:

	h
	m

	(

	x
	i

	)
	≠

	y
	i

	}

	{\displaystyle w\_i := w\_i\cdot e^{2\cdot c\_m}, i \in \{i: h^m(x\_i) \neq y\_i\}}
* **Выход:** результирующий ансамбль

F
(
x
# )
s
i
g
n
{

∑

# m
1

M

c
m

⋅

h
m

(
x
)
}

{\displaystyle F(x) = sign\{\sum\limits\_{m = 1}^{M}c\_m\cdot h^m(x)\}}

Детали нахождения (

(

c
m

,

h
m

)

{\displaystyle (c\_m, h^m)}

## ) в дискретном AdaBoost

Начальное приближение

f
0

(
x
)
≡
0

{\displaystyle f\_0(x) \equiv 0}

Рассмотрим

m

{\displaystyle m}

-ую итерацию процедуры FSAM:

(

c
m

,

h
m

# )
arg
⁡

min

c
m

,

h
m

∑

# i
1

N

L

(

f

m
−
1

(

x
i

)

c
m

⋅

h
m

(

x
i

)
,

y
i

# )

{\displaystyle (c\_m, h^m) = \arg\min\limits\_{c\_m, h^m}\sum\limits\_{i = 1}^{N}\mathfrak{L}(f\_{m - 1}(x\_i) + c\_m\cdot h^m(x\_i), y\_i)=}

=
arg
⁡

min

c
m

,

h
m

∑

# i
1

N

e

−

y
i

⋅

f

m
−
1

(

x
i

)

⋅

e

−

y
i

⋅

c
m

⋅

h
m

(

x
i

)

=

{\displaystyle =\arg\min\limits\_{c\_m, h^m}\sum\limits\_{i = 1}^{N}e^{-y\_i\cdot f\_{m - 1}(x\_i)}\cdot e^{-y\_i\cdot c\_m\cdot h^m(x\_i)}=}

=
arg
⁡

min

c
m

,

h
m

∑

# i
1

N

w
i
m

⋅

e

−

c
m

⋅

y
i

⋅

h
m

(

x
i

)

,

w
i
m

=

e

−

y
i

⋅

f

m
−
1

(

x
i

)

{\displaystyle =\arg\min\limits\_{c\_m, h^m}\sum\limits\_{i = 1}^{N}w\_i^m\cdot e^{-c\_m\cdot y\_i\cdot h^m(x\_i)}, w\_i^m = e^{-y\_i\cdot f\_{m - 1}(x\_i)}}

∑

# i
1

N

w
i
m

⋅

e

−

c
m

⋅

y
i

⋅

h
m

(

x
i

)

=

∑

i
:

h
m

(

x
i

# )

y
i

w
i
m

⋅

e

−

c
m

∑

i
:

h
m

(

x
i

)
≠

y
i

w
i
m

⋅

e

c
m

=

{\displaystyle \sum\limits\_{i = 1}^{N}w\_i^m\cdot e^{-c\_m\cdot y\_i\cdot h^m(x\_i)} = \sum\limits\_{i: h^m(x\_i) = y\_i}w\_i^m\cdot e^{-c\_m} + \sum\limits\_{i: h^m(x\_i) \neq y\_i}w\_i^m\cdot e^{c\_m}=}

=

e

−

c
m

⋅

∑

i
:

h
m

(

x
i

# )

y
i

w
i
m

e

c
m

⋅

∑

i
:

h
m

(

x
i

)
≠

y
i

w
i
m

=

{\displaystyle =e^{-c\_m}\cdot\sum\limits\_{i: h^m(x\_i) = y\_i}w\_i^m + e^{c\_m}\cdot\sum\limits\_{i: h^m(x\_i) \neq y\_i}w\_i^m=}

=

e

c
m

⋅

∑

i
:

h
m

(

x
i

)
≠

y
i

w
i
m

e

−

c
m

⋅

∑

# i
1

N

w
i
m

−

e

−

c
m

⋅

∑

i
:

h
m

(

x
i

)
≠

y
i

w
i
m

=

{\displaystyle =e^{c\_m}\cdot\sum\limits\_{i: h^m(x\_i) \neq y\_i}w\_i^m + e^{-c\_m}\cdot\sum\limits\_{i = 1}^{N}w\_i^m - e^{-c\_m}\cdot\sum\limits\_{i: h^m(x\_i) \neq y\_i}w\_i^m=}

=

e

−

c
m

⋅

∑

# i
1

N

w
i
m

(

e

c
m

−

e

−

c
m

)
⋅

∑

i
:

h
m

(

x
i

)
≠

y
i

w
i
m

{\displaystyle =e^{-c\_m}\cdot\sum\limits\_{i = 1}^{N}w\_i^m + (e^{c\_m} - e^{-c\_m})\cdot\sum\limits\_{i: h^m(x\_i) \neq y\_i}w\_i^m}

Так как в алгоритме

c
m

≥
0

{\displaystyle c\_m \geq 0}

, то

h
m

(
x
)

{\displaystyle h\_m(x)}

 следует искать следующим образом (первое слагаемое условно является константой, тогда уменьшаем второе неотрицательное слагаемое):

h
m

(

x
i

# )
arg
⁡

min

h

∑

# i
1

N

w

i

m

⋅

I

[
h
(

x
i

)
≠

y
i

]

{\displaystyle h\_m(x\_i) = \arg\min\limits\_{h}\sum\limits\_{i = 1}^{N}w\_{i}^{m}\cdot \mathbb{I}[h(x\_i) \neq y\_i]}

## Дифференцирование оптимизируемого функционала

Обозначим

J
(

c
m

# i
1

N

w

i

m

e

−

c
m

⋅

y
i

⋅

h
m

(

x
i

)

{\displaystyle J(c\_m) = \sum\limits\_{i = 1}^{N}w\_{i}^{m}e^{-c\_m\cdot y\_i\cdot h^m(x\_i)}}

.

J
(

c
m

)

{\displaystyle J(c\_m)}

 — выпуклый, значит, необходимое условие экстремума является ещё и достаточным:

∂
J
(

c
m

)

∂

c
m

=
−

∑

# i
1

N

w

i

m

⋅

e

−

c
m

⋅

y
i

⋅

h
m

(

x
i

)

⋅

y
i

⋅

h
m

(

x
i

# )
0

{\displaystyle \frac{\partial J(c\_m)}{\partial c\_m} = -\sum\limits\_{i = 1}^{N}w\_{i}^{m}\cdot e^{-c\_m\cdot y\_i\cdot h^m(x\_i)}\cdot y\_i\cdot h^m(x\_i) = 0}

−

∑

i
:

h
m

(

x
i

# )

y
i

w

i

m

⋅

e

−

c
m

∑

i
:

h
m

(

x
i

)
≠

y
i

w

i

m

⋅

e

c
m

=
0

{\displaystyle -\sum\limits\_{i: h^m(x\_i) = y\_i}w\_{i}^{m}\cdot e^{-c\_m} + \sum\limits\_{i: h^m(x\_i) \neq y\_i}w\_{i}^{m}\cdot e^{c\_m} = 0}

e

2
⋅

c
m

=

∑

i
:

h
m

(

x
i

# )

y
i

w

i

m

∑

i
:

h
m

(

x
i

)
≠

y
i

w

i

m

{\displaystyle e^{2\cdot c\_m} = \frac{\sum\limits\_{i: h^m(x\_i) = y\_i}w\_{i}^{m}}{\sum\limits\_{i: h^m(x\_i) \neq y\_i}w\_{i}^{m}}}

c
m

=

1
2

⋅
ln
⁡

(

∑

i
:

h
m

(

x
i

# )

y
i

w

i

m

)
⋅
(

∑

# j
1

N

w

j

m

)

(

∑

i
:

h
m

(

x
i

)
≠

y
i

w

i

m

)
⋅
(

∑

# j
1

N

w

j

m

)

=

1
2

⋅
ln
⁡

1
−

E
m

E
m

,

E
m

:=

∑

i
:

h
m

(

x
i

)
≠

y
i

w

i

m

∑

# i
1

N

w

i

m

{\displaystyle c\_m = \frac{1}{2}\cdot\ln\frac{(\sum\limits\_{i: h^m(x\_i) = y\_i}w\_{i}^{m})\cdot (\sum\limits\_{j = 1}^{N}w\_{j}^{m})}{(\sum\limits\_{i: h^m(x\_i) \neq y\_i}w\_{i}^{m})\cdot (\sum\limits\_{j = 1}^{N}w\_{j}^{m})} = \frac{1}{2}\cdot\ln\frac{1 - E\_m}{E\_m}, E\_m := \frac{\sum\limits\_{i: h^m(x\_i) \neq y\_i}w\_{i}^{m}}{\sum\limits\_{i = 1}^{N}w\_{i}^{m}}}

Комментарии к вычислению весов (

w

i

m

{\displaystyle w\_{i}^{m}}

## )

w

i

m
1

=

d
e
f

e

−

y
i

⋅

f
m

(

x
i

)

=

e

−

y
i

⋅

f

m
−
1

(

x
i

)

⋅

e

−

y
i

⋅

c
m

⋅

h
m

(

x
i

)

=

{\displaystyle w\_{i}^{m + 1} \overset{def}{=} e^{-y\_i\cdot f\_m(x\_i)} = e^{-y\_i\cdot f\_{m - 1}(x\_i)}\cdot e^{-y\_i\cdot c\_m\cdot h^m(x\_i)}=}

=
{
−

y
i

⋅

h
m

(

x
i

# )
2
⋅

I

[

h
m

(

x
i

)
≠

y
i

]
−
1
# }

e

−

y
i

⋅

f

m
−
1

(

x
i

)

⋅

e

c
m

⋅
(
2
⋅

I

[

h
m

(

x
i

)
≠

y
i

]
−
1
)

=

{\displaystyle =\{-y\_i\cdot h^m(x\_i) = 2\cdot\mathbb{I}[h^m(x\_i) \neq y\_i] - 1\}=e^{-y\_i\cdot f\_{m - 1}(x\_i)}\cdot e^{c\_m\cdot (2\cdot\mathbb{I}[h^m(x\_i) \neq y\_i] - 1)}=}

=

w

i

m

⋅

e

2
⋅

c
m

⋅

I

[

h
m

(

x
i

)
≠

y
i

]

⋅

e

−

c
m

∝

w

i

m

⋅

e

2
⋅

c
m

⋅

I

[

h
m

(

x
i

)
≠

y
i

]

{\displaystyle =w\_{i}^{m}\cdot e^{2\cdot c\_m\cdot\mathbb{I}[h^m(x\_i) \neq y\_i]}\cdot e^{-c\_m}\propto w\_{i}^{m}\cdot e^{2\cdot c\_m\cdot\mathbb{I}[h^m(x\_i) \neq y\_i]}}

(избавились от общей константы

e

−

c
m

{\displaystyle e^{-c\_m}}

). Таким образом,

w

i

m
1

=

w

i

m

{\displaystyle w\_{i}^{m + 1} = w\_{i}^{m}}

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

h
m

(
x
)

{\displaystyle h^m(x)}

, для неправильно классифицированных объектов с помощью

h
m

(
x
)

{\displaystyle h^m(x)}

 вес на

(
m
1
)

{\displaystyle (m+1)}

-ой итерации будет равен

w

i

m
1

=

w

i

m

⋅

e

2
⋅

c
m

{\displaystyle w\_{i}^{m + 1} = w\_{i}^{m}\cdot e^{2\cdot c\_m}}

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