我正在研究随机森林分类.
我发现"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
我是以编程方式为DataGridColumn类似的绑定:
var path = "DictObj[" + key_str + "]";
column.Binding = new Binding(path);
Run Code Online (Sandbox Code Playgroud)
它通常工作正常,但是当key_str包含commma时,列中的单元格什么都不显示.我试过(没有太多的考虑)var path = "'...'","\'...\'","{}{...}","'{}...'",或"DictObj[[" + key_str + "]]",但不成功.
因为key_str它也用于显示目的,我不希望它删除它的逗号.任何的想法?