Що означає глибина взаємодії в ГБМ?


30

У мене виникло питання про параметр глибини взаємодії в gbm в R. Це може бути питання noob, за яке я вибачаюся, але як параметр, який, на мою думку, позначає кількість кінцевих вузлів у дереві, в основному вказує X-шлях взаємодія між предикторами? Просто намагаюся зрозуміти, як це працює. Крім того, я отримую досить різні моделі, якщо у мене є набір даних із скажімо дві різні факторні змінні порівняно з одним і тим же набором даних, за винятком цих двох змінних факторів, об'єднаних в один фактор (наприклад, рівні 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: Число вузлів, взаємодія.depth чи щось інше?
Джуліан

Це ряд розщеплень, що виконуються, починаючи з одного вузла (також глибина взаємодії).
випадково

1
Я думаю, що кожен спліт лише збільшує загальну кількість термінальних вузлів на 1. тому припустимо, що у дерева є лише один розкол, тоді він має 2 кінцевих вузла, тепер ви виконуєте розбиття на одному з попередніх термінальних вузлів, а потім є 3 термінали вузли зараз. тож приріст становить лише 1. Чи правильно я це зрозумів чи я щось неправильно зрозумів?
Лілі Лонг

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

2

У мене виникло питання про параметр глибини взаємодії в gbm в R. Це може бути питання noob, за яке я вибачаюся, але як параметр, який, на мою думку, позначає кількість кінцевих вузлів у дереві, в основному вказує X-шлях взаємодія між предикторами?

Зв'язок взаємодії.depth з кількістю кінцевих вузлів

Один, interaction.depthяк розглянути кількість розділених вузлів. interaction.depthФіксованій точці до призведе до вузлів з до + 1 кінцевих вузлів (минаючи вузли NA), тому ми маємо:

iнтеrаcтiон.геpтгод=#{ТеrмiналNогес}+1

Зв'язок взаємодії.depth з порядком взаємодії

Зв’язок між interaction.depthпорядком та взаємодією є більш втомливим.

Замість того , щоб міркувати з interaction.depth, давайте поміркуємо з числом термінальних вузлів, які ми будемо звані J .

Приклад. Скажімо, у вас є J = 4 кінцевих вузла (intera.depth = 3), ви можете:

  1. зробіть перший розділ на корені, потім другий розщеплення на лівому вузлі кореня і третій розділ на правому вузлі кореня. Порядок взаємодії для цього дерева буде 2.
  2. перший розділ зробіть на корені, потім другий розділить на лівому (відповідно правому) вузлі кореня, а третій розділить на цьому самому лівому (відповідно правому) вузлі. Порядок взаємодії для цього дерева буде 3.

Пмiн(J-1,н)

1

Попередня відповідь не вірна.

Пеньки матимуть interaction.depth 1 (і мати два листки). Але взаємодія.depth = 2 дає три листи.

Отже: NumberOfLeaves = взаємодія.depth + 1


0

Власне, попередні відповіді невірні.

Нехай K - взаємодія.depth, тоді кількість вузлів N і листя L (тобто кінцевих вузлів) відповідно задаються наступним чином:

N=2(К+1)-1L=2К
Попередні 2 формули легко продемонструвати: дерево глибиною K можна розглядати як таке, що має рівні K + 1 k, починаючи з 0 (рівень кореня) до K (рівень листя).

Кожен з цих рівнів має 2квузли. І загальна кількість дерев вузлів - це сума кількості вузлів на кожному рівні.

Математично:

N=к=0К2к)

що еквівалентно:

N=2(К+1)-1
(за формулою суми доданків геометричної прогресії).

0

Ви можете спробувати

таблиця (передбачити (gbm (y ~., data = TrainingData, розподіл = "гаусса", verbose = FALSE, n.trees = 1, усадка = 0,01, bag.fraction = 1, взаємодія.depth = 1), n.trees = 1))

і переконайтеся, що існує лише 2 унікальних прогнозованих значення. interact.depth = 2 отримає 3 чіткі передбачувані значення. І переконайте себе.


Не ясно, як це відповідає на питання.
Майкл Р. Черник
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.