集成学习

https://blog.****.net/google19890102/article/details/46507387

https://blog.****.net/qq547276542/article/details/78304454

一、集成方法(Ensemble Method)

二、集成学习的主要方法

三、决策树

四、随机森林(Random Forests)

五、AdaBoost

、集成方法(Ensemble Method)

    集成方法主要包括Bagging(套袋法)Boosting(提升法)两种方法。

     Bagging:随机森林算法(RandomForest)是基于Bagging思想的机器学习算法,Bagging方法中,主要通过对训练数据集进行随机采样,以重新组合成不同的数据集,利用弱学习算法对不同的新数据集进行学习,得到一系列的预测结果,对这些预s测结果做平均或者投票做出最终的预测。

       Boosting:AdaBoost算法GBDT(Gradient Boost Decision Tree,梯度提升决策树)算法是基于Boosting思想的机器学习算法。在Boosting思想中是通过对样本进行不同的赋值,对错误学习的样本的权重设置的较大,这样,在后续的学习中集中处理难学的样本,最终得到一系列的预测结果,每个预测结果有一个权重,较大的权重表示该预测效果较好。

    集成学习方法是指组合多个模型,以获得更好的效果,使集成的模型具有更强的泛化能力。对于多个模型,如何组合这些模型,主要有以下几种不同的方法:

  1. 在验证数据集上上找到表现最好的模型作为最终的预测模型;
  2. 对多个模型的预测结果进行投票或者取平均值
  3. 对多个模型的预测结果做加权平均

二、集成学习的主要方法

1、强可学习和弱可学习

     在集成学习方法中,是将多个弱模型,通过一定的组合方式,组合成一个强模型。在《统计学习方法》中介绍了“强可学习(strongly learnable)”和“弱可学习(weakly learnable)”的概念。
     在概率近似正确(probably approximately correct, PAC)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的。一个概念,如果存在一个多项式的学习算法能够学习它,学习正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。Schapire指出在PAC学习框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。那么对于一个学习问题,若是找到“弱学习算法”,那么可以将弱学习方法变成“强学习算法”。

2、在验证集上找表现最好的模型

       这样的方法的思想与决策树的思想类似,在不同的条件下选择满足条件的算法。

3、多个模型投票或者取平均值(Bagging

    对于数据集训练多个模型,对于分类问题,可以采用投票的方法,选择票数最多的类别作为最终的类别,而对于回归问题,可以采用取均值的方法,取得的均值作为最终的结果。在这样的思路里最著名的是Bagging方法.BaggingBoostrap Aggregating,其中,Boostrap是一种有放回的抽样方法,其抽样策略是简单的随机抽样。
    Bagging方法中,让学习算法训练多次,每次的训练集由初始的训练集中随机取出的集成学习个训练样本组成,初始的训练样本在某次的训练集中可能出现多次或者根本不出现。最终训练出集成学习个预测函数集成学习,最终的预测函数为集成学习,对于分类回归问题可采用如下的两种方法:
  1. 分类问题:采用投票的方法,得票最多的类别为最终的类别
  2. 回归问题:采用简单的平均方法

集成学习

集成学习

bagging的算法过程如下:

  1. 从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
  2. 对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
  3. 对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)
随机森林算法就是基于Bagging思想的学习算法。

4、对多个模型的预测结果做加权平均(Boosting

     在上述的Bagging方法中,其特点在于随机化抽样,通过反复的抽样训练新的模型,最终在这些模型的基础上取平均。而在对多个模型的预测结果做加权平均则是将多个弱学习模型提升为强学习模型,这就是Boosting的核心思想。
     在Boosting算法中,初始化时对每个训练样本赋予相等的权重,如集成学习,然后用该学习算法对训练集训练集成学习,每次训练后,对训练失败的训练样本赋予更大的权重,也就是让学习算法在后续的学习中几种对比较难学的训练样本进行学习,从而得到一个预测函数序列集成学习,其中每个集成学习都有一个权重,预测效果好的预测函数的权重较大。最终的预测函数为集成学习对于分类和回归问题可采用如下的两种方法:
  1. 分类问题:有权重的投票方式
  2. 回归问题:加权平均
集成学习
集成学习

boosting的算法过程如下:

  1. 对于训练集中的每个样本建立权值wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。
  2. 进行迭代的过程中,每一步迭代都是一个弱分类器。我们需要用某种策略将其组合,作为最终模型。(例如AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大)

AdaBoostGBDT(Gradient Boosting Decision Tree)是基于Boosting思想的两个最著名的算法。


Bagging,Boosting的主要区别

  1. 样本选择上:Bagging采用的是Bootstrap随机有放回抽样;而Boosting每一轮的训练集是不变的,改变的只是每一个样本的权重。
  2. 样本权重:Bagging使用的是均匀取样,每个样本权重相等;Boosting根据错误率调整样本权重,错误率越大的样本权重越大
  3. 预测函数:Bagging所有的预测函数的权重相等;Boosting中误差越小的预测函数其权重越大
  4. 并行计算:Bagging各个预测函数可以并行生成;Boosting各个预测函数必须按顺序迭代生成。

下面是将决策树与这些算法框架进行结合所得到的新的算法:

1)Bagging + 决策树 = 随机森林

2)AdaBoost + 决策树 = 提升树

3)Gradient Boosting + 决策树 = GBDT

三、决策树

常用的决策树算法有ID3(信息增益C4.5(信息增益比CART(基尼指数三种。3种算法的模型构建思想都十分类似,只是采用了不同的指标。决策树模型的构建过程大致如下:

ID3,C4.5决策树的生成

输入:训练集D,特征集A,阈值eps 输出:决策树T

  1. 若D中所有样本属于同一类Ck,则T为单节点树,将类Ck作为该结点的类标记,返回T
  2. 若A为空集,即没有特征作为划分依据,则T为单节点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T
  3. 否则,计算A中各特征对D的信息增益(ID3)/信息增益比(C4.5),选择信息增益最大的特征Ag
  4. 若Ag的信息增益(比)小于阈值eps,则置T为单节点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T
  5. 否则,依照特征Ag将D划分为若干非空子集Di,将Di中实例数最大的类作为标记,构建子节点,由结点及其子节点构成树T,返回T
  6. 对第i个子节点,以Di为训练集,以A-{Ag}为特征集,递归地调用1~5,得到子树Ti,返回Ti

CART决策树的生成

这里只简单介绍下CART与ID3和C4.5的区别。

  1. CART树是二叉树,而ID3和C4.5可以是多叉树
  2. CART在生成子树时,是选择一个特征一个取值作为切分点,生成两个子树
  3. 选择特征和切分点的依据是基尼指数,选择基尼指数最小的特征及切分点生成子树

决策树的剪枝

决策树的剪枝主要是为了预防过拟合,过程就不详细介绍了。

主要思路是从叶节点向上回溯,尝试对某个节点进行剪枝,比较剪枝前后的决策树的损失函数值。最后我们通过动态规划(树形dp,acmer应该懂)就可以得到全局最优的剪枝方案。


四、随机森林(Random Forests)

随机森林是一种重要的基于Bagging的集成学习方法,可以用来做分类回归等问题。

随机森林有许多优点:

  • 具有极高的准确率
  • 随机性的引入,使得随机森林不容易过拟合
  • 随机性的引入,使得随机森林有很好的抗噪声能力
  • 能处理很高维度的数据,并且不用做特征选择
  • 既能处理离散型数据,也能处理连续型数据,数据集无需规范化
  • 训练速度快,可以得到变量重要性排序
  • 容易实现并行化

随机森林的缺点:

  • 当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大
  • 随机森林模型还有许多不好解释的地方,有点算个黑盒模型

与上面介绍的Bagging过程相似,随机森林的构建过程大致如下:

  1. 从原始训练集中使用Bootstraping方法随机有放回采样选出m个样本,共进行n_tree次采样,生成n_tree个训练集
  2. 对于n_tree个训练集,我们分别训练n_tree个决策树模型
  3. 对于单个决策树模型,假设训练样本特征的个数为n,那么每次分裂时根据信息增益/信息增益比/基尼指数选择最好的特征进行分裂
  4. 每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类。在决策树的分裂过程中不需要剪枝
  5. 将生成的多棵决策树组成随机森林。对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果

五、AdaBoost

https://blog.****.net/google19890102/article/details/46376603

附有Python代码

集成学习