19
GBDT. Смешанные модели. Немного о работающих алгоритмах И. Куралёнок, Н. Поваров Яндекс СПб, 2016 И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 1 из 19

Машинное обучение 2, весна 2016: GBDT

Embed Size (px)

Citation preview

Page 1: Машинное обучение 2, весна 2016: GBDT

GBDT. Смешанные модели.Немного о работающих алгоритмах

И. Куралёнок, Н. Поваров

Яндекс

СПб, 2016

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 1 из 19

Page 2: Машинное обучение 2, весна 2016: GBDT

Как сделать работающие лесасугубо личное мнение

Научиться работать с произвольными целевымифункциями, чтобы подбирать их под задачуСкрестить bagging и boostingНаучиться строить деревья с учетоминформационного prior и поправки на дисперсиюУчесть особенности решающей функции впроцессе обученияСделать деревья более “стабильными”

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 2 из 19

Page 3: Машинное обучение 2, весна 2016: GBDT

Случай произвольной целевой функцииВ прошлый раз мы смотрели на AdaBoost, но он дляклассификации. Хотим для чего угодно. Для этого нужнонаучиться делать все для любого T . J. Friedman и ко.предложили делать двухфазно:

1 Берем частные производные по всем точкам лерна∂T∂xi

(X ,Ht) при текущем решени Ht .

2 Построенные значения используем в качестве целевых дляочередного CART:

ht+1 = arg minh∈CART

∑i

∥∥∥∥h(xi)−∂T

∂xi

∥∥∥∥После этого, очередное дерево добавляется к решению сshrinkage параметром w : Ht+1(x) = Ht(x) + wht+1(x)

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 3 из 19

Page 4: Машинное обучение 2, весна 2016: GBDT

Случай произвольной целевой функцииИнтерпретация

На самом деле, мы пробуем разложить решение вфункциональном пространстве деревьев таким образом:

F̂ =∑

h∈CART

wih(x)

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

arg maxh∈CART

∑i

T (yi ,Ht(xi) + wht+1(xi))

Как можно видеть, это минимизация по всем частнымпроизводным, взвешенных равновесным Евклидом1.

1что может быть не оптимально, как мы покажем нижеИ. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 4 из 19

Page 5: Машинное обучение 2, весна 2016: GBDT

VC оценка для Boostingпо Robert Schapire

Для классификатора:

P(y 6= H(x)|T ) < P(y 6= H(x)|L) + O

(√Td

m

)

Для регрессии:

P(‖y − H(x)‖ < θ|T ) < P(‖y − H(x)‖ < θ|L) + O

(√d

mθ2

)

где d — VC оценка слабого учителя, m — количество точек ввыборке.

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 5 из 19

Page 6: Машинное обучение 2, весна 2016: GBDT

Выводы о структуре обучения

P(‖y − H(x)‖ < θ|T ) < P(‖y − H(x)‖ < θ|L) + O

(√d

mθ2

)

Размер дерева определяется минимальным необходимымуровнем взаимодействия факторов

Длинные ансамбли переобучаются по корню

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

⇒ Умеренные пеньки рулят

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 6 из 19

Page 7: Машинное обучение 2, весна 2016: GBDT

Стабильность работы GBDTв зависимости от целевой функции

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

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 7 из 19

Page 8: Машинное обучение 2, весна 2016: GBDT

Bootstrapping в процессе бустинга

Соображения, лежащие в основе бустинга и бэггингакомплиментарны, поэтому мы можем их использоватьодновременно. В частности, в оригинальном алгоритмеФридмана, на каждом шаге boosting’а, делается bootstrappingпо точкам (правда там делается jackknife AFAIK).

ht+1 = arg minh∈CART

∑i

wi

∥∥∥∥h(xi)−∂T

∂xi

∥∥∥∥Такой фокус дает на наших данных 1% за бесплатно. Почему?

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 8 из 19

Page 9: Машинное обучение 2, весна 2016: GBDT

BagBoo

Работает лучше, начиная с определенной длины ансамбля(лучше чем бустинг аналогичной длины)

Модель получается сильно больше (в 10 раз, например),поэтому годится только для соревнований

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 9 из 19

Page 10: Машинное обучение 2, весна 2016: GBDT

Распределение трудоемкости в GBDT

С практической точки зрения, решение задачи состоит изследующих интенсивных этапов:

Вычисление частных производных (O(g(m)))

Подбор CART или другого дерева (O(Nm))

Апдейт состояния для всех точек Ht+1(xi) (O(g(m)))

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

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 10 из 19

Page 11: Машинное обучение 2, весна 2016: GBDT

BooBag

Работает не хуже

Нет ограничения с которого все работает

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

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 11 из 19

Page 12: Машинное обучение 2, весна 2016: GBDT

Еще раз о информации в дереве

Сколько всего информации в дереве:

Информация о способе разбиения в каждом ноде:log(n + 1) + log(|fl |+ 1)

Информация о получившемся разбиении:∑l∈L

|l ||X | log(|l |+ 1)

Значения в листьях: |L| × 32bit

⇒ Круто оптимизировать разбиения фичи (не знаем как делать)⇒ Мы можем построить prior по тому, сколько в деревеинформации (сага о log)

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 12 из 19

Page 13: Машинное обучение 2, весна 2016: GBDT

Деревянная регуляризацияСага о log(n)

L = argminL∑

l∈L

(∑x∈l(x − x̄l)

2 + λ |l ||X | log(|l |+ 1)

)= argminL

∑l∈L

(∑x∈l(x − x̄l)

2 − x2 + λ |l ||X | log(|l |+ 1)

)= argminL

∑l∈L

(−(

∑x∈l x)

2

|l | + λ |l ||X | log(|l |+ 1)

)' argminL

∑l∈L

(−(

∑x∈l x)

2

|l |

)(1 + λ log(|l |+ 1))

У меня λ = 2

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 13 из 19

Page 14: Машинное обучение 2, весна 2016: GBDT

Диалоги о дисперсииВ случае MSE минимизируем суммарную дисперсию на каждомсплите. Дисперсия растет с числом точек, нам интересно, чтобудет на бесконечности.

Можно использовать исправленную дисперсию, но помогает невсегда и есть варианты.

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 14 из 19

Page 15: Машинное обучение 2, весна 2016: GBDT

Исправление дисперсии

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

a

(n

n + b

)И посмотрим куда оно сойдется. Использованное значение братьв качестве дисперсии. У меня получилось так:

Dcorr =n(n − 2)

n2 − 3n + 1D

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 15 из 19

Page 16: Машинное обучение 2, весна 2016: GBDT

Итого

Для того, чтобы найти каждое биение я провожу такуюоптимизацию (текущий рекорд без учета попыток TN):

argminL

∑l∈L

(−(∑

x∈l x)2

n

)n(n − 2)

n2 − 3n + 1(1 + 2 log(n + 1))

где n = |l |.

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 16 из 19

Page 17: Машинное обучение 2, весна 2016: GBDT

Я.ЗабывчивыеДеревьяот Cliff Brunk & Андрей Гулин

О забывчивых деревьях мы немного говорили, однако в Я, мыпошли чуть дальше:

Сделали предварительную бинаризацию:X → Rn → {0, 1}N

На каждом уровне можно выбрать только одну_бинарную_ фичу.

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 17 из 19

Page 18: Машинное обучение 2, весна 2016: GBDT

Парные производные от Андрея Гулинаили как устроен -F/-U

argminδx

∑(i ,j)

wij

[(δxi +

12

exj

exi + exj

)2

+

(δxj −

12

exj

exi + exj

)2]

L =∑ij

wij

(cleaf (di ) − cleaf (dj ) +

exj

exi + exj

)2

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 18 из 19

Page 19: Машинное обучение 2, весна 2016: GBDT

Что мы сегодня узнали

Как раскладывать целевую функцию в ряд деревьев

Какие характеристики важны в бустинге

Как играть в гольф из лука

Можно ли сделать еще более работающие деревья

Подробности решающей функции можно использовать дляеще более точного разложения

И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 19 из 19