CoBoosting - CoBoosting
CoBoost - это полууправляемый обучающий алгоритм, предложенный Коллинзом и Сингером в 1999 году. Первоначальное применение алгоритма было задачей Классификация именованных сущностей с использованием очень слабых учеников.[1] Его можно использовать для выполнения частично контролируемого обучения в случаях, когда существует избыточность функций.
Это можно рассматривать как комбинацию совместное обучение и повышение. Каждый пример доступен в двух представлениях (подразделах набора функций), и повышение применяется итеративно поочередно с каждым представлением с использованием предсказанных меток, созданных в альтернативном представлении на предыдущей итерации. CoBoosting не является допустимым алгоритмом повышения в PAC обучение смысл.
Мотивация
CoBoosting был попыткой Коллинза и Зингера улучшить предыдущие попытки использовать избыточность в функциях для обучения классификаторов полууправляемым способом. CoTraining, основополагающая работа Блюма и Митчелла, оказалась мощной структурой для изучения классификаторов с учетом небольшого числа исходных примеров путем итеративного создания правил в списке решений. Преимущество CoBoosting перед CoTraining заключается в том, что он обобщает шаблон CoTraining, чтобы его можно было использовать с любым классификатором. CoBoosting достигает этого, заимствуя концепции из AdaBoost.
Как в CoTrain, так и в CoBoost наборы примеров для обучения и тестирования должны иметь два свойства. Во-первых, пространство признаков в примерах можно разделить на два пространства признаков (или представлений), чтобы каждое представление было достаточно выразительным для классификации. Формально существуют две функции и так что для всех примеров , . В идеале это ограничение на самом деле слишком сильное из-за шума и других факторов, и оба алгоритма вместо этого стремятся максимизировать согласование между двумя функциями. Второе свойство состоит в том, что эти две точки зрения не должны сильно коррелировать.
Алгоритм
Вход: ,
Инициализировать: .
За и для :
Установите псевдо-метки:
Установить виртуальное распределение:
куда
Найдите слабую гипотезу что сводит к минимуму расширенную ошибку обучения.
Выберите значение для что сводит к минимуму расширенную ошибку обучения.
Обновите значение текущего сильного классификатора без порога:
Окончательный результат сильного классификатора:
Настройка AdaBoost
CoBoosting основан на AdaBoost алгоритм, который дает CoBoosting возможность обобщения, поскольку AdaBoost может использоваться в сочетании со многими другими алгоритмами обучения. Это построение предполагает задачу классификации по двум классам, хотя оно может быть адаптировано для классификации по нескольким классам. В структуре AdaBoost слабые классификаторы генерируются последовательно, а также распределяются по примерам в обучающем наборе. Каждому слабому классификатору присваивается вес, а окончательный сильный классификатор определяется как знак суммы слабых классификаторов, взвешенных по их присвоенному весу. (Видеть AdaBoost Страница в Википедии для обозначений). В рамках AdaBoost Шапир и Зингер показали, что ошибка обучения ограничена следующим уравнением:
Где - нормирующий множитель для распределения . Решение для в уравнении для мы получили:
Где - это функция, выбранная в текущей слабой гипотезе. Определены три уравнения, описывающие сумму распределений, для которых текущая гипотеза выбрала правильную или неправильную метку. Обратите внимание, что классификатор может воздержаться от выбора метки для примера, в котором предоставленная метка равна 0. Две метки выбираются как -1 или 1.
Шапир и Зингер показали, что ценность можно минимизировать (и, следовательно, ошибку обучения), выбрав быть следующим:
Предоставление значений достоверности для текущего гипотетического классификатора на основе количества правильно классифицированных по сравнению с количеством неправильно классифицированных примеров, взвешенных по распределению по примерам. Это уравнение можно сгладить, чтобы компенсировать случаи, когда очень маленький. Получение из этого уравнения получаем:
Таким образом, ошибка обучения сводится к минимуму путем выбора слабой гипотезы на каждой итерации, которая минимизирует предыдущее уравнение.
AdaBoost с двумя представлениями
CoBoosting расширяет эту структуру в случае, если у вас есть помеченный обучающий набор (примеры из ) и немаркированный обучающий набор (из ), а также удовлетворяют условиям избыточности в функциях в виде . Алгоритм обучает два классификатора так же, как AdaBoost которые согласовывают помеченные обучающие наборы, правильные ярлыки и максимизируют согласие между двумя классификаторами на немаркированном обучающем наборе. Последний классификатор - это знак суммы двух сильных классификаторов. Ограниченная ошибка обучения на CoBoost расширяется следующим образом, где является продолжением :
Где является суммированием веса гипотез по их доверительным значениям для вид (j = 1 или 2). это знак . На каждой итерации CoBoost оба классификатора обновляются итеративно. Если результат сильного классификатора для вид до итерации мы можем установить псевдо-метки для j-ое обновление должно быть:
В котором выбирает другой вид из обновляемого в данный момент. делится на два, так что . Где
Распределение по примерам для каждого просмотра на итерации определяется следующим образом:
В какой момент можно переписать как
Это идентично уравнению в AdaBoost. Таким образом, тот же процесс можно использовать для обновления значений как в AdaBoost, используя и . Изменяя это, минимизация и таким образом сворачивается жадно.
Рекомендации
Сноски
- ^ Майкл Коллинз и Йорам Сингер, Неконтролируемые модели для классификации именованных сущностей. Труды Совместной конференции SIGDAT 1999 г. по эмпирическим методам обработки естественного языка и очень больших корпусов, стр. 100-110, 1999.