Для повышения задачи вам нужно выбрать лучший классификатор на каждой итерации алгоритма. Для этого вам необходимо минимизировать среднюю ошибку пня в наборе данных по отношению к весам, поэтому вы должны учитывать веса объектов при подсчете меры ошибки классификатора. Таким образом, штраф классификатора за неправильную маркировку объекта с большим весом будет больше, чем штраф за неправильную маркировку объекта с малым весом.
Вы можете увидеть мою реализация бустинга на деревьях решений на языке R это работает хорошо, для пней решений просто измените глубину дерева в строке 132 на 1, и вы можете проверить точность с разным количеством классификаторов, изменяя параметр T.
Если вам нужно более глубокое понимание: вы можете изучить пни так же, как дерево глубины 1. Чтобы изучить дерево на взвешенном наборе данных, вам нужно выбрать признак и значение, которое наилучшим образом разделяет набор данных на 2 части по выбранному признаку в соответствии с взвешенными метриками, для пример Энтропия и получение информации. Вы можете просто выполнить итерацию с помощью цикла for по всем доступным функциям, в выбранной функции сортировки вложенного цикла и попробовать все возможные разделения набора данных на два набора S в соответствии с выбранной функцией и значением разделителя, а затем вычислить энтропию по каждому набору, как это написано в Википедии , но вместо вычисления p(x) как
Отношение количества элементов в классе x к количеству элементов в наборе S
вам нужно суммировать все веса объектов с классом x в наборе и разделить это число на сумму по всем весам объектов в этом наборе.
![p(x)](https://latex.codecogs.com/svg.latex?%5Cfn_phv%20%5CLARGE%20p%28x%29%20%3D%20%5Cfrac%7B%5Csum_%7Bw%20%5Cin% 20W_x%7D%20w%7D%7B%5Csum_%7Bw%20%5Cin%20W%7D%20w%7D)
где
- все веса объектов в наборе S, а
- все веса объектов в наборе S с классом x.
Затем вы можете рассчитать прирост информации, но опять же вам нужно использовать взвешенную пропорцию p (t) вместо варианта в википедии (доля чисел).
![p(t)](https://latex.codecogs.com/svg.latex?%5Cfn_phv%20%5CLARGE%20p%28t%29%20%3D%20%5Cfrac%7B%5Csum_%7Bw%20%5Cin% 20W_t%7D%20w%7D%7B%5Csum_%7Bw%20%5Cin%20W_S%7D%20w%7D)
где
- набор весов объектов из исходного (не разделенного разделителем) набора . и
- набор весов объектов из набора t (вы получите 2 набора t, разделив S некоторым значением разделителя)
Выберите функцию и значение разделителя, которые дают вам наибольший выигрыш, и все, вы только что изучили новый классификатор пней на взвешенных данных, и он готов к работе.
Я сделал несколько рисунков для примера вычислений, здесь я выбрал только 1 разделитель, вам нужно проверить усиление для каждого возможного разделителя. ![example](https://dl.dropboxusercontent.com/u/87419207/permanent/weighted_entropy.png)
person
Ibraim Ganiev
schedule
30.07.2015