理解集成学习及其在Matlab中的实现

时间:2014-05-22 18:00:54

标签: algorithm matlab machine-learning decision-tree ensemble-learning

ensemble learning是特定分类器的许多实例的示例,例如决策树分类器;或者它是几个分类器的混合,如神经网络,决策树,SVM等等?

我已经在Bagging集体学习者的wikipedia's上进行了调查。它说:

  

装袋导致对不稳定程序的改进" (Breiman,1996),其中包括神经网络,分类和回归树,以及线性回归中的子集选择(Breiman,1994)。

我对此描述感到困惑。我也研究了MATLAB的implementation集成算法。例如这一个:

load fisheriris
ens = fitensemble(meas,species,'AdaBoostM2',100,'Tree')

measspeciesfitensemble函数的输入。在此示例中,它使用AdaBoostM2类型为Tree的弱学习器,并且正在使用100Neural Net, KNN, Naive Bayes。如何解决这个函数的这个简单实例,以表明集合学习用于将fitensemble等不同的分类器组合在一起?

任何人都可以解释一下实际的集合学习是什么以及MATLAB在实现{{1}}函数时尝试做什么?

1 个答案:

答案 0 :(得分:12)

ensemble learning的基本思想是组合多个模型以提高预测性能。它们被认为是元算法,旨在在现有学习算法的基础上工作。有各种方法:

  • Bagging(代表 B ootstrap Agg 注册)会生成一组模型,每个模型都会对数据进行随机抽样({{ 3}} bootstrap:示例N替换实例)。来自这些模型的预测被组合/聚合以使用平均产生最终预测。

  • resampling:我们的想法是随机化学习算法,例如在应用训练算法之前随机选择要素子集(例如,考虑Random Subspace)。每个模型都是根据投影到随机选择的子空间的数据进行训练的。然后通过简单的多数投票将模型的输出结合起来。

  • Random Forest:也建立在投票/平均多个模型的概念之上,但它会根据模型的性能对模型进行加权。它以迭代的方式构建模型,鼓励新模型成为早期模型错误分类的实例的“专家”。如果基础学习算法不太复杂(弱学习者),则提升效果最佳。此算法有多种变体(BoostingAdaBoost,GentleBoost,LogitBoost等。)

  • LPBoost:结合多个基础学习者的预测(通常是不同类型:kNN,ANN,SVM等),不像以前那样使用投票,而是使用元学习者(a模型训练基础模型的输出)。因此,基础学习者的预测作为输入数据提供给下一层的元学习者,以产生最终预测。


Stacking是一个MATLAB函数,用于为分类和回归构建fitensemble。它支持三种方法:装袋,增强和子空间。您可以选择三种可用的弱学习者:ensemble learner(真实decision tree),判别分析(decision stumplinear)或quadratic分类器。

  

注意:Subspace方法外,所有提升和装袋算法都基于k-nearest neighbor。子空间可以使用tree learnersdiscriminant analysis个学习者。

例如,以下代码使用训练数据集X上安装的k-nearest neighbor方法和相应的类{训练决策树集合分类器(由100棵树组成) {1}}。

Y

ens = fitensemble(X, Y, 'AdaBoostM1', 100, 'Tree') 部分表示二元分类器,对于多类问题有扩展的M1版本)