интегрированное обучение
Что такое ансамблевое обучение? Ансамблевое обучение обеспечивает лучшую производительность прогнозирования и улучшает способность классификаторов к обобщению за счет обучения нескольких классификаторов, а затем их объединения.
В настоящее время существует три основных фреймворка для ансамблевого обучения: бэггинг, бустинг и суммирование.
Давайте посмотрим на первый пакет: при пакетировании каждый классификатор случайным образом отбирает образцы с заменой из исходного образца, обучает базовую модель и, наконец, выдает окончательный результат в соответствии с результатами прогнозирования нескольких базовых моделей. Обычный метод бэггинга заключается в том, что мы обучаем множество моделей: SVM, дерево решений, DNN и т. д., а затем объединяем их с помощью lr в конце.
Второе повышение: повышение переобучает базовую модель после каждого преобразования обучающего набора и, наконец, объединяет все результаты прогнозирования базовой модели. Основными алгоритмами являются AdaBoost и GBDT.
Третье стекирование: идея стекирования состоит в том, чтобы объединить выходные данные каждой базовой модели в качестве вектора признаков для переобучения.
При обучении ансамблевому обучению нам необходимо знать очень важную концепцию: разнообразие, мы надеемся, что каждая базовая модель отличается, поэтому окончательный результат прогнозирования может быть хорошим.
Подробный xgboost
Предположим, что наша окончательная функция прогнозирования имеет вид:
Окончательный результат прогнозирования состоит из K деревьев, а затем мы определяем целевую функцию, которую необходимо оптимизировать:
Целевая функция состоит из двух частей: первая часть - потери при обучении, а вторая часть - сложность каждого дерева.Существует множество способов измерения сложности: глубина дерева, количество внутренних узлов,Количество конечных узлов (T), оценка конечного узла (w), xgboost используется:
Давайте немного расширим функцию прогнозирования:
После t-й итерации прогноз модели равен прогнозу модели для первых t-1 раз плюс прогноз t-го дерева, Целевая функция в это время:
На этом этапе мы выполним разложение Тейлора второго порядка целевой функции:
В этот момент первый член является постоянным членом, перестраивая целевую функцию, чтобы получить:
Функция ошибок и обычный член в приведенной выше формуле:
Внесите его в целевую функцию и приведите в порядок, чтобы получить:
На этом этапе мы рассматриваем возможность объединения накопления выборок и накопления листовых узлов в накопление узлов и определяем следующую функцию:
Здесь мы предполагаем, что структура дерева фиксирована, поэтому после вывода целевой функции мы можем получить:
На данный момент: мы вывели его оптимальную оценку листового узла и соответствующее минимальное значение потерь.Следующая проблема, которую необходимо решить: как определить древовидную структуру.
Мы пытаемся рассчитать усиление дерева после разделения и выбрать точку с наибольшим усилением для разделения.При расчете усиления алгоритм ID3 использует прирост информации, алгоритм C4.5 использует коэффициент прироста информации, CART использует коэффициент Джини, а xgboost принимает:
Получить определения до и после разделения:
Еще одна оптимизация — как быстро просчитать древовидную структуру, контента в сети много, поэтому не буду вдаваться в подробности.
вывод adaboost
В этот момент мы берем производную функции потерь по параметру бета, мы можем получить
gbdt
Алгоритм повышения градиента: сначала дайте функцию потерьL(y,F(x))
, входом которой является обучающая пара: (x1, y1), (x2, y2),..., (xn, yn), цель состоит в том, чтобы найти оптимальное F(x), чтобы функция потерь L была наименьший, согласно традиционному методу градиентного спуска, мы введем обучающие данные (xi, yi), затем найдем частную производную L по параметрам, а затем используем отрицательный градиент для обновления параметров:
Предпосылкой для этого является то, что нам нужно убедиться, что функция потерь дифференцируема с F, а F с параметром $\theta$ дифференцируема, второй, можно сказать, сложнее, поэтому мы отступили, чтобы на этот раз найти градиент (функциональное пространство) F напрямую:
В это время f может использовать метод градиентного спуска, чтобы найти производную функции потерь в $F_{m-1}$, и вы можете получить:
На данный момент мы предполагаем, что известны и $F_{m-1}$, и $y_i$, тогда неизвестно только $\gamma_m$, и оптимальное значение может быть найдено одномерным линейным поиском:
С помощью приведенного выше описания мы будем использовать (x,y), чтобы найти неизвестный параметр $\theta$, и преобразовать его для оценки m-го дерева на $(x,\nabla_f(y_i,F_{m-1}))$ $f$, весь процесс резюмируется следующим образом:
В следующей статье алгоритм этой статьи будет подробно представлен в виде кода, поэтому, пожалуйста, с нетерпением ждите ее.
Ссылаться на
Ансамблевое обучение с помощью sklearn - Теория
Введение в принцип алгоритма GBDT и дизайн системы
Курс «Машинное обучение» в Little Elephant Academy