Почему Adaboost с деревьями решений?

11

Я немного читал об улучшении алгоритмов для задач классификации и Adaboost в частности. Я понимаю, что цель Adaboost состоит в том, чтобы взять нескольких «слабых учеников» и, через набор итераций по обучающим данным, подтолкнуть классификаторы к тому, чтобы научиться предсказывать классы, в которых модели (ы) постоянно допускают ошибки. Однако мне было интересно, почему так много чтений, которые я сделал, использовали деревья решений в качестве слабого классификатора. Есть ли для этого особая причина? Существуют ли определенные классификаторы, которые делают особенно хороших или плохих кандидатов на Adaboost?

kylerthecreator
источник
Простейшим учеником, которого вы можете использовать, является дерево решений с глубиной = 1. Может быть, поэтому каждый использует это в своих примерах.
Аарон

Ответы:

17

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

  1. Деревья решений являются нелинейными. Увеличение с помощью линейных моделей просто не работает хорошо.
  2. Слабый ученик должен быть постоянно лучше, чем случайные догадки. Обычно вам не нужно настраивать параметры для дерева решений, чтобы получить такое поведение. Обучение SVM действительно требует поиска параметров. Поскольку данные повторно взвешиваются на каждой итерации, вам, вероятно, потребуется выполнить поиск другого параметра на каждой итерации. Таким образом, вы увеличиваете объем работы, которую вы должны сделать с большим отрывом.
  3. Деревья решений достаточно быстро обучаются. Так как мы собираемся построить 100 или 1000 из них, это хорошая собственность. Их также можно быстро классифицировать, что опять-таки важно, когда вам нужно запустить 100 или 1000, прежде чем вы сможете вывести свое решение.
  4. Изменяя глубину, вы получаете простой и легкий контроль над компромиссом смещения / дисперсии, зная, что повышение может уменьшить смещение, но также значительно уменьшает дисперсию. Известно, что бустинг подходит больше, поэтому в этом отношении полезна легкая настройка.
Raff.Edward
источник
1

У меня нет ответа из учебника. Однако вот некоторые мысли.

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

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

Я не вижу смысла использовать деревья с процедурами повышения. Однако короткие деревья просты, легко реализуемы и понятны. Тем не менее, я думаю, что для того, чтобы быть успешным в процедуре повышения, ваш слабый ученик должен иметь низкую дисперсию, должен быть жестким, с очень малой степенью свободы. Например, я не вижу смысла иметь слабого ученика в нейронной сети.

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

rapaio
источник