什么时候不应该使用集成分类器?


17

通常,在目标是准确预测样本外类成员身份的分类问题中,我什么时候不应该使用集合分类器?

这个问题与为什么不总是使用集成学习紧密相关。这个问题问为什么我们不一直使用合奏。我想知道是否存在某些情况,即合奏比非合奏更糟(不仅仅是“不更好,更浪费时间”)。

通过“整体分类器”,我专门指的是诸如AdaBoost和随机森林之类的分类器,而不是例如滚动自带的增强支持向量机。


2
如果您在各个方法之间没有多样性,那么我不会使用合奏方法。换句话说,当您组合多种方法时,合奏很有用。
天气预报员

2
@forecaster我不禁添加关于作者所谓的“好”和“坏”多样性页面的很好的论文。bangor.ac.uk/〜mas00a / papers / gblkMCS10.pdf在合奏的背景下
Vladislavs Dovgalecs

@xeon不错的文章。不管机器学习方法是随机森林还是整体(组合)不同的方法,多样性绝对有帮助。这背后有很强的理论,被称为b i o l o g i c a l l y i n s p i r e dñ一种Ťü[RËb一世ØØG一世C一种ÿ 一世ñsp一世[RËd
预报员

Answers:


7

最接近真实数据生成过程的模型将始终是最佳模型,并且将击败大多数集成方法。因此,如果数据来自线性过程,lm()将比随机森林好得多,例如:

    set.seed(1234)
p=10
N=1000
#covariates
x = matrix(rnorm(N*p),ncol=p)
#coefficients:
b = round(rnorm(p),2)
y = x %*% b + rnorm(N)
train=sample(N, N/2)
data = cbind.data.frame(y,x)
colnames(data) = c("y", paste0("x",1:p))
#linear model
fit1 = lm(y ~ ., data = data[train,])
summary(fit1)
yPred1 =predict(fit1,data[-train,])
round(mean(abs(yPred1-data[-train,"y"])),2)#0.79

library(randomForest)
fit2 = randomForest(y ~ ., data = data[train,],ntree=1000)
yPred2 =predict(fit2,data[-train,])
round(mean(abs(yPred2-data[-train,"y"])),2)#1.33

13

当您的模型需要可解释和可解释时,我不建议使用集成分类器。有时您需要预测预测的解释。

当您需要使人们相信预测值得相信时,高度准确的模型可能会很有说服力,但是当方法对于其舒适度而言过于复杂时,我很难说服人们对预测采取行动。

以我的经验,大多数人都喜欢线性加法模型,可以手动评分的模型,如果您尝试解释自适应增强,超平面和第5级交互作用,它们的反应就像是在给他们魔术一样。

另一方面,人们可以对模型的复杂性感到满意,但仍希望内部化一些见解。例如,科学家可能不会将黑匣子模型视为人类知识的进步,即使该模型非常准确。

可变重要性分析可以帮助您获得洞察力,但是如果整体比线性加性模型更准确,则整体可能正在利用某些非线性和交互作用,而这些重要性和变量重要性分析无法完全解决。


不是我追求的,但是好点。+1
Shadowtalker

3

我想补充一下布拉诺的答案。乐团可以极具竞争力,并能提供很好的效果。例如,在学术界,这才是最重要的。在工业中,集成可能难以实施/维护/修改/移植。戈夫·欣顿(Goef Hinton)在“黑暗​​知识”上的工作正是关于这一点的:如何将大型整体的“知识”转化为易于移动的模型。他指出,集成在测试时很糟糕:它们是高度冗余的,因此计算时间可能值得关注。

他的团队取得了一些有趣的结果,我建议您查看他的出版物或至少幻灯片。如果我的记忆力不错,那么这就是2013年或2014年的热门话题之一。

关于黑暗知识的幻灯片可以在这里找到:http : //www.ttic.edu/dl/dark14.pdf

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.