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

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



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

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

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

Итак, теперь мы увидим основные 3 концепции алгоритма Adaboost.

Основные концепции Adaboost:

1). Если вы видите метод случайного леса, деревья могут быть больше от одного дерева к другому, но, напротив, лес деревьев, созданный с помощью Adaboost, обычно имеет только узел и два листа. (Дерево с одним узлом и двумя листьями называется пнем) Итак, Adaboost - это лес пней. пни не являются точными при классификации.

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

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

3). Наконец, в случайном лесу каждое дерево решений не зависит друг от друга (т. Е. Одно дерево не будет зависеть от других деревьев) , но в Adaboost каждый пень зависит от ошибки предшественника (то есть ошибка, которую делает первая культя, повлияет на то, как вторая культя ...)

Реализация Adaboost:

Это основные концепции Adaboost, теперь давайте углубимся в процесс реализации !!

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

Вес образца = 1% Количество образцов в наборе данных

тогда мы обнаружим первый пень, после первого пня мы обновим вес образца, чтобы сделать следующий пень, чтобы правильно спрогнозировать этот неправильно классифицированный образец !!

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

Но что это за индекс Джини ??

Индекс Джини или примесь Джини измеряет степень / вероятность ошибочной классификации конкретной переменной при ее случайном выборе. Степень индекса Джини варьируется от 0 до 1, где 0 означает, что все элементы принадлежат определенному классу или если существует только один класс, а 1 означает, что элементы случайным образом распределяются по различным классам. Индекс Джини 0,5 означает, что элементы равномерно распределены по некоторым классам.

Формула для индекса Джини

где pi - вероятность того, что объект будет отнесен к определенному классу.

Поэтому, когда мы применяем индекс Джини ко всем независимым переменным, мы получаем низкий индекс Джини 0,2 для веса, поэтому мы берем параметр веса в качестве нашей первой отметки. следующее наименьшее значение принимается за следующий пень…

Теперь мы узнаем, насколько хорошо эта переменная сообщает нашему классу (насколько хорошо эта переменная предсказывает), это называется Количество слов.

эта культя допустила только одну ошибку, то есть пациент, вес которого равен 167 (меньше 176), страдает сердечным заболеванием, но наша культя говорит, что у этого пациента нет сердечного заболевания. нам нужно выяснить общую ошибку нашего пня, чтобы определить, насколько хорошо он предсказывает наши данные. Итак, общая ошибка пня - это сумма весов, связанных с неправильно классифицированный образец.

Таким образом, в нашем случае общая ошибка веса пня составляет 1/8. ПРИМЕЧАНИЕ: поскольку все веса образца в сумме составляют 1, общая ошибка всегда будет между 0 для идеального пня и 1 для ужасный пень !!

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

Мы можем нарисовать график, который обозначает количество, подставив кучу чисел от 0 до 1 для общей ошибки. синий цвет говорит нам о величине суммарной ошибки от 0 до 1., когда пень выполняет хорошую работу, а общая ошибка мала, тогда величина, скажем, будет относительно большим положительным значением (зеленая точка). когда пень не лучше при классификации (т. е. половина пней классифицирована правильно, а половина - неправильно) и общая ошибка = 0,5, то количество предположений будет равно нулю (синий точки). И когда пень выполняет плохую работу, а общая ошибка близка к единице (другими словами, пень всегда предсказывает неверное значение ), то количество say будет большим отрицательным значением (красная точка). В нашем случае количество say = 0,97. Таким образом, он отлично справляется с прогнозированием окончательной классификации.

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

Теперь, как обновить образец веса:

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

Таким образом, формула для определения веса новой выборки для неправильно классифицированной выборки:

Чтобы лучше понять, как эта деталь будет масштабировать вес предыдущего образца, давайте нарисуем график. синяя линия равна e величине силы say, когда количество say велико (т. е. последняя культя сослужила хорошую службу задание по классификации образцов) тогда мы масштабируем предыдущее значение веса образца с большим значением ( это означает, что новый вес образца будет намного больше старого) (redpoint) . И когда количество say относительно невелико (т. Е. Последняя культя плохо справилась с классификацией образцов) , тогда вес предыдущего образца масштабируется на относительно небольшое значение (это означает, что новая выборка будет немного больше старой) (зеленая точка). В нашем случае величина, скажем, 0,97, а значение веса новой выборки равно до 0,33 (что больше старого). так определяется значение веса новой выборки для неправильно классифицированной выборки.

Теперь мы увидим формулу для определения нового веса выборки для правильно классифицированной выборки:

Та же формула, но только со знаком минус. Таким образом, приведенная выше формула используется для определения новой формулы веса выборки для правильно классифицированной выборки. в нашем случае значение равно 0,05, что меньше, чем предыдущие значения веса выборки.

Итак, наконец, мы обновляем это значение веса и нормализуем вес нашего нового образца, чтобы они в сумме равнялись 1.

Так вот как работает Adaboost !!

Вот реализация на Python алгоритма Adaboost для классификации набора данных радужной оболочки глаза:

Итак, чтобы подвести итоги:

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

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

вот как работает Adaboost !!

Ссылка:

Код: