ensemble learning是特定分类器的许多实例的示例,例如决策树分类器;或者它是几个分类器的混合,如神经网络,决策树,SVM等等?
我已经在Bagging
集体学习者的wikipedia's上进行了调查。它说:
装袋导致对不稳定程序的改进" (Breiman,1996),其中包括神经网络,分类和回归树,以及线性回归中的子集选择(Breiman,1994)。
我对此描述感到困惑。我也研究了MATLAB的implementation集成算法。例如这一个:
load fisheriris
ens = fitensemble(meas,species,'AdaBoostM2',100,'Tree')
meas
和species
是fitensemble
函数的输入。在此示例中,它使用AdaBoostM2
类型为Tree
的弱学习器,并且正在使用100
个Neural Net, KNN, Naive Bayes
。如何解决这个函数的这个简单实例,以表明集合学习用于将fitensemble
等不同的分类器组合在一起?
任何人都可以解释一下实际的集合学习是什么以及MATLAB在实现{{1}}函数时尝试做什么?
答案 0 :(得分:12)
ensemble learning的基本思想是组合多个模型以提高预测性能。它们被认为是元算法,旨在在现有学习算法的基础上工作。有各种方法:
Bagging(代表 B ootstrap Agg 注册)会生成一组模型,每个模型都会对数据进行随机抽样({{ 3}} bootstrap:示例N替换实例)。来自这些模型的预测被组合/聚合以使用平均产生最终预测。
resampling:我们的想法是随机化学习算法,例如在应用训练算法之前随机选择要素子集(例如,考虑Random Subspace)。每个模型都是根据投影到随机选择的子空间的数据进行训练的。然后通过简单的多数投票将模型的输出结合起来。
Random Forest:也建立在投票/平均多个模型的概念之上,但它会根据模型的性能对模型进行加权。它以迭代的方式构建模型,鼓励新模型成为早期模型错误分类的实例的“专家”。如果基础学习算法不太复杂(弱学习者),则提升效果最佳。此算法有多种变体(Boosting,AdaBoost,GentleBoost,LogitBoost等。)
LPBoost:结合多个基础学习者的预测(通常是不同类型:kNN,ANN,SVM等),不像以前那样使用投票,而是使用元学习者(a模型训练基础模型的输出)。因此,基础学习者的预测作为输入数据提供给下一层的元学习者,以产生最终预测。
Stacking是一个MATLAB函数,用于为分类和回归构建fitensemble
。它支持三种方法:装袋,增强和子空间。您可以选择三种可用的弱学习者:ensemble learner(真实decision tree),判别分析(decision stump和linear)或quadratic分类器。
注意:除
Subspace
方法外,所有提升和装袋算法都基于k-nearest neighbor。子空间可以使用tree learners或discriminant analysis个学习者。
例如,以下代码使用训练数据集X
上安装的k-nearest neighbor方法和相应的类{训练决策树集合分类器(由100棵树组成) {1}}。
Y
(ens = fitensemble(X, Y, 'AdaBoostM1', 100, 'Tree')
部分表示二元分类器,对于多类问题有扩展的M1
版本)