Шесть Adaboost для машинного обучения

Python

Эта статья участвовала в "Проект «Звезда раскопок»”, чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.
Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.

1. Определение алгоритма обучения ансамбля

Обучение ансамблю заключается в создании сильного классификатора путем объединения нескольких слабых классификаторов с помощью определенной стратегии. Слабые классификаторы относятся к тем классификаторам, точность классификации которых лишь немного лучше, чем случайное угадывание, в то время как сильные классификаторы имеют гораздо более высокую точность классификации. Здесь «сильный» и «слабый» относительны. В некоторых книгах слабые классификаторы также называются «базовыми классификаторами».

image.pngВ настоящее время существуют две основные школы алгоритмов ансамблевого обучения:

  • bagging
  • boosting

2. расфасовка

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

image.pngСлучайная выборка с заменой: выборка начальной загрузки, что означает, что для исходного набора данных из m выборок одна выборка случайным образом выбирается в набор выборки за раз, а затем выборка помещается обратно в исходный набор данных, а затем случайная выборка следующей выборки выполняется до тех пор, пока количество выборок не достигнет m, такая выборка строится, а затем мы можем повторить этот процесс, чтобы сгенерировать n таких выборок. То есть в окончательно сформированной выборке выборки в каждой выборке могут повторяться, или некоторые выборки в исходной выборке могут вообще не браться, а распределение выборок в каждой выборке может быть разным. В соответствии с n наборами выборок, построенными путем случайной выборки с заменой, мы можем обучить их по отдельности, чтобы получить n слабых классификаторов, а затем в соответствии с результатами, возвращаемыми каждым слабым классификатором, мы можем использовать определенную стратегию комбинирования, чтобы получить наш Окончательный сильный классификатор обязательный. Репрезентативным алгоритмом метода мешков является случайный лес.Если быть точным, случайный лес представляет собой специализированную расширенную версию мешков.Так называемая специализация связана с тем, что слабые ученики случайного леса являются деревьями решений. Так называемый продвинутый заключается в том, что случайный лес добавляет случайный выбор признаков на основе случайной выборки образцов мешков, и его основная идея не отклоняется от области мешков.

3. повышение

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

image.pngРепрезентативные алгоритмы методов повышения включают алгоритмы Adaboost, GBDT и XGBoost.

4 Адабуст — это аббревиатура от адаптивного бустинга (adaptive boosting)

Шаги алгоритма следующие: Предположим, у нас есть обучающий набор из m выборок, помеченный y ∈ {—1,+1}, и прогнозы наших n слабых учеников таковы (h1(z), h2(z....hn(z)), t =1,2,3...,n

1. Рассчитайте вес выборки

Каждому образцу в обучающем наборе присваивается вес для формирования вектора весов D, и вектор весов D инициализируется равным значением. Предположим, у нас есть m выборок, и каждая выборка имеет одинаковый вес, поэтому вес равен 1/m.

⒉ Рассчитать частоту ошибок

Обучите слабый классификатор на тренировочном наборе и рассчитайте частоту ошибок классификатора:

image.png

3. Рассчитайте вес слабого классификатора. Присвойте значение веса альфа текущему классификатору, тогда формула расчета альфа будет следующей:

image.png4. Скорректировать значение веса По последнему результату обучения скорректировать значение веса (вес последней пары уменьшается, а вес неправильной классификации увеличивается) Если i-й образец классифицирован правильно, вес образца изменяется на:

image.pngЕсли i-й образец неправильно классифицирован, вес образца изменяется на:

image.pngОбъедините две приведенные выше формулы в одну:

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