Machine Learning --常见集成算法实现总结与比较

感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30676.html

1.基本介绍

主要思想 : 通过将多个学习器进行结合,获得比单一学习器更好的泛化能力。

对个体学习器的要求:“好而不同”

(1)个体学习器要有一定的准确性:单个学习器的准确度越高,集成学习器才可能越好。个体学习器不能太差,至少不能差于弱学习器。(弱学习器是指泛化性能略优于随机猜想的学习器)

(2)个体学习器的多样性(差异性):学习器之间要有差异。

常见集成学习器:

下面的三种方法中,boosting各个学习器之间存在强依赖关系,各个学习器是串行方式生成的。bagging和random forest的各个学习器之间不存在强依赖关系,可以单独去训练(并行生成)。

1.Boosting

2.Bagging

3.Rondom Forest

学习器的结合策略

结合的好处:(1)提升泛化性能 (2)降低陷入局部极小点的风险

方法:

1.平均法:对数值型输出,可以采用平均法。

(a)简单平均法;

(b)加权平均法两种。

2.投票法:对于分类任务常常可以采用投票法

(a)绝对多数投票法:只有当某标记票数过半才预测为该标记,否则拒绝预测;

(b)相对多数投票法:将票数最多的标记作为预测值;

(c)加权投票法:对不同学习器采取加权方法投票;

3.学习法:通过一个学习器来训练,使各个学习器结合起来。例如stacking算法

stacking算法:以初学习器的输出作为输入,训练学习器。

2.Bagging与Rondom Forest

一个基础想法:

想要得到泛化能力强的集成,那么集成中使用的个体学习器应该尽可能的相互独立。一种可能的做法是对训练数据集进行采样,产生出若干个不同的子集,再从每个子数据集中训练出一个基学习器。由于这些基学习器的训练数据不同,获得的学习器之间的差异自然会比较大,通过组合这些学习器来实现较好的泛化能力。

但是这样的做法对数据的利用不好,每个学习器只用到了很少的一部分数据,个体学习器的性能也会不好。

2.1 Bagging

Bagging方法是一种在原始数据集上通过有放回抽样训练分类器的方法。

算法步骤

假设训练集包含m个样本

1.从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。

2.重复步骤一T次,得到T个含m个样本的采样集,最终训练得到T个模型H1,H2,H3,...Ht

3.将这T个学习器结合,得到集成学习器。

结合方法 : Bagging通常对分类任务,采用简单投票法。对回归任务,采用简单平均法。

注 : Bagging的这种自助采用方法,每个采用数据集大概用到了63.2%的样本,有36.8%的样本没有被采集到。这一部分数据可以用做验证集。

2.2Random Forest

随机森林是Bagging的一个扩展变体,随机森林是以决策树为基学习器来构建Bagging的一种方法。

算法步骤

假设训练集包含m个样本

从m个样本中随机选取一个样本放入采用集中,再把该样本放回到初始数据集中,再次采用。重复m次采用,得到一个包含m个样本的采样集。用这个采样集来训练一个决策树。

决策树划分属性时,先从当前结点的属性集合(假设包含d个属性)中随机选择K个属性,形成一个包含K个属性的集合,再从这k个属性中选出一个最优的属性用于划分。

决策树形成的每个结点都按照步骤2来划分,直到该结点的所有训练样例都是同一类。

注 : 这里不需要进行剪枝,因为两个随机过程保证了随机性,过拟合风险很小。

优点:

(1)随机森林思路简单,实现容易,计算开销小。

(2)随机森林的往往很容易得到较好的预测结果,泛化能力好。

(3)过拟合风险小

(4)抗噪声能力强

注:

随机森林初始性能往往相对较差,这一点容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所下降。

但是随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。(这么说的话,学习器的数量是需要足够多的)

3.Boosting

在分类问题中,通过改变训练样本的权重,串行地学习多个分类器,并组合提高分类性能。

3.1AdaBoost算法

是一种迭代算法,每轮迭代过程中会在训练数据集上产生一个新的分类器。在训练过程中,通过改变权值,重视那些上一轮被错分的样本。这样越难区分的样本在训练过程中会变得越来越重要。

假设共有N个样本,假设训练M个分类器

3.2训练过程

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

3.3优缺点

优点:

(1)是一种有很高精度的分类器

(2)简单,不用做特征筛选

(3)不容易发生overfitting

缺点:

(1)AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

(2)数据不平衡导致分类精度下降。

(3)训练比较耗时,每次重新选择当前分类器最好切分点。

4.加法模型和前向分步算法

加法模型(Additive Model)

对一个加法模型

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

注:

若是采用平方误差,那么实际上,优化的是当前模型在样本上的损失,优化的是损失,即寻找最好的βb(x,γ)\beta b(x,\gamma)βb(x,γ)使得损失最小。

当采用指数损失函数的时候,前向分步算法和AdaBoot算法是等价的。

5.提升树

提升树是统计学习方法中性能最好的方法之一。提升方法实际应用采用加法模型和前向分步算法,采用决策树作为基函数的提升方法称为提升树

提升树模型是决策树的加法模型 :

机器学习--常见集成算法总结与比较

算法
提升树算法就是采用前向分步算法,和上面的前向分步算法的步骤基本一致

机器学习--常见集成算法总结与比较

6.梯度提升树(GBDT)

当采用平方损失和指数损失的时候,每一步的优化是很简单的。但是对于一般的损失函数而言,每一步的优化并不容易。针对这个问题,解决办法就是采用梯度下降的方法来优化。

注 :

Adaboost和梯度提升的区别:

1.Adaboost是基于样本权值更新

2.Gradient Boost 是基于残差减小的梯度方向进行更新

GBDT算法

在GBDT中,假设我们前一轮得到的学习器是fm−1(x)

那么本轮迭代的目的就是找到一个树,让本轮的损失最小。(还是优化损失)

机器学习--常见集成算法总结与比较

机器学习--常见集成算法总结与比较

优点:

1.可以灵活处理各种类型的数据,包括连续值和离散值。

2.在相对少的调参时间情况下,预测的准确率也可以比较高。

3.使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据。

猜你喜欢

转载自www.cnblogs.com/lihanlin/p/12657740.html