1、集成学习概述
机器学习分为有监督学习算法和无监督学习算法。在有监督学习中,我们的目标是学习一个稳定的且各方面都表现较好的模型。但是,实际情况往往不理想,有时我们只能得到多个在某些方面表现比较好的“弱监督模型”。集成学习就是组合多个“弱监督模型”,以得到一个更好,更全面的“强监督模型”。
2、集成学习算法分类
集成学习算法分为:Boosting算法、Bagging算法、Stacking算法
2.1Boosting算法(提升法)
Boosting算法包括:AdaBoost、GBDT、XGBoost
Boosting算法原理:
(1)首先赋予每个训练样本相同的权重,在训练样本中,用初始权重训练出一个“弱学习器1”,然后根据弱学习的学习误差率来更新训练样本的权重,使得“弱学习器1”中学习误差率高的训练样本点所占的权重变大,进而这些误差率更高的点在“弱学习器2”中得到更多的重视。
(2)基于调整权重后的训练集来训练“弱学习器2”。如此反复进行,知道弱学习器数量达到指定数目K。
(3)将K个弱学习器通过集合策略进行整合,得到最终的强学习器。
Boosting算法个体学习器之间存在强依赖关系
2.1.1AdaBoost
AdaBoost的基本思想是提高前一轮弱分类器错误分类样本的权重,降低正确分类样本的权重。
2.1.2GBDT
GBDT是回归树,不是分类树。
GBDT的核心在于累加所有树的结果作为最终结果。
GBDT的关键点就是利用损失函数的负梯度去模拟残差,这样对于一般的损失函数只要其一阶导数就行。
2.1.3XGBoost
XGBoost对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。
2.2Bagging算法(自助法)
Bagging算法是Bootstrap Aggregation算法的简写,也称为自助法,是一种有放回的抽样方法,目的是得到统计量的分布和置信区间。
Bootstrap抽样方法的工作原理:
(1)采用重采样的方法(有放回抽样)从原始样本中抽取一定数量的样本呢
(2)根据抽出的样本计算想要的统计量T
(3)重复上述步骤N次,得到N个统计量T
(4)根据这N个统计量T计算出统计量的置信区间
在Bagging算法中,利用Bootstrap方法从整体数据中采取有放回抽样得到N个数据集,在每个学习集上学习出一个弱算法模型,利用N个模型的输出得到最后的预测结果。
N个模型的组合方式为:
分类问题:采用N个模型预测投票的方式。
回归问题:采用N个模型预测平均的方式。
Bagging算法若干个学习器之间没有依赖关系
2.2.1随机森林(RF)
一棵树是决策树,多棵树是随机森林,解决了决策树泛化能力弱的缺点。
随机:(随机选择样本、随机选择特征)
集成学习:简单投票法或简单平均法
2.3 Stacking算法(融合法)
Stacking算法是指,训练一个模型用于组合其他各个模型(即通过元分类或元回归聚合多个分类或回归模型),其中基础层次模型基于完整训练集进行训练,元模型基于基础层次模型的输出进行训练。
基础层次模型通常由不同的学习算法组成,但必须是同一类算法(同为分类算法或是同为回归算法)
-------------------------------------------------------------------------------------------------------------------------------------------------------
以下忽略即可,还没整理。
3随机森林(Random Forest)
RF=决策树+Bagging+随机属性选择
#RF算法流程
#样本的随机:从样本集中用bagging的方式,随机选择n个样本
#特征的随机:从所有属性d中随机选择k个属性(k<d),然后从k个属性属性中选择最佳分割属性作为节点建立CART决策树
#重复以上两个步骤m次,简历m棵CART决策树
#这m棵CART决策树形成随机森林,通过投票表决结果,决定数据属于哪一类
4boosting
#AdaBoost(Adaptive Boosting)自适应增强
#自适应在于:前一个基本分类器被错误分类的样本的权值(抽样的概率)会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,知道达到某个预定的足够小的错误率或达到预先指定的最大迭代次数才确定最终的强分类器。
#特点:将学习器的重点放在容易出错的样本上可以提升学习器的性能
#Adaboost算法步骤:
#首先,初始化训练数据的权值分布D1。假设有N个训练样本数据,则每一个训练样本最开始时,都被赋予相同的权值:w1=1/N
#然后,训练弱分类器hj。如果某个训练样本点被弱分类器hj准确地分类,那么在构造下一个训练集中,它对应的权值要减少。反之,则增大。权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
#最后,将各个训练得到的弱分类器组合成一个强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的作用。
#Adaboost算法流程
5Stacking
#使用多个不同的分类器对训练集进行预测,把预测得到的结果作为一个次级分类器的输入。次级分类器的输出是整个模型的预测结果