
Vova
23.10.2017
16:55:19
а не только в gblinear
lambda=0.1-0.2 и спасает xgboost от тотальной нестабильности с данным датасетом, но и с регуляризацией xgboost хоть и не в полнейшем ауте, но сливает Ridge, стабильно. Типа R2 на out-of-sample 0.45(лучший xgboost с lambda>0) vs 0.55 (Ridge с lambda 0.1)

Lepus
23.10.2017
17:04:31
А как метрику считаешь?

Vova
23.10.2017
17:06:58
RMSE

Google

Lepus
23.10.2017
17:14:29
Хммм
Ну, может, xgboost сваливается в локальный минимум
Ошибки
А деревянная регрессия каким-то чудом находит более хороший минимум
Какой критерий качества у классификатора?

Kirill
23.10.2017
17:23:25
от 2 до 40
то есть максимальная длина 40? а количество фич какое. так то 40 как то дофига кажется для градиентного бустинга

Vova
23.10.2017
17:23:58
да 40 очень много
но я ответил буквально: от 2 до 40, т.е. по сетке я перебирал ограничение максимальной длинны от 2 до 40

Lepus
23.10.2017
17:24:59
Но это не главное

Vova
23.10.2017
17:25:10
40, это просто "ради смеха" (ну вдруг)

Lepus
23.10.2017
17:25:24
А главное то, что он либо градиент приблизить не может нормально
Либо градиент его ведет в локальный минимум

Google

Vova
23.10.2017
17:25:49
да, там всплывают адовые отклонения, т.е. решение крайне нестабильно

Lepus
23.10.2017
17:26:08
А итераций сколько?
Он завершается по количеству итераций?

Vova
23.10.2017
17:26:21
перебирал от 10 до 1000
да по количеству
я не стал делать раннюю остановку
просто перебрал
везде - плохо

Lepus
23.10.2017
17:26:52
Тогда он не может сойтись, если решение не стабильно при этом

Vova
23.10.2017
17:27:09
опять же с lambda 0.1..0.2, решение находится
это намекает на крайне высокую коллинераность данных (наверно?)

Lepus
23.10.2017
17:27:38
Какая предобработка данных используется?

Vova
23.10.2017
17:27:55
но оно всё равно хуже чем ridge
стандартизация не проводится

Lepus
23.10.2017
17:28:34
А всякие кодирования категориальных признаков?

Vova
23.10.2017
17:28:40
нет
все переменные непрерывные

Lepus
23.10.2017
17:29:12
Попробуй заскейлить их
Там MinMax, например

Vova
23.10.2017
17:29:53
в этом смысле данные очень гомогенны

Google

Vova
23.10.2017
17:29:58
средняя =0

Lepus
23.10.2017
17:30:16
Ну тогда проведи стат тест

Vova
23.10.2017
17:30:19
а дисперсии хоть и не застандартизованы - но очень близкие

Lepus
23.10.2017
17:30:29
Выкинь коллинеарные переменные
И запусти оба алгоритма еще раз

Vova
23.10.2017
18:08:12
все переменные коллинеарны это их суть
это как в зале 30 человек орут друг на друга

Timofey
23.10.2017
18:08:48
Предварительное выделение зависимых кластеров?

Vova
23.10.2017
18:09:51
да, есть такой вариант, но это очень усложненное решение
представьте себе заседание парламента, все друг на друг орут, а нужно прогнозировать настроение председателя
"все " это фичи, председатель - этото что нужно спрогнозировать
никого невыкинуть и все коллинеарно
даже депутат"жопов" который устраивает потасовка раз в год важен для прогноза

Timofey
23.10.2017
18:15:42
Можно просто сделать dimensionality reduction на вход. Но тут я могу ошибаться. Чисто через умножение на матрицу, например.

Vova
23.10.2017
18:15:55
pca
ica
это понятно
но неприятно что xgb не справляется
кстати RF дает тоже похуже резалт чем Ridge, чуток

Google

Vova
23.10.2017
18:17:32
но несравненно стабильнее xgboost и из коробки
еще интересно, что при booster: gblinear (вместро gbtree), одинаковом lambda, достаточно мелком eta и большом числе итераций, результаты xgboost с точностью до 4го знака r2 сопадают с RidgeRegression. Попросту говоря xgboost с бустером gblinear это эквивалент RidgeRegression пакета sklearn. И, похоже, даже работает быстрее. А вот про бустер gbtree - я писал всё вверху.

Andrey
24.10.2017
05:10:33

Eduard
24.10.2017
06:46:57
О - отчаяние

Lepus
24.10.2017
06:56:44
Во-вторых, бустинг -- не обычная комбинация

Artem
24.10.2017
07:01:49
А gblinear как бы намекает слегка

Lepus
24.10.2017
07:03:46

Andrey
24.10.2017
07:09:37

Lepus
24.10.2017
07:12:49
Это в случае adaboost какого-нибудь
А в случае GBM там гораздо более мутная история
У тебя argmin(y-r*argmin ()))

Andrey
24.10.2017
07:14:24
Адабуст - частный случай же

Lepus
24.10.2017
07:15:36
Про аду можно сказать, что это взвешенная комбинация
Про GBM нельзя

Andrey
24.10.2017
07:16:03
Посмотри, как происходит прогноз для нового наблюдения: это сумма предсказаний базовых алгоритмов

Lepus
24.10.2017
07:17:38
Это бэггинг, а не бустинг
Бустинг -- последовательный.

Google

Lepus
24.10.2017
07:18:04
RF -- бэггинг

Andrey
24.10.2017
07:19:17
На фазе предсказания отличий нет

Lepus
24.10.2017
07:21:04
Зато есть на фазе обучения)))))
Потому что бустинг -- это не просто линейная комбинация
В случае gblinear у тебя на каждом шаге идет спуск по ангиградиенту ошибки, которая считается на функциональном приближении значений целевой функции линейной регрессией
Сказать, что это линейная комбинация линейных классификаторов нельзя никак


Vova
24.10.2017
07:41:40
в общем мой кейс из экономики, когда у обсчитываемого объекта снимаются "показания" выручки, инвестиций, доходов и тп и тд. А нужно предсказать какой то показатель типа прибыли. И т.к. эти показатели связаны очень сильно, то возникает мультиколлинеарность. Уже сотни тестов провёл, Ridge Regression с регуляризацией - the best. Я дотянул и xgboost и RF и kernel ridge в область приемлемых значений, но все системно сливают простой Ridge Regression. Оч. интересно. Т.е. есть области в которы xgboost, при довольно обширных усилиях по поиску оптимума, сливает системно намного более простому и линейному алгоритму.
вот на очень большой выборке "предприятий" по 100 проходов:
r2XGB= 0.65227830657
r2Ridge= 0.744216018931
r2KernelRidge= 0.731306807264
r2RF= 0.687464633886

Lepus
24.10.2017
07:48:58
Очень интересный кейс

Иваницкий
24.10.2017
08:24:50
А сколько у тебя признаков?

Vova
24.10.2017
08:31:01
несколько десятков

Lepus
24.10.2017
10:43:15
Вообще деревья довольно устойчивы к коллинеарным признакам

Kirill
24.10.2017
11:00:37
Вообще деревья довольно устойчивы к коллинеарным признакам
мне кажется, чем глубже дерево, тем вероятнее, что будет неустойчиво, ибо нахватает лишних связей. поэтому случайный лес теоретически должен быть менее устойчив к мультиколлинеарности, чем градиентый бустинг с настройками по дефолту, ибо первый нахватает лишних связей. что должно несколько поправится голосованием конечно, но все же

Lepus
24.10.2017
11:02:28
В бустинге стандартное дерево глубиной 3