2013-07-04 2 views
1

Я хотел бы создать дерево регрессии, подобное изображению на картинке. Дерево было сделано в кубисте, но у меня нет этой программы. Я использую R и Python. Кажется, что он отличается от R пакетов rpart или дерева тем, что конечные узлы представляют собой линейные формулы, а не только среднее значение. Есть ли способ сделать это с помощью R или другого бесплатного программного обеспечения?Как мне создать дерево регрессии?

На картинке NDVI, B1, B2 и т. Д. Являются переменными. Изображение от this website.

regression tree

ответ

4

Cubist является R порт коды Кубистской GPL, C выпущенного RuleQuest на http://rulequest.com/cubist-info.html.

Используя пример из help('cubist') и оригинального package announcement

library(Cubist) 
library(mlbench) 
data(BostonHousing) 

## 1 committee, so just an M5 fit: 
mod1 <- cubist(x = BostonHousing[, -14], y = BostonHousing$medv) 
summary(mod1) 

# Call: 
# cubist.default(x = BostonHousing[, -14], y = BostonHousing$medv) 
# 
# 
# Cubist [Release 2.07 GPL Edition] Thu Jul 04 11:56:33 2013 
# --------------------------------- 
# 
# Target attribute `outcome' 
# 
# Read 506 cases (14 attributes) from undefined.data 
# 
# Model: 
# 
# Rule 1: [101 cases, mean 13.84, range 5 to 27.5, est err 1.98] 
# 
# if 
# nox > 0.668 
# then 
# outcome = -1.11 + 2.93 dis + 21.4 nox - 0.33 lstat + 0.008 b 
# - 0.13 ptratio - 0.02 crim - 0.003 age + 0.1 rm 
# 
# Rule 2: [203 cases, mean 19.42, range 7 to 31, est err 2.10] 
# 
# if 
# nox <= 0.668 
# lstat > 9.59 
# then 
# outcome = 23.57 + 3.1 rm - 0.81 dis - 0.71 ptratio - 0.048 age 
# - 0.15 lstat + 0.01 b - 0.0041 tax - 5.2 nox + 0.05 crim 
# + 0.02 rad 
# 
# Rule 3: [43 cases, mean 24.00, range 11.9 to 50, est err 2.56] 
# 
# if 
# rm <= 6.226 
# lstat <= 9.59 
# then 
# outcome = 1.18 + 3.83 crim + 4.3 rm - 0.06 age - 0.11 lstat - 0.003 tax 
# - 0.09 dis - 0.08 ptratio 
# 
# Rule 4: [163 cases, mean 31.46, range 16.5 to 50, est err 2.78] 
# 
# if 
# rm > 6.226 
# lstat <= 9.59 
# then 
# outcome = -4.71 + 2.22 crim + 9.2 rm - 0.83 lstat - 0.0182 tax 
# - 0.72 ptratio - 0.71 dis - 0.04 age + 0.03 rad - 1.7 nox 
# + 0.008 zn 
# 
# 
# Evaluation on training data (506 cases): 
# 
# Average |error|    2.10 
# Relative |error|    0.32 
# Correlation coefficient  0.94 
# 
# 
# Attribute usage: 
# Conds Model 
# 
# 80% 100% lstat 
# 60% 92% nox 
# 40% 100% rm 
# 100% crim 
# 100% age 
# 100% dis 
# 100% ptratio 
# 80% tax 
# 72% rad 
# 60% b 
# 32% zn 
# 
# 
# Time: 0.0 secs 
+0

Wow это отличная новость! Примеры «результатов» выглядят точно так, как я хочу. Я не могу дождаться, чтобы погрузиться в это. Спасибо! – John

+0

Так в чем же разница между методом Кубиста и алгоритмом M5? Я думал, что фактическая диаграмма, вставленная в вопросе выше, является только алгоритмом M5 (деревом модели регрессии) –

+0

Как я могу генерировать визуальное дерево на основе тех правил, которые кубистские выходы? Есть ли программа, которая может это сделать, или мне нужно сделать это вручную, используя программу, такую ​​как краска или какой-либо редактор графиков в Интернете? благодаря – posixKing

0

обзор осуществления R из кубистических можно найти here.

Из этого обзора первая часть «алгоритма согласуется с подходом« M5 »или« Дерево моделей ».

В частности, различие в том, что:

"Кубизм обобщает эту модель, чтобы добавить прививки (когда комитеты> 1) и корректировка экземпляра на основе"

Смежные вопросы