本文不涉及诸多数学原理(网上很多,书上也很多),重在总结一个框架,形成一个知识体系,个人认为在体系中学习不懂的知识往往事半功倍,以下是根据个人理解所写,请批评指正
集成方法:通过结合多个弱学习器来构建一个强的学习器(可以用作分类,也可以用作回归)
有两类策略 ——bagging和boost
单颗树做分类和回归一般有二叉树和N叉树,但是集成里面树多为二叉树(不知道为什么)
(1)bagging:多个学习器之间没有强烈的依赖关系,可以同时构建,并行执行
步骤:1)有放回的抽样,抽取和样本个数一样多的数据,完成一轮抽样。进行和你想构建弱学习器个数一样多的K轮抽样。
2)用K轮抽样的结果,每一轮样本个数和起始样本个数相同,同时学习K个弱学习器。
用途:如果是回归:用K个弱学习器进行简单加权平均 如果是分类:用K个弱学习器获得的结果进行简单投票表决。
广泛应用的实例:RF(随机森林)
思想:使用CART决策树作为bagging里面的弱学习器,即可构建一个随机森林
步骤:1)有放回的抽样,抽取和样本个数一样多的数据,完成一轮抽样。进行和你想构建弱学习器个数一样多的K轮抽样。
2)用K轮抽样的结果,每一轮样本个数和起始样本个数相同,同时学习K个弱学习器(CART)。
备注:随机森林保留了bagging样本选择的随机性,并且在构建弱学习器时候,使用的CART与原始CART不同,在构建随机森林时,每个节点都是从总特征中随机选取部分特征,在这部分特征中选最优,而单颗树构建是在除父节点使用过的特征之外选取最优特征,因此随机森林的单个树的结点要么是同一类,要么是随机选择的部分特征已经全部使用过,此节点不能继续分裂(个人觉得不应该每次都从总特征中选部分特征再选择最优,而是应该每次都从除父节点之外特征中选部分特征再选择最优)
随机森林两大特性:样本选择的随机性(构建每个弱学习器样本总数不变)特征选择随机性(CART树,总特征中部分特征然后取最优、单个树为所有特征取最优——自然地就排除了父亲是用过的特征)
(2)boost:提升方法:多个弱学习器之间存在较强的依赖关系,学习器一个接一个构建,后面的依赖于前面的学习器的结果
步骤:1)没次使用的样本都是原始样本,只不过样本之间的权值不同,初始权值认为是相同的
2)在前一个学习器构建完成之后,增加错误点的权值,减小正确点的权值,后一个学习器着重关注前一个的误差点
用途:可以做分类,也可以做回归
应用实例(一)adaboost(自适应提升方法)可以分类,也可以回归,最常用作分类问题,重在提供一个框架,可以使用不同算法构建弱学习器(一般使用深度较小的树)特别关注错分点或者残差大的点,从而在下一个学习器中更好地考虑这些点对划分的影响,比如以树作为基本学习器时候,误分类点或者残差大的点会影响基尼系数或者误差平方和对特征的划分
步骤:1) 使用加权后的训练样本,这样将训练的焦点集中在比较难分的训练数据样本上;
2) 将弱分类器联合起来,使用加权的投票机制让分类效果好的弱分类器具有较大的权重,而分类效果差的分类器具有较小的权重
自适应分类器:
1)初始化训练样本权重
2)训练一个弱分类器,计算分类误差率
3)基于分类误差率计算系数,此系数为次分类器的权重
4)更新样本权重,再一次训练分类器
自适应回归器:
1)初始化权重;
2)训练一个弱的回归器
3)计算样本的最大误差
4)计算每个样本的相对误差
5 ) 计算误差率
6)计算学习器系数
7)进行权值更新,继续训练
应用实例(二)GBDT(梯度提升决策树 只能由CART回归树构成)多用于回归问题 、不断拟残差构建强学习器
1)对原始数据根据特征二分,得到每个数据的残差
2)对残差进行二分,将划分结果添加到原始结果(相当于每个点有不同权重)
3)不断根据对残差的划分,将划分结果与拟合的残差添加到上一步结果中
4)或的一个具有多个分割的模型,每个分割之间有自己的值
应用实例(三)XGBOOST(以CART树作为基分类器,XGBOOST还支持线性分类器)
未完待续