MATLAB如何搭建集成学习分类器

集成学习

概念

集成学习分为同质集成和异质集成,同质集成指的是基学习器为同一种学习器,异质集成指的是基学习器为不同的学习器。
要想获得好的集成效果,个体学习器之间应该好而不同。
假设个体学习器的误差相互独立,那么随着集成中个体分类器数目T的增大,集成学习的错误率将呈指数级下降,最终将趋向于0。
如何产生“好而不同”的个体学习器,是集成学习研究的核心内容。
根据个体学习器的生成方式,目前的集成学习方法大致分为两大类。一是个体学习器之间存在强依赖关系,必须串行生成的序列化方法,代表是Boosting,二是个体学习器之间不存在强依赖关系,可同时并行生成的并行化方法,代表是Bagging和随机森林。
Boosting的工作机制: 先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前做错的基学习器的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直到基学习器数目达到事先指定的数目T,最后将这T个基学习器进行加权结合。
Bagging工作机制:基于自助采样法,给定包含m个样本的数据集,先随机取出一个样本放入采样集中,然后再把该样本放入初始数据集,使得下次采样时该样本仍有可能被选中。这样,经过m次随机采样操作,得到含有m个样本的采样集。最后可采出T个含m个训练样本的采样集。然后基于每个采样集训练一个基学习器,再将这些基学习器进行结合。
随机森林是在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统决策树在选择划分属性时是在当前节点的属性集合(假定d个属性)中选择一个最优属性;而在随机森林中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度,若令k=d,则基决策树的构建与传统决策树相同;若k=1,则是随机选择一个属性用于划分,一般情况下推荐k=log2d。

结合策略

学习器的结合能带来至少3点好处。
(1)提高整体的泛化性能
(2)降低陷入局部极小值的风险
(3)某些学习任务的真实假设不在当前学习算法所考虑的假设空间中,此时若用单学习器肯定无效。通过结合多个学习器,由于响应的假设空间有所扩大,有可能学得更好的近似。

1平均法

平均法常用于分类任务
1.1 简单平均法
1.2 加权平均法
加权平均法的权重一般是从训练数据中学习而得。现实任务中的训练样本通常不充分或存在噪声,这会使得学出的权重不完全可靠,尤其是对规模比较大的集成来说,要学习的权重比较多,这样容易导致过拟合。因此,加权平均法不一定优于简单平均法。综合来说,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。

2投票法

(1)绝对多数投票法
若某标记得票过半数,则预测为该标记,否则拒绝预测。
(2)相对多数投票法
即预测为得票最多的标记,若同时有多个标记得票最高,则从中随机选取一个。
(3)加权投票法
绝对多数投票法提供了拒绝预测选项,这在可靠性要求较高的学习任务中是一个很好的机制。但是如果学习任务要求必须输出预测结果,则绝对多数投票法退化为相对多数投票法

3学习法

当训练数据很多时,一种更为强大的结合策略是使用学习法,即通过另一个学习器来结合。Stacking是学习法的典型代表。我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。
Stacking先从初始训练集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当做样例输入特征。假定初级学习器是异质集成的。

多样性

误差-分期分解

集成的泛化误差=个体学习器泛化误差的加权均值-个体学习器的加权分歧值
白话讲,个体学习器越准确,多样性越大,则集成越好。

多样性度量

(1)不合度量
(2)相关系数
(3)Q统计量
(4)k统计量

多样性增强

在集成学习中需要有效地生成多样性大的个体学习器。如何增强多样性呢,一般是在学习过程中引入随机性。
(1)数据样本扰动
(2)输入属性扰动(特征扰动)
(3)输出表示扰动
(4)算法参数扰动

MATLAB有自带的函数,fitcensemble。

集成学习框架搭建步骤

(1) Prepare the Predictor Data 准备预测器数据
(2) Prepare the Response Data 准备响应数据
(3) Choose an Applicable Ensemble Aggregation Method 选择适用的集成聚合方法
(4) Set the Number of Ensemble Members 设置合奏成员的数量
(5) Prepare the Weak Learners 准备弱学习器
(6) Call fitcensemble or fitrensemble

MATLAB官方文档

templateTree

t=templateTree
t=templateTree(Name,Value)

fitcensenble

Md1=fitcensemble(Tb1,ResponseVarName)
Md1=fitcensemble(__,Name,Value)

Md1=fitcensemble(Tb1,ResponseVarName)返回经过训练的分类集成模型对象(Md1),其中包含100个分类提升树的结果,以及表中的预测变量Tb1和响应数据ResponseVarName。默认情况下,fitcensemble使用Logitboost进行二元分类,使用AdaBoostM2进行多元分类。
Md1=fitcensemble(__,Name,Value)使用由一个或多个Name,Value对参数和前面语法中的任何输入参数指定的附加选项,例如,可以指定学习周期数、集成聚合方法或实施10倍交叉验证。

输入参数

Tbl

用于训练模型的样本数据,指定为表格。Tbl可以包含一个额外的响应变量列,但是不允许使用多列变量和除字符向量元胞数组以外的元胞数组。

ResponseVarName响应变量名

formula 响应变量和预测变量子集特征向量的解释模型

X——预测数据

Y——响应数据

Method 集成聚合方法

包括:

'Bag'|'Subspace'|'AdaBoostM1'|'AdaboostM2'|'GentleBoost'|'LogitBoost'|
'LpBoost'|'RobustBoost'|'RUSBoost'|'TotalBoost'|

Bag 属于Bootstrap聚合方法(例如随机森林),支持二分类和多分类
Subspace,随机子空间,适用于二分类和多分类。
AdaBoostM1,自适应提升方法,仅适用于二分类问题。
AdaBoostM2,自适应提升方法,仅适用于多分类问题。
‘GentleBoost’,温和的自适应提升方法,仅适用于二分类问题。
‘LogitBoost’,自适应逻辑提升,仅适用于二分类问题。
LPBoost,线性规划提升,适用于二分类和多分类问题。
RobustBoost,稳健提升,需要优化工具箱,仅限于二分类问题。
RUSBoost,随机欠采样提升,适用于二分类和多分类问题。
TotalBoost,完全纠正性提升,需要工具箱优化,适用于二分类和多分类问题。

NumLearningCycles——集成学习周期数

指的是在每个学习周期中,软件会为每个模板对象训练一个弱学习器。最后,软件共训练了NumLearningCycles*numel(Learners)个学习器。

Learners 在集成中使用的弱学习器

(1)判别分析'discriminant',推荐用于'Subspace'方法。
(2)k-最近邻,'knn',仅推荐用于'Subspace'方法。
(3) 决策树'tree',适用于除'Subspace'方法外的所有方法。

Options——并行计算合设置随机数

#参考资料
1.《机器学习》周志华
2.MATLAB官方文档,fitcensemble函数

你可能感兴趣的:(MATLAB,机器学习,matlab,机器学习)