Принцип повышения

искусственный интеллект
xgboost xgboost

интегрированное обучение

Что такое ансамблевое обучение? Ансамблевое обучение обеспечивает лучшую производительность прогнозирования и улучшает способность классификаторов к обобщению за счет обучения нескольких классификаторов, а затем их объединения.

集成学习 интегрированное обучение

В настоящее время существует три основных фреймворка для ансамблевого обучения: бэггинг, бустинг и суммирование.

Давайте посмотрим на первый пакет: при пакетировании каждый классификатор случайным образом отбирает образцы с заменой из исходного образца, обучает базовую модель и, наконец, выдает окончательный результат в соответствии с результатами прогнозирования нескольких базовых моделей. Обычный метод бэггинга заключается в том, что мы обучаем множество моделей: SVM, дерево решений, DNN и т. д., а затем объединяем их с помощью lr в конце.

bagging bagging

Второе повышение: повышение переобучает базовую модель после каждого преобразования обучающего набора и, наконец, объединяет все результаты прогнозирования базовой модели. Основными алгоритмами являются AdaBoost и GBDT.


boosting boosting

Третье стекирование: идея стекирования состоит в том, чтобы объединить выходные данные каждой базовой модели в качестве вектора признаков для переобучения.


stacking stacking

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

Подробный xgboost

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

ensembleensemble
Окончательный результат прогнозирования состоит из K деревьев, а затем мы определяем целевую функцию, которую необходимо оптимизировать:
loss loss
Целевая функция состоит из двух частей: первая часть - потери при обучении, а вторая часть - сложность каждого дерева.Существует множество способов измерения сложности: глубина дерева, количество внутренних узлов,Количество конечных узлов (T), оценка конечного узла (w), xgboost используется:
正则 Обычный
Давайте немного расширим функцию прогнозирования:
predict predict
После t-й итерации прогноз модели равен прогнозу модели для первых t-1 раз плюс прогноз t-го дерева, Целевая функция в это время:
目标函数 целевая функция
На этом этапе мы выполним разложение Тейлора второго порядка целевой функции:
泰勒展开 Расширение Тейлора
В этот момент первый член является постоянным членом, перестраивая целевую функцию, чтобы получить:
整理后 После завершения
Функция ошибок и обычный член в приведенной выше формуле:
image_1c0anp25fcq81ptv8kr102sm8c16.png-20.5kB image_1c0anp25fcq81ptv8kr102sm8c16.png-20.5kB
Внесите его в целевую функцию и приведите в порядок, чтобы получить:
image_1c0anptuh1bf31t8e15i711ir1hji1j.png-40.5kB image_1c0anptuh1bf31t8e15i711ir1hji1j.png-40.5kB
На этом этапе мы рассматриваем возможность объединения накопления выборок и накопления листовых узлов в накопление узлов и определяем следующую функцию:
image_1c0ans58m15bo13m7cofcdqhvo20.png-63kB image_1c0ans58m15bo13m7cofcdqhvo20.png-63kB

Здесь мы предполагаем, что структура дерева фиксирована, поэтому после вывода целевой функции мы можем получить:


image_1c0anuli27rp1g6hjn4so316bb2d.png-29.8kB image_1c0anuli27rp1g6hjn4so316bb2d.png-29.8kB

На данный момент: мы вывели его оптимальную оценку листового узла и соответствующее минимальное значение потерь.Следующая проблема, которую необходимо решить: как определить древовидную структуру.

Мы пытаемся рассчитать усиление дерева после разделения и выбрать точку с наибольшим усилением для разделения.При расчете усиления алгоритм ID3 использует прирост информации, алгоритм C4.5 использует коэффициент прироста информации, CART использует коэффициент Джини, а xgboost принимает:


image_1c0ao4v6i1flg10ms1nbc1k37ecq2q.png-8.4kB image_1c0ao4v6i1flg10ms1nbc1k37ecq2q.png-8.4kB

Получить определения до и после разделения:


image_1c0ao5hfrgkm1occ12n75qf1h1937.png-15.1kBimage_1c0ao5hfrgkm1occ12n75qf1h1937.png-15.1kB

Еще одна оптимизация — как быстро просчитать древовидную структуру, контента в сети много, поэтому не буду вдаваться в подробности.

вывод adaboost

adaboostadaboost

В этот момент мы берем производную функции потерь по параметру бета, мы можем получить


image_1c0d3m16a1i191gc4te81hsqho141.png-44.9kB image_1c0d3m16a1i191gc4te81hsqho141.png-44.9kB

gbdt

Алгоритм повышения градиента: сначала дайте функцию потерьL(y,F(x)), входом которой является обучающая пара: (x1, y1), (x2, y2),..., (xn, yn), цель состоит в том, чтобы найти оптимальное F(x), чтобы функция потерь L была наименьший, согласно традиционному методу градиентного спуска, мы введем обучающие данные (xi, yi), затем найдем частную производную L по параметрам, а затем используем отрицательный градиент для обновления параметров:

image_1c0fndee91aoh1blp7nsq2pupi4e.png-51.2kB image_1c0fndee91aoh1blp7nsq2pupi4e.png-51.2kB
Предпосылкой для этого является то, что нам нужно убедиться, что функция потерь дифференцируема с F, а F с параметром $\theta$ дифференцируема, второй, можно сказать, сложнее, поэтому мы отступили, чтобы на этот раз найти градиент (функциональное пространство) F напрямую:
image_1c0fo4iuf153a1pl0i021f2f15u19.png-18.5kB image_1c0fo4iuf153a1pl0i021f2f15u19.png-18.5kB
В это время f может использовать метод градиентного спуска, чтобы найти производную функции потерь в $F_{m-1}$, и вы можете получить:
image_1c0fo70ng15ph1924lmfmkh1a1fm.png-12.9kB image_1c0fo70ng15ph1924lmfmkh1a1fm.png-12.9kB
На данный момент мы предполагаем, что известны и $F_{m-1}$, и $y_i$, тогда неизвестно только $\gamma_m$, и оптимальное значение может быть найдено одномерным линейным поиском:
image_1c0fo9ndt16o44m719h8mip173113.png-16.2kBimage_1c0fo9ndt16o44m719h8mip173113.png-16.2kB

С помощью приведенного выше описания мы будем использовать (x,y), чтобы найти неизвестный параметр $\theta$, и преобразовать его для оценки m-го дерева на $(x,\nabla_f(y_i,F_{m-1}))$ $f$, весь процесс резюмируется следующим образом:


image_1c0fp3vem14b1vot1un2k21p712d.png-91.3kB image_1c0fp3vem14b1vot1un2k21p712d.png-91.3kB

В следующей статье алгоритм этой статьи будет подробно представлен в виде кода, поэтому, пожалуйста, с нетерпением ждите ее.

Ссылаться на

Ансамблевое обучение с помощью sklearn - Теория
Введение в принцип алгоритма GBDT и дизайн системы
Курс «Машинное обучение» в Little Elephant Academy