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

集成学习是否是指多个特定分类器的实例,例如决策树分类器;还是指几种分类器的混合,如神经网络、决策树、支持向量机等?

我查看了维基百科关于Bagging集成学习者的描述。它提到:

Bagging导致了“不稳定过程的改进”(Breiman, 1996),例如,神经网络、分类和回归树,以及线性回归中的子集选择(Breiman, 1994)。

我对这个描述有点困惑。我还查看了MATLAB中集成算法的实现。例如这个:

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

measspeciesfitensemble函数的输入。在这个例子中,它使用了类型为TreeAdaBoostM2弱学习器,并且使用了100个这样的学习器。这个函数的简单实例如何展示集成学习是用来结合不同分类器的,如神经网络、KNN、朴素贝叶斯

有谁能解释一下集成学习到底是什么,以及MATLAB在其fitensemble函数的实现中试图做什么?


回答:

集成学习的基本思想是结合多个模型以提高预测性能。它们被认为是设计在现有学习算法之上的元算法。有几种方法:

  • Bagging(代表Bootstrap Aggregation)生成一组模型,每个模型在数据的随机抽样上进行训练(bootstrap 重抽样:替换抽样N个实例)。这些模型的预测被结合/聚合以通过平均产生最终预测。

  • 随机子空间:其思想是随机化学习算法,例如在应用训练算法之前随机选择一组特征(例如,考虑随机森林)。每个模型在投影到随机选择的子空间上的数据上进行训练。然后通过通常的简单多数投票结合模型的输出。

  • Boosting:也建立在投票/平均多个模型的概念上,但它根据模型的表现对模型进行加权。它以迭代方式构建模型,其中新的模型被鼓励成为早期模型误分类的实例的“专家”。如果基础学习算法不太复杂(弱学习器),Boosting效果最好。这个算法有几个变体(AdaBoostLogitBoost、GentleBoost、LPBoost等)。

  • Stacking:结合多个基础学习器的预测(通常是不同类型的:kNN、ANN、SVM等),不像之前那样使用投票,而是使用元学习器(在基础模型的输出上训练的模型)。因此,基础学习器的预测被作为输入数据输入到下一层的元学习器中,以产生最终预测。


fitensemble是MATLAB用于构建用于分类和回归的集成学习者的函数。它支持三种方法:bagging、boosting和子空间。你可以选择三种可用的弱学习器:决策树(实际上是决策树桩)、判别分析(线性二次两种)或k-最近邻分类器。

注意:除了Subspace方法外,所有boosting和bagging算法都基于树学习器。子空间可以使用判别分析k-最近邻学习器。

例如,以下代码使用AdaBoost方法在训练数据集X及其对应的类别Y上训练一个由100棵树组成的决策树集成分类器。

ens = fitensemble(X, Y, 'AdaBoostM1', 100, 'Tree')

M1部分表示二元分类器,有一个扩展的M2版本用于多类问题)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注