机器学习算法基础问题(三)集成学习|adaboost与XGboost| EM算法

bagging是什么?boosting?

什么是stacking?

bagging与boosting的区别?

EM算法是什么?是最大化先验还是后验?

相关内容:

机器学习算法基础问题(一)PCA|SVM|贝叶斯|过拟合

机器学习算法基础问题(二)类别不均|尺寸及感受野|Batch Norm|损失函数

机器学习算法基础问题(三)集成学习|adaboost与XGboost| EM算法

目录

一、集成学习

1.1 bagging

1.2 boosting

1.3 两者区别

1.4 stacking

二、adaboost与XGboost

2.1 adaboost

2.2 GBDT

2.3 XGboost

2.4 三者区别

三、EM算法

3.1 定义

3.2 极大似然估计

3.3 EM算法流程


一、集成学习

bagging与boosting与stacking

集成学习 https://cloud.tencent.com/developer/news/229098

Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。

  • bagging是减少variance,而boosting是减少bias。
  • bagging是并行,boosting是串行

1.1 bagging

(英语:Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法。Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。用于减少variance

Bagging是通过结合几个模型降低泛化误差的技术。主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。这是机器学习中常规策略的一个例子,被称为模型平均(modelaveraging)。采用这种策略的技术被称为集成方法。

流程:

  1. 给定一个弱学习算法,和一个训练集;
  2. 单个弱学习算法准确率不高;
  3. 将该学习算法使用多次,得出预测函数序列,进行投票;
  4. 最后结果准确率将得到提高.

1.2 boosting

涉及adaboost与XGboost的区别,提升方法(Boosting),是一种可以用来减小监督式学习中偏差的机器学习算法。用于减小bias

串行方法的基本动机是在训练当前学习器之前通过给予被先前学习器错误标记的样本更高的权值,让当前学习器在前面学习器的错误样本上有更好的表现。

比如,A学习器经过了学习,预测输出了错误样本,将其错误样本权值加大更新学习器B,这样B就比A有更好的能力。然后通过加权多数表决(分类任务)或加权求和和(回归任务)来产生最终预测。

1.3 两者区别

训练样本:

  • bagging每次有放回的抽样,各轮训练集的选取不一样。
  • boosting每轮训练集不变,但是每轮训练集中样本的权重改变。

预测阶段:

  • bagging是等权重投票
  • boosting是分类误差小的分类器有更大的权重

并行性:

  • bagging是并行的,每个分类器之间是独立的
  • boosting是串行的,即下一个分类器的训练需要上一个分类器训练的结果

variance与bias:

bagging减少variance,因为对于模型而言,每个有独立的variance,但是几个模型并行输出相当于很多个随机变量求平均

boosting相当于对模型进行串行,其模型之间的关系是强相关的,在第n步的时候求解第n-1步之前的组合系数,因此可以降低bias。

1.4 stacking

https://blog.csdn.net/xiao2cai3niao/article/details/80571021

Stacking 是指一种通过元分类器或元回归器(元:meta 即是组合的意思)来组合多个分类或回归模型的集成学习方法,简单来说,就是把两种学习器叠在一起。基础层模型在完整的训练数据集上训练,然后其输出特征再训练新的数据。基础层通常包括不同的学习算法,因此stacking ensemble往往是异构的。

二、adaboostXGboost

2.1 adaboost

https://www.cnblogs.com/ScorpioLu/p/8295990.html

训练流程:

1. 先通过对N个训练样本的学习得到第一个弱分类器;

2. 将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器 ;

3. 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器;

4. 最终经过提升的强分类器。即某个数据被分为哪一类要由各分类器权值决定。

由Adaboost算法的描述过程可知,该算法在实现过程中根据训练集的大小初始化样本权值,使其满足均匀分布,在后续操作中通过公式来改变和规范化算法迭代后样本的权值。样本被错误分类导致权值增大,反之权值相应减小,这表示被错分的训练样本集包括一个更高的权重。这就会使在下轮时训练样本集更注重于难以识别的样本,针对被错分样本的进一步学习来得到下一个弱分类器,直到样本被正确分类。在达到规定的迭代次数或者预期的误差率时,则强分类器构建完成。

2.2 GBDT

另一种boosting方法GBDT(Gradient Boost Decision Tree),则与AdaBoost不同,GBDT每一次的计算是都为了减少上一次的残差,进而在残差减少(负梯度)的方向上建立一个新的模型。

2.3 XGboost

XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。

该算法思想就是不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差。当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数,最后只需要将每棵树对应的分数加起来就是该样本的预测值。

事实上,如果不考虑工程实现、解决问题上的一些差异,xgboost与gbdt比较大的不同就是目标函数的定义。

2.4 三者区别

  • Adaboost与GBDT两者boosting的不同策略是两者的本质区别。adaboost加强分类错误样本权重,而GBDT是源自于更改残差
  • Adaboost强调Adaptive(自适应),通过不断修改样本权重(增大分错样本权重,降低分对样本权重),不断加入弱分类器进行boosting。
  • 而GBDT则是旨在不断减少残差(回归),通过不断加入新的树旨在在残差减少(负梯度)的方向上建立一个新的模型。——即损失函数是旨在最快速度降低残差。
  • 而XGBoost的boosting策略则与GBDT类似,区别在于GBDT旨在通过不断加入新的树最快速度降低残差,而XGBoost则可以人为定义损失函数(可以是最小平方差、logistic loss function、hinge loss function或者人为定义的loss function),只需要知道该loss function对参数的一阶、二阶导数便可以进行boosting,其进一步增大了模型的泛华能力,其贪婪法寻找添加树的结构以及loss function中的损失函数与正则项等一系列策略也使得XGBoost预测更准确。

三、EM算法

3.1 定义

https://baike.baidu.com/item/%E6%9C%80%E5%A4%A7%E6%9C%9F%E6%9C%9B%E7%AE%97%E6%B3%95/10180861?fromtitle=em%E7%AE%97%E6%B3%95&fromid=1866163&fr=aladdin

最大期望算法,迭代进行极大似然估计。作为牛顿迭代法的替代方案,对包含因变量,缺失数据的概率模型进行估计。

EM算法的标准计算框架由E步(Expectation-step)和M步(Maximization step)交替组成,算法的收敛性可以确保迭代至少逼近局部极大值。

应用于:包括高斯混合模型(Gaussian Mixture Model, GMM)和隐马尔可夫模型(Hidden Markov Model, HMM)的参数估计。(这两类模型是生成式模型,所以此算法是生成式模型算法。)

3.2 极大似然估计

EM算法是基于极大似然估计(Maximum Likelihood Estimation, MLE)理论的优化算法。

没有隐变量的极大似然估计:

给定相互独立的观测数据,X={X1,X2,X3...Xn},和参数q,极大似然估计q就是

加入隐变量Z之后,就变成了,

3.3 EM算法流程

EM标准算法是一组迭代计算,迭代分为两部分,即E步和M步,其中E步“固定”前一次迭代的q(t-1),求解 q(t)使 L(q,q)取极大值;M步使用 q(t)求解 q(t)使 L(q,q)取极大值。EM算法在初始化模型参数后开始迭代,迭代中E步和M步交替进行。由于EM算法的收敛性仅能确保局部最优,而不是全局最优

发布了210 篇原创文章 · 获赞 584 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/weixin_36474809/article/details/101274046