Что означает глубина взаимодействия в GBM?


30

У меня был вопрос о параметре глубины взаимодействия в gbm в R. Это может быть вопрос noob, за который я прошу прощения, но как параметр, который, я считаю, обозначает количество терминальных узлов в дереве, в основном указывает X-way взаимодействие между предикторами? Просто пытаюсь понять, как это работает. Кроме того, я получаю довольно разные модели, если у меня есть набор данных, скажем, с двумя разными факторными переменными по сравнению с одним и тем же набором данных, за исключением того, что эти две факторные переменные объединены в один фактор (например, уровни X в факторе 1, уровни Y в факторе 2, объединенная переменная имеет X * Y факторы). Последнее значительно более предсказуемо, чем первое. Я думал, что увеличение глубины взаимодействия поднимет эти отношения.

Ответы:


22

Оба предыдущих ответа неверны. Пакет GBM использует interaction.depthпараметр в качестве количества разбиений, которые он должен выполнить на дереве (начиная с одного узла). Поскольку каждое разбиение увеличивает общее количество узлов на 3 и количество терминальных узлов на 2 (узел {левый узел, правый узел, узел NA}), общее количество узлов в дереве будет равно 3 N + 1, а число конечных узлов 2 N + 1 . Это можно проверить, посмотрев на вывод функции.3N+12N+1pretty.gbm.tree

Поведение вводит в заблуждение, поскольку пользователь действительно ожидает, что глубина будет глубиной результирующего дерева. Нет.


Что здесь N: количество узлов, взаимодействие. Глубина или что-то еще?
Джулиан

Это количество выполненных разделений, начиная с одного узла (а также глубины взаимодействия).
случайно

1
Я думаю, что каждое разделение только увеличивает общее количество терминальных узлов на 1. Так что предположим, что у дерева есть только одно разделение, затем оно имеет 2 конечных узла, теперь вы выполняете разделение на одном из предыдущих терминальных узлов, а затем есть 3 терминала узлы сейчас. так что приращение равно 1. Я правильно понял или я что-то неправильно понял?
Лили Лонг

1
@LilyLong Это может быть не сразу ясно, но gbm фактически разделяет узлы на три, третье дочернее значение группирования значений NA (т.е. те, которые нельзя напрямую сравнить с данным значением). Это означает, что каждое разделение увеличивает количество узлов на два. Пакет мог эволюционировать с тех пор, как я последний раз использовал его, чтобы избежать создания третьего потомка, поэтому, пожалуйста, проверьте это еще раз, запустив функцию pretty.gbm.tree.
случайно

2

У меня был вопрос о параметре глубины взаимодействия в gbm в R. Это может быть вопрос noob, за который я прошу прощения, но как параметр, который, я считаю, обозначает количество терминальных узлов в дереве, в основном указывает X-way взаимодействие между предикторами?

Связь между взаимодействие.депт и числом терминальных узлов

interaction.depthinteraction.depth

interaction.depth=#{TermiNaLNоdеs}+1

Связь между взаимодействие.depth и порядок взаимодействия

Связь между interaction.depth и порядок взаимодействия является более утомительным.

Вместо того , чтобы рассуждать с interaction.depth, давайте порассуждаем с числом терминальных узлов, которые мы будем называемые J .

Пример: допустим, у вас есть J = 4 терминальных узла (взаимодействия.depth = 3), которые вы можете:

  1. выполните первое разделение на корне, затем второе разделение на левом узле корня и третье разделение на правом узле корня. Порядок взаимодействия для этого дерева будет 2.
  2. выполните первое разделение на корне, затем второе разделение на левом (соответственно правом) узле корня и третье разделение на этом самом левом (соответственно правом) узле. Порядок взаимодействия для этого дерева будет 3.

пмяN(J-1,N)

1

Предыдущий ответ не верен.

У пней будет взаимодействие. Глубина 1 (и два листа). Но Interaction.depth = 2 дает три листа.

Итак: NumberOfLeaves = взаимодействия.depth + 1


0

На самом деле предыдущие ответы неверны.

Nзнак равно2(К+1)-1Lзнак равно2К

2К

Nзнак равноΣКзнак равно0К2К)

что эквивалентно:

Nзнак равно2(К+1)-1
(по формуле суммы слагаемых геометрической прогрессии).

0

Можешь попробовать

таблица (прогноз (gbm (y ~., данные = TrainingData, распределение = "гауссовский", подробный = FALSE, n.trees = 1, усадка = 0,01, bag.fraction = 1, Interaction.depth = 1), n.trees = 1))

и увидите, что есть только 2 уникальных прогнозируемых значения. Interaction.depth = 2 даст вам 3 различных предсказанных значений. И убедить себя.


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