如何组合2个或更多不同模型来预测一个响应变量?

时间:2013-01-22 07:50:50

标签: r model

我认为一个独立的变量是如此重要和主要,我只想用它来构建模型并使用其他变量来构建其他模型。

比如在kaggle.com上的泰坦尼克号比赛中, 我尊重sex作为主要变量,并用它来构建SVM模型。 然后我使用了其他变量,例如farealoneage来构建cforest模型。

但要预测survival,我需要他们两个。 那我该怎么办呢? lm()函数似乎不适用于S4 class

我的代码在这里:

## Modeling Begin

predictions <- NULL
NT <- 1000
## formula3 for 'gender' model using SVM
formula3 <- as.factor(survived) ~ pclass + sex
## formula1 and formula2 both for rest features without gender model
formula1.cf <- as.formula(as.factor(survived) ~ pclass  + alone + fare + age)
formula2.cf <- as.formula(          survived  ~ pclass  + alone + fare + age)

## Train SVM(only for gender model) and Predict
library(e1071)
formula3 <- as.factor(survived) ~ pclass + sex
tune <- tune.svm(formula3, data=clean.train, gamma=10^(-4:-1), cost=10^(1:4))
# summary(tune)
tune$best.parameters

model.svm <- svm(formula3, 
               data=clean.train, 
               type="C-classification", 
               kernel="radial", 
               probability=T, 
               gamma=tune$best.parameters$gamma, 
               cost=tune$best.parameters$cost)

## Train cForest
model.cforest <- cforest(formula2.cf, data=clean.train, 
                           control=cforest_unbiased(ntree=NT, trace=F))
谢谢你!

1 个答案:

答案 0 :(得分:0)

我认为现在有一个组合(...)函数添加到R的randomForest包中,该包专门用于组合多个随机树模型。还有一些像下面的代码一样简单的东西可以组合线性和randomForest模型。它就像加权每个模型的影响一样简单。

适合日志回归和随机森林:

fit.lr = glm(y~x1+x2+x3+x4, family = binomial, data = d)
fit.rf = randomForest(as.factor(y)~x1+x2+x3+x4, data = d, ntree = 100, proximity = FALSE)

在x1,x2中创建函数以在设置x3,x4 at origin

时给出模型预测
g.lr.sig = function(x, y) predict(fit.lr, data.frame(x1 = x, x2 = y, x3 = 0, x4 = 0), type = "response") <br>
g.rf.sig = function(x, y) predict(fit.rf, data.frame(x1 = x, x2 = y, x3 = 0, x4 = 0), type = "prob")[, 2] <br>
g.en.sig = function(x, y) 0.5*g.lr.sig(x, y) + 0.5*g.rf.sig(x, y)<br>

我希望有所帮助。