слабые учащиеся на основе распределений: пень решения

Мне нужно повысить слабый классификатор пня решения. Поэтому для каждой итерации мне придется обучать слабый классификатор на основе определенных весов. Затем я буду обновлять веса после каждой итерации. Пока я понял. Но неясной для меня частью является «Обучение решения пня слабого классификатора на основе весов». Как именно они это делают? Кто-нибудь может объяснить по-человечески?

Скажем, предположим, что у меня есть набор обучающих данных {(x1,y1),(x2,y2).....,(xm,ym)} X - это функции (скажем, 10), y - двоичный класс

Первоначально веса w(x) = 1/m

Таким образом, слабый ученик, принимающий решение, должен дать h (x), который должен быть двоичным на основе весов.

Как работает алгоритм? Какие функции примет решение?


person user 3317704    schedule 30.07.2015    source источник


Ответы (1)


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

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

Если вам нужно более глубокое понимание: вы можете изучить пни так же, как дерево глубины 1. Чтобы изучить дерево на взвешенном наборе данных, вам нужно выбрать признак и значение, которое наилучшим образом разделяет набор данных на 2 части по выбранному признаку в соответствии с взвешенными метриками, для пример Энтропия и получение информации. Вы можете просто выполнить итерацию с помощью цикла for по всем доступным функциям, в выбранной функции сортировки вложенного цикла и попробовать все возможные разделения набора данных на два набора S в соответствии с выбранной функцией и значением разделителя, а затем вычислить энтропию по каждому набору, как это написано в Википедии , но вместо вычисления p(x) как

Отношение количества элементов в классе x к количеству элементов в наборе S

вам нужно суммировать все веса объектов с классом x в наборе и разделить это число на сумму по всем весам объектов в этом наборе.

p(x)

где W- все веса объектов в наборе S, а W_x - все веса объектов в наборе S с классом x.

Затем вы можете рассчитать прирост информации, но опять же вам нужно использовать взвешенную пропорцию p (t) вместо варианта в википедии (доля чисел).

p(t)

где W_S- набор весов объектов из исходного (не разделенного разделителем) набора . и W_t- набор весов объектов из набора t (вы получите 2 набора t, разделив S некоторым значением разделителя)

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

Я сделал несколько рисунков для примера вычислений, здесь я выбрал только 1 разделитель, вам нужно проверить усиление для каждого возможного разделителя. example

person Ibraim Ganiev    schedule 30.07.2015
comment
спасибо за такое аккуратное объяснение. Я понял, за исключением нескольких областей. Не могли бы вы дать мне более подробное объяснение средневзвешенной частоты ошибок? Также можете ли вы дать это утверждение, вам нужно суммировать все веса объектов одного класса в части и разделить это число на сумму по всем весам объектов в этой части в виде уравнения для лучшего понимания - person user 3317704; 31.07.2015