Это третья часть моей серии заметок по CS M146.

[Reference]
A course in machine learning Chapter 11: Ensemble Methods

Оглавление

Ансамбль: Введение

Предположим, у нас есть классификаторы ℎ₁, ℎ₂,…,ℎʟ, обученные набору данных D. Может быть, один классификатор действительно плохо справляется с определенной группой входных данных, в которой другие классификаторы действительно хороши. Как объединить все классификаторы в один? Мы можем просто использовать большинство голосов. В этом случае окончательный прогноз ℎ(𝑥):

Но, возможно, мы доверяем одному ученику больше, чем другому. Таким образом, мы можем взвешивать каждый классификатор по-разному. Тогда окончательный прогноз ℎ(𝑥):

До сих пор мы думали о случаях, когда hᵢ является бинарным классификатором. Если hᵢ - мультиклассовый классификатор, то ℎ(𝑥):

Если вместо этого мы имеем дело с регрессионной моделью, то мы можем взять среднее или средневзвешенное значение в качестве нашего окончательного прогноза.

Ансамбль: начальная загрузка

Вместо обучения разных типов классификаторов на одном и том же наборе данных мы можем обучить один тип классификатора на нескольких наборах данных. Но как нам получить несколько наборов данных? Мы можем создать 𝐵 обучающие наборы данных начальной загрузки 𝐷₁, 𝐷₂,…, 𝐷ʙ. Набор данных начальной загрузки 𝐷ᵢ содержит 𝑁 обучающих примеров, взятых случайным образом из исходного набора обучающих данных с заменой. Почему есть смысл это делать? Обратите внимание, если исходный набор данных поступает из дистрибутива 𝐷, то 𝐷ᵢ также состоит из образцов, поступающих из 𝐷. Этот метод называется агрегирование начальной загрузки (Bagging). Теперь мы можем построить ℎ₁, ℎ₂,…,ℎʙ с 𝐷₁, 𝐷₂,…, 𝐷ʙ соответственно. Точно так же мы можем выбирать 𝐹 признаков случайным образом с заменой из 𝑀 признаков. Это называется пакетированием функций. Случайные леса — это ансамбль деревьев решений, пакетов и пакетов функций.

Повышение: Мотивация

До сих пор мы видели, как комбинировать классификаторы с низким смещением и высокой дисперсией. начальная загрузка может уменьшить дисперсию. Теперь рассмотрим случай, когда у нас есть модель с высоким смещением/низкой дисперсией (например, пень решения: деревья решений с глубиной 1). Мы хотели бы итеративно комбинировать старую модель с новой моделью, которая слаба, но «улавливает» ошибки старой модели.

Буст: Adaboost (адаптивный буст)

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

Таким образом, для классификатора 𝑡ᵗʰ наша цель состоит в том, чтобы выбрать β и ℎ так, чтобы

Обратите внимание, что первый член произведения не зависит ни от β, ни от ℎ. Мы можем заменить его на 𝑤.

Теперь мы хотим избавиться от 𝑦 и ℎ, так как они либо +1, либо -1. Двоичное число неудобно брать производную. Уведомление

Таким образом, цель может быть записана следующим образом.

Уведомление

Мы можем заменить это обратно на obejctive.

𝟙[𝑦≠ℎ(𝑥)]𝑤(𝑛) — это что-то вроде взвешенной ошибки. Кроме того, мы можем сделать сумму весов равной 1 без потери общности (я не уверен, почему, но поверьте мне, это должно быть правильно).

Следовательно, целью является

Теперь обратите внимание, что константа первого члена всегда положительна.

Следовательно, оптимальный слабый классификатор ℎ можно получить следующим образом.

Точно так же оптимальный вклад β получается следующим образом.

Возьмем производную и приравняем ее к нулю.

Теперь мы знаем, как получить оптимальные значения β* и ℎ*. Но обратите внимание, что нам нужно было использовать 𝑤 для вычисления новых β и ℎ. Нам тоже нужно обновить 𝑤. Как мы это делаем? Вместо прямого вычисления 𝑤 мы также будем использовать итеративный подход. Другими словами, мы хотим выразить новое 𝑤 через предыдущее 𝑤.

Мы знаем, что такое 𝑎, потому что знаем β* и ℎ*.

Подставляем это обратно в уравнение 𝑤.

В заключение, вот обзор алгоритма adaboost.

Затем мы итеративно повторяем шаги с 1 по 3 для количества слабых классификаторов раз.

Адабуст: Интуиция

Интуитивно это то, что происходит с adaboost. Мы взвешиваем точки данных по-разному, чтобы новый слабый классификатор мог классифицировать те точки данных, которые ранее были неправильно классифицированы.

В результате каждый классификатор будет специализироваться на разных областях набора данных. Наконец, мы объединяем прогнозы всех слабых учеников.