Невероятно новый для использования randomForest
статистический пакет здесь.R - RandomForest с двумя переменными результата
Я пытаюсь запустить модель с 2 переменными ответа и 7 переменными-предикторами, но я не могу показаться из-за длин переменных ответа и/или характера подгонки модели с 2 переменными ответа.
Давайте предположим, что это мои данные и модель:
> table(data$y1)
0 1 2 3 4
23 43 75 47 21
> length(data$y1)
0 4
> table(data$y2)
0 2 3 4
104 30 46 29
> length(data$y2)
0 4
m1<-randomForest(cbind(y1,y2)~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
Когда я запускаю эту модель, я получаю эту ошибку:
Error in randomForest.default(m, y, ...) :
length of response must be the same as predictors
Я сделал некоторые поиск неисправностей, и обнаружили, что cbind()
два ответа переменные просто объединяют свои значения, удваивая исходную длину и, возможно, приводя к указанной выше ошибке. В качестве примера,
length(cbind(y1,y2))
> 418
t(lapply(data, length()))
> a b c d e f g y1 y2
209 209 209 209 209 209 209 209 209
Затем я попытался решить эту проблему, запустив randomForest
индивидуально по каждому из переменных отклика, а затем применить combine()
на моделях регрессии, но наткнулся на эти вопросы:
m2<-randomForest(y1~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
m3<-randomForest(y2~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
combine(m2,m3)
Warning message:
In randomForest.default(m, y, ...) :
The response has five or fewer unique values. Are you sure you want to do regression?
Затем я решил обработать модели randomForest
в качестве моделей классификации и применить as.factor()
к обеим переменным ответа перед запуском randomForest
, но затем наткнулся на эту новую проблему:
m4<-randomForest(as.factor(y1)~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
m5<-randomForest(as.factor(y2)~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
combine(m4,m5)
Error in rf$votes + ifelse(is.na(rflist[[i]]$votes), 0, rflist[[i]]$votes) :
non-conformable arrays
Мое предположение, что я не могу combine()
классификационных моделей.
Надеюсь, что мой запрос о попытке запустить многомерную модель случайного леса имеет смысл. Дайте мне знать, если возникнут дополнительные вопросы. Я также могу вернуться и внести коррективы.
Когда вы говорите две переменные исхода вы имеете в виду бинарную классификацию, например, A vs B, или вы говорите, что переменная ответа одна - это A vs B, а переменная ответа 2 - это C vs D (и, по существу, предсказывает четыре результата в целом)? Потому что мы не можем видеть ваши данные несколько сложнее. – zacdav
@zacdav Хороший вопрос. Каждая переменная ответа имеет 5 различных категорий. Надеюсь, это ответит на ваш вопрос. Я сделаю корректировки в исходном сообщении. –
В этом случае вы можете быть в порядке, объединив два столбца ответа - что-то, о чем следует помнить, это потенциально 25 прогнозируемых результатов классификации, и если количество выборок будет низким, вы вряд ли создадите эффективную модель. Я не знаю, будет ли это иначе, а просто создав две модели, вы можете независимо оценить прогностическую способность каждого ответа, а затем просто запустить две модели и снова объединить их результат для каждого образца независимо. это обеспечило бы то, что вы хотели из 'comb'. – zacdav