Методы построения базовых моделей
Для построения ансамбля необходимо строить много базовых моделей. Можно брать модели из разных семейств (решающие деревья, линейные модели, метод K ближайших соседей и др.), но базовые модели можно строить и в рамках одного семейства следующими способами:
-
Использовать разные гиперпараметры. Например, разное в методе ближайших соседей или разную допустимую глубину при настройке решающих деревьев.
-
Использовать разные начальные инициализации при настройке градиентными методами. Этот метод приводит к разным прогнозирующим алгоритмам, если целевая функция невыпукла, например, при настройке нейросетей.
-
Использовать разную инициализацию для генератора случайных чисел (random seed). Этот метод применим только для для рандомизированных моделей, то есть моделей, использующих случайность в процессе своей настройки. Например, модели, настраиваемые методом стохастического градиентного спуска, поскольку итоговые параметры будут зависеть от последовательности случайных минибатчей объектов, по которым проходило обучение. Другими примерами являются деревья случайного леса (random forest) и особо случайные деревья (extra random trees), о которых пойдёт речь позже.
-
Предсказывать целевую переменную с разными функциями потерь. Использование различных функций потерь приведёт к настройке разных окончательных моделей даже по одинаковым данным. Например, можно настраивать классификаторы с экспоненциальной, логистической и hinge функцией потерь.
-
Настраивать модель предсказывать различные преобразования целевой переменной, например . За счёт аппроксимации по-разному преобразованной целевой переменной, базовые модели будут получаться разными. К прогнозам базовых моделей нужно потом применить обратное преобразование для возврата к исходной шкале и удобства последующего усреднения.
-
Настраивать одну модель на разных фрагментах обучающей выборки. Фрагменты можно выбирать по-разному, и этому посвящён следующий раздел.
Каждая базовая модель настраивается независимо от остальных, поэтому их можно настраивать параллельно, используя разные ядра процессора.