Разбиение деревьев в R: партия против rpart


15

Прошло много времени с тех пор, как я посмотрел на разделение деревьев. В прошлый раз, когда я делал подобные вещи, мне нравилась вечеринка в R (созданная Hothorn). Идея условного вывода через выборку имеет для меня смысл. Но у rpart тоже была апелляция.

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

Я также хотел бы иметь некоторый ручной контроль над тем, какие узлы разделяются, как рекомендовано в Zhang & Singer (2010) Рекурсивное разбиение и приложения . Бесплатное программное обеспечение, которое идет с этой книгой, позволяет это, но в остальном довольно примитивно в своем пользовательском вводе.

Любые рекомендации или предложения?

Ответы:


8

Я согласен с @Iterator, что методология проще объяснить для rpart. Однако, если вы ищете легко объяснимые правила, группа (без деревьев в мешках) ничего не теряет в объяснении прогноза - у вас все еще есть одно дерево. Если вам также интересно взглянуть на движущие факторы исходной переменной (а не только на чистую предсказательную силу), я все равно думаю, что партия - это путь, объясняющий, что дерево решений (например, rpart) может быть весьма предвзятым в выборе того, какой переменные важны и как это создает расщепления. Партия использует тесты перестановки и статистически определяет, какие переменные являются наиболее важными и как делаются разбиения. Таким образом, вместо того, чтобы склоняться к категориальным переменным со многими уровнями, как, например, rpart, участник использует статистические тесты, чтобы найти наилучшую структуру.


1
Хороший ответ. Я думаю, что у вас есть очень веская причина, почему вечеринка лучше для продвинутой аудитории, и почему это хорошая идея для обучения аудитории, чтобы помочь им принять использование вечеринки.
Итератор

4

[NB: см. Обновление 1 ниже.] Я считаю, что методологию rpartгораздо проще объяснить, чем party. Последний, однако, гораздо более сложный и, вероятно, даст лучшие модели. Способ, который я иногда объясняю, partyсостоит в том, чтобы говорить об этом как о основе для создания локальных линейных (или GLM) моделей. Я подкрепляю это тем, что указываю, что результаты для rpartпостоянны для всех элементов, попадающих в конечный узел, то есть для блока / области, ограниченной разбиениями. Даже если могут быть улучшения с помощью локальных моделей, вы не получите ничего, кроме постоянного прогноза.

Напротив, partyразвивает расколы, чтобы потенциально оптимизировать модели для регионов. На самом деле он использует критерии, отличные от оптимальности модели, но вам нужно измерить свою способность объяснить разницу, чтобы определить, можете ли вы объяснить это хорошо. Документы для него довольно доступны для исследователя, но могут быть довольно сложными для тех, кто не желает рассматривать более простые методы, такие как случайные леса, бустинг и т. Д. Математически, я думаю, что partyэто более изощренно ... Тем не менее, модели CART легче объяснить, как с точки зрения методологии и результатов, и они обеспечивают достойную ступеньку для внедрения более сложных моделей на основе дерева.

Короче говоря, я бы сказал, что вы должны сделать rpartдля ясности, и вы можете использовать partyдля точности / производительности, но я бы не стал представлятьparty без представления rpart.


Обновление 1. Я основал свой ответ на моем понимании, partyкак это было год или два назад. Он немного вырос, но я бы изменил свой ответ, сказав, что я все еще рекомендую rpartего краткость и унаследованность, если «ненастоящий» будет важным критерием для вашего клиента / сотрудника. Тем не менее, я бы попытался перейти на использование большего количества функциональных возможностей partyпосле того, как представил кого-то rpart. Лучше начать с малого, с функций потерь, критериев расщепления и т. Д. В простом контексте, прежде чем вводить пакет и методологию, включающие гораздо более сложные концепции.


2
Я думаю, вы немного запутались в том, что partyможет сделать пакет. Чистая partyфункция создает только одно простое дерево, как rpartпри голосовании большинства в листьях. mobФункция partyявляется то , что строит дерева с более сложными моделями , в листах (и выбирает шпагат на основе нестабильности параметров.)
Shea Parkes

1
@SheaParkes Ты прав. Прошло некоторое время, и я не уверен, использовал ли я только mobили остальная часть пакета сильно выросла - я не помню, например, случайные леса раньше. Я пересмотрю свой ответ ...
Итератор

2
И на самом деле, я тоже немного забыл. Это ctreeсделать одно дерево, cforestсделать случайный лес и mobсделать листья на основе модели. И, кстати, cforest - это весело, но очень медленно предсказывать.
Ши Паркс

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

@PeterFlom Я думаю, что, mobвозможно, был там с самого начала или, по крайней мере, пришел после ctree, я полагаю. Это было с 2009 года или ранее. Во всяком случае, просто показывает, что мы все можем узнать что-то новое на SE. :)
Итератор
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.