Upload
cs-center
View
226
Download
6
Embed Size (px)
Citation preview
GBDT. Смешанные модели.Немного о работающих алгоритмах
И. Куралёнок, Н. Поваров
Яндекс
СПб, 2016
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 1 из 19
Как сделать работающие лесасугубо личное мнение
Научиться работать с произвольными целевымифункциями, чтобы подбирать их под задачуСкрестить bagging и boostingНаучиться строить деревья с учетоминформационного prior и поправки на дисперсиюУчесть особенности решающей функции впроцессе обученияСделать деревья более “стабильными”
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 2 из 19
Случай произвольной целевой функцииВ прошлый раз мы смотрели на 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
Случай произвольной целевой функцииИнтерпретация
На самом деле, мы пробуем разложить решение вфункциональном пространстве деревьев таким образом:
F̂ =∑
h∈CART
wih(x)
при этом мы жадные, и с каждым шагом стараемся быть какможно ближе к цели по всем известным точкам сразу:
arg maxh∈CART
∑i
T (yi ,Ht(xi) + wht+1(xi))
Как можно видеть, это минимизация по всем частнымпроизводным, взвешенных равновесным Евклидом1.
1что может быть не оптимально, как мы покажем нижеИ. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 4 из 19
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
Выводы о структуре обучения
P(‖y − H(x)‖ < θ|T ) < P(‖y − H(x)‖ < θ|L) + O
(√d
mθ2
)
Размер дерева определяется минимальным необходимымуровнем взаимодействия факторов
Длинные ансамбли переобучаются по корню
Длина ансамбля может быть скомпенсированна размеромобучающей выборки
⇒ Умеренные пеньки рулят
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 6 из 19
Стабильность работы GBDTв зависимости от целевой функции
Нужно думать о том, когда остановиться и это не просто. Нужнопонимать, что уровень шума бывает разный.
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 7 из 19
Bootstrapping в процессе бустинга
Соображения, лежащие в основе бустинга и бэггингакомплиментарны, поэтому мы можем их использоватьодновременно. В частности, в оригинальном алгоритмеФридмана, на каждом шаге boosting’а, делается bootstrappingпо точкам (правда там делается jackknife AFAIK).
ht+1 = arg minh∈CART
∑i
wi
∥∥∥∥h(xi)−∂T
∂xi
∥∥∥∥Такой фокус дает на наших данных 1% за бесплатно. Почему?
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 8 из 19
BagBoo
Работает лучше, начиная с определенной длины ансамбля(лучше чем бустинг аналогичной длины)
Модель получается сильно больше (в 10 раз, например),поэтому годится только для соревнований
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 9 из 19
Распределение трудоемкости в GBDT
С практической точки зрения, решение задачи состоит изследующих интенсивных этапов:
Вычисление частных производных (O(g(m)))
Подбор CART или другого дерева (O(Nm))
Апдейт состояния для всех точек Ht+1(xi) (O(g(m)))
Как это не странно, но первый этап становится очень тяжелым,особенно по мере оптимизации построения дерева и усложненияT .
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 10 из 19
BooBag
Работает не хуже
Нет ограничения с которого все работает
Требует значительно меньшего количества вычисленийпроизводной
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 11 из 19
Еще раз о информации в дереве
Сколько всего информации в дереве:
Информация о способе разбиения в каждом ноде:log(n + 1) + log(|fl |+ 1)
Информация о получившемся разбиении:∑l∈L
|l ||X | log(|l |+ 1)
Значения в листьях: |L| × 32bit
⇒ Круто оптимизировать разбиения фичи (не знаем как делать)⇒ Мы можем построить prior по тому, сколько в деревеинформации (сага о log)
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 12 из 19
Деревянная регуляризацияСага о 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
Диалоги о дисперсииВ случае MSE минимизируем суммарную дисперсию на каждомсплите. Дисперсия растет с числом точек, нам интересно, чтобудет на бесконечности.
Можно использовать исправленную дисперсию, но помогает невсегда и есть варианты.
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 14 из 19
Исправление дисперсии
Собственно варианты. Исправленную дисперсию колбасит, а мыхотим оценку сверху. Можно взять 2 соседние точки напредыдущем графике и найти форму в виде
a
(n
n + b
)И посмотрим куда оно сойдется. Использованное значение братьв качестве дисперсии. У меня получилось так:
Dcorr =n(n − 2)
n2 − 3n + 1D
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 15 из 19
Итого
Для того, чтобы найти каждое биение я провожу такуюоптимизацию (текущий рекорд без учета попыток 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
Я.ЗабывчивыеДеревьяот Cliff Brunk & Андрей Гулин
О забывчивых деревьях мы немного говорили, однако в Я, мыпошли чуть дальше:
Сделали предварительную бинаризацию:X → Rn → {0, 1}N
На каждом уровне можно выбрать только одну_бинарную_ фичу.
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 17 из 19
Парные производные от Андрея Гулинаили как устроен -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
Что мы сегодня узнали
Как раскладывать целевую функцию в ряд деревьев
Какие характеристики важны в бустинге
Как играть в гольф из лука
Можно ли сделать еще более работающие деревья
Подробности решающей функции можно использовать дляеще более точного разложения
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 19 из 19