Почему деревья решений не требуют вычислительных затрат?


38

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

Я неправильно понимаю, как работает двоичное разбиение? Или есть причина, по которой этот алгоритм не займет много времени?


1
+1 за вопрос. Вы можете начать проверять эту лекцию , стр. 15, используя алгоритм вместо . O(N)O(N2)
Haitao Du

Ответы:


40

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


10
Другими словами, это более или менее сопоставимо с бинарным поиском.
Роберт Харви

1
@ Роберт Харви, я не думаю, что, оптимизируя функции примесей в процессе подгонки, вы гарантируете или даже поощряете сбалансированное расщепление. Чтобы получить бинарный поиск, эквивалентный сложности поиска вам нужно будет принудительно применять или хотя бы поощрять сбалансированное расщепление. log2(N)
Лукас Робертс

2
Договорились, но принцип все еще держится. (Вот почему я использовал слова «более или менее»)
Роберт Харви

2

Есть некоторые различия между алгоритмами CART и C4.5 для построения деревьев решений. Например, CART использует Gini Impurity для выбора функций, в то время как C.4.5 использует энтропию Шеннона. Я не думаю, что различия имеют отношение к ответу, поэтому я не буду различать их.

Что делает деревья решений быстрее, чем вы думаете:

  1. Как уже говорили другие, эти алгоритмы являются однонаправленными. Они выполняют локальные оптимизации. В каждой ветви они выбирают правило, которое максимизирует / минимизирует любую метрику, которую они используют (Джини или Энтропия). Это означает, что они могут пропустить правила, когда использование логического оператора, например, andприведет к лучшему дереву. Это означает, что вы должны быть очень осторожны / умны при разработке функций. Например, скажем, вы пытаетесь предсказать, сколько людей пьют, возможно, вы захотите представить такие вещи, как инженер new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night). Деревья решений могут пропускать такие правила или придавать им меньшее значение, чем должны.
  2. Что еще более важно, метрики, используемые деревьями решений, могут быть вычислены постепенно. Скажем, у вас есть функция . В дереве решений не требуется вычислять метрику для , затем снова вычислять метрику для , затем снова для и т. Д. Джини и энтропия были выбраны потому, что они могут быть вычислены постепенно. Прежде всего, каждая функция сортируется, поэтому у вас есть . Во-вторых, когда вы вычисляете , вы можете использовать результат, чтобы легко вычислить . Это как в среднем. Если у вас есть среднее значение выборки, , и я даю вам другое значение , вы можете дешево обновить свое среднее значение,X1={3,1.5,2.5,2,1}X <= 1X <= 1.5X <= 2X1={1,1.5,2,2.5,3}X <= 1X <= 1.5x¯vx¯nx¯+vn+1 . Коэффициент Джини рассчитывается как доля сумм, которая может быть легко вычислена для выборки.
  3. Деревья решений могут быть распараллелены. Каждый узел состоит из двух независимых ветвей. Поэтому в каждой ветви у вас есть возможность распараллелить создание дерева. Кроме того, сам выбор функции также может быть распараллелен. Это то, что делает пакеты такими xgboostбыстрыми. Повышение градиента является последовательным и не может быть распараллелено, но сами деревья могут.

1

Просто чтобы обогатить ответы,

Иерархические оси параллельных решений быстро (CART, C4.5), но есть и другие альтернативы, такие как неиерархические деревья решений или те, которые выполняют косые разбиения, которые не являются, хотя они могут быть более точными. Проверьте следующие ссылки, если вы заинтересованы (они не являются исчерпывающим выбором).

Non-иерархическая:

Грубингер, Т., Зейлейс, А. и Пфайффер, К.-., 2014. Evtree: Эволюционное изучение глобально оптимальных деревьев классификации и регрессии в RJStat.Software 61 (1), 1-29.

Косой раскол:

Мурти, С. К., Касиф, С. и Зальцберг, С., 1994. Система для индукции косых деревьев решений. J. Artif. Интелл. Местожительство 2 (1), 1-32. http://dx.doi.org/doi:10.1613/jair.63 . Cantú-Paz, E. and Kamath, C., 2003. Индуцирование наклонных деревьев решений с помощью эволюционных алгоритмов. IEEE Trans. Evol. Вычи. 7 (1), 54-68. http://dx.doi.org/10.1109/TEVC.2002.806857 . Хит, Д., Касиф, С. и Зальцберг, С., 1993. Индукция косых деревьев решений. J. Artif. Интелл. Местожительство 2 (2), 1002-1007.

Удачи!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.