2015-06-13 2 views
2

Я пытаюсь создать порядкового регрессионного дерево в R, используя rpart с предсказателей в основном является порядковые данные, хранящиеся в factor в R.Использование порядковых переменных в rpart и каретку без преобразования в фиктивный категориальные переменные

Когда я создал дерево с помощью rpart, я получаю что-то вроде этого:

enter image description here

где значения являются значения коэффициента (например A170 имеет метки в пределах от -5 до 10).

Однако, когда я использую caret для train данных, используя rpart, когда я извлекаю окончательную модель, у дерева больше нет порядковых предикторов. Ниже выходного образец дерева

enter image description here

Как вы видите выше, это, кажется, порядковые переменная A170 теперь была преобразована в множественное фиктивное категорическое значение, то есть во втором дереве A17010 фиктивная для A170 стоимости 10.

Итак, возможно ли сохранить ординальные переменные вместо преобразования факторных переменных в несколько двоичных переменных индикатора при подгонке деревьев с помощью пакета caret?

ответ

5

Давайте начнем с воспроизводимым например:

set.seed(144) 
dat <- data.frame(x=factor(sample(1:6, 10000, replace=TRUE))) 
dat$y <- ifelse(dat$x %in% 1:2, runif(10000) < 0.1, ifelse(dat$x %in% 3:4, runif(10000) < 0.4, runif(10000) < 0.7))*1 

Как вы заметили, обучение с rpart функциональных групп уровни фактора вместе:

library(rpart) 
rpart(y~x, data=dat) 

enter image description here

Я был в состоянии воспроизвести пакет каретки, разделяющий факторы на их индивидуальные уровни, используя интерфейс формулы для train f соборование:

library(caret) 
train(y~x, data=dat, method="rpart")$finalModel 

enter image description here

Решение, которое я нашел, чтобы избежать факторов расщепления на уровень для ввода исходных кадров данных в функции train вместо того чтобы использовать формулу интерфейса:

train(x=data.frame(dat$x), y=dat$y, method="rpart")$finalModel 

enter image description here