我正在研究随机森林分类.
我发现"party"包中的cforest通常比"randomForest"表现更好.
然而,似乎cforest容易过度装配.
这是一个随机数据集,包括二进制因子的响应和从rnorm()生成的10个数值变量.
# Sorry for redundant preparation.
data <- data.frame(response=rnorm(100))
data$response <- factor(data$response < 0)
data <- cbind(data, matrix(rnorm(1000), ncol=10))
colnames(data)[-1] <- paste("V",1:10,sep="")
Run Code Online (Sandbox Code Playgroud)
执行cforest,使用无偏的参数集(可能推荐).
cf <- cforest(response ~ ., data=data, controls=cforest_unbiased())
table(predict(cf), data$response)
# FALSE TRUE
# FALSE 45 7
# TRUE 6 42
Run Code Online (Sandbox Code Playgroud)
对无意义数据的预测性能相当好.
另一方面,randomForest诚实地说.
rf <- randomForest(response ~., data=data)
table(predict(rf),data$response)
# FALSE TRUE
# FALSE 25 27
# TRUE 26 22
Run Code Online (Sandbox Code Playgroud)
这些差异来自哪里?
我担心我会以错误的方式使用cforest.
让我在cforest中加入一些额外的观察:
我很感激你的意见.
有些人想知道为什么训练数据集应用于predict().
我没有准备任何测试数据集,因为预测是针对OOB样本进行的,而cforest则不然.
cf http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm
通过研究分类器在训练集上的表现,您无法了解分类器的真实性能.此外,由于没有真正的模式可以找到,你无法真正判断过度拟合是否更糟cforest,或者随意猜测randomForest.你可以说的是,这两种算法遵循不同的策略,但是如果你在新的看不见的数据上测试它们,那么两者都可能会失败.
估计分类器性能的唯一方法是在外部数据上测试它,这不是培训的一部分,在你知道有一种模式可以找到的情况下.
一些评论:
| 归档时间: |
|
| 查看次数: |
5402 次 |
| 最近记录: |