您的位置:首页 > 其它

机器学习总结(六):集成学习(Boosting,Bagging,组合策略)

2017-03-30 12:43 507 查看
(也是面试常考)

主要思想:利用一定的手段学习出多个分类器,而且这多个分类器要求是弱分类器,然后将多个分类器进行组合公共预测。核心思想就是如何训练处多个弱分类器以及如何将这些弱分类器进行组合,个体分类器应该“好而不同”。

弱分类器如何选择:一般采用弱分类器的原因在于将误差进行均衡,因为一旦某个分类器太强了就会造成后面的结果受其影响太大,严重的会导致后面的分类器无法进行分类,,常用的弱分类器可以采用误差小于0.5的,比如逻辑斯蒂回归,SVM,神经网络等。

如何生成个体学习器:

(1)个体学习器间存在强依赖关系,必须串行生成的序列化方法,例如基于Booosting;

(2)个体学习器间不存在强依赖关系,可同时生成的并行化方法,例如基于Bagging和随机森林。

Boosting算法:

(1)基本思想:先从初始训练集上训练一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,如此反复进行,直至基学习器数目达到实现指定的值T,最终将这T个基学习器进行加权结合。

(2)Adaboost算法

基本思想:通过训练数据的分布构造一个分类器,然后通过误差率求出这个弱分类器的权重,通过更新训练数据的分布,迭代进行,直到达到迭代次数或者损失函数小于某一阈值。

算法流程:a.初始化训练数据的分布,训练数据的权重设置为平均分配;b.选择合适的基本分类器;c.计算分类器的系数和更新数据权重:



其中



d.构建基本分类器的线性组合



特点:关注降低偏差,能基于泛化性能相当弱的学习器构建出很强的集成。

Bagging算法:

(1)基本思想:自助采样法,给定包含m个样本的数据集,随机取出一个样本放入采样集中,再把该样本放回初始数据集,这样经过m次随机采样操作,可以得到含m个样本的采样集。照这样,可以采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。结合时对多分类任务使用简单投票法,对回归任务使用简单平均法。

(2)优点: a.训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,高效;b.标准的AdaBoost只适用于二分类,Bagging能直接用于多分类,回归等任务;c.因为自助采样,每个基学习器只使用了出事训练集中约63.2%的样本,剩下的样本可以用作验证集等等。

(3) 特点:关注降低方差,在易受样本扰动的学习器上效用更为明显。

(4)随机森林算法(RandomForest,简称RF)

基本思想:RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。(即先从节点的属性集合M中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分,一般k远小于M,取k= )

特点:两个随机过程避免了过拟合现象的出现(一是输入数据是随机的从整体的训练数据中选取一部分作为一棵决策树的构建,而且是有放回的选取,第二个是随即特征的选取)。

过程:a. 从训练数据中选取n个数据作为训练数据输入,有放回的选取,这样会造成一部分数据无法被取到,这部分数据被称为袋外数据,可以使用其做误差估计;b.选取了输入的训练数据之后,需要构建决策树,随机选取k个特征;c.构造决策时,按照选取最小的基尼指数进行分裂节点的选取进行决策树的构建,直到该节点所有训练样例都属于同一类或达到树的最大深度;d,重复b、c,得到随机森林;e.
多数投票进行决策。

注意点:不需要剪枝,构建决策树时分裂点的选择是依据最小基尼系数的。

基尼系数:









优点:1.两个随机性的引入使得随机森林不容易陷入过拟合还具有很好的抗噪声能力;2.容易做成并行化方法;3.实现简单;4.能够处理高纬度的数据,并且不需要做特征选择。

缺点:对噪声敏感。

如何在随机森林中避免出现过拟合?1.对树的深度进行控制;2.把模型训练比较复杂,看合并节点后的子树能否降低泛化误差。

组合策略

为什么要结合学习器:(1)统计方面,由于假设空间往往很大,可能有多个假设在训练集上达到同等性能。此时若使用单学习器可能因误选导致泛化性能不佳;(2)计算方面,单个学习算法容易陷入局部极小;(3)表示方面,某些学习任务的真实假设可能不在当前学习算法的假设空间,此时使用多个学习器扩大假设空间。

算法:平均法(加权(个体学习器性能相差较大),简单(性能相近)),投票法(绝对多数(超过半数标记。否则拒绝预测),相对多数,加权投票),学习法(通过另一个学习器来进行结合,Stacking算法

Stacking算法:

基本思想:先从初始数据集训练出初级学习器,然后生成一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而出事样本的标记仍被当作样例标记。

注意点:若直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比较大;一般会通过交叉验证等方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本。

如何增强集成学习的多样性?

(1)     数据样本扰动(基于采样法,给定初始数据集,可以产生不同的数据子集,例如Bagging的自助采样,AdaBoost的序列采样),适合不稳定的基学习器(决策树,神经网络等)。

(2)     输入属性扰动(不同的属性子集提供了观察数据的不同视角),适合于冗余属性多的数据集。

(3)     输出表示扰动(对训练样本的类标记稍作变动或者对输出表示进行转化)

(4)     算法参数扰动(修改基学习器的参数,如神经网络层数等等)。

GBDT(gradient boosting decision tree)

基本思想:积跬步以至千里,每次学习一点。先用一个初始值来学习一棵决策树,叶子处可以得到预测的值,以及预测之后的残差,然后后面的决策树就是要基于前面决策树的残差来学习,直到预测值和真实值的残差为0。最后对于测试样本的预测值,就是前面许多棵决策树预测值的累加。

Shrinkage(缩减):仍以残差作为学习目标,但对于残差学习出来的结果,只累加一小部分(step*残差)逐步逼进目标。原因:每次走一小步逐渐逼近结果的效果要比每次迈一大步很快逼近结果的方式更容易避免过拟合。本质:为每棵树设置一个weight,累加时要乘以这个weight。

基于梯度的版本:代价函数是对数似然函数形式。沿着残差减小的梯度方向学习到回归树。

GBDT和随机森林对比

相同点:1.都是由多棵树组成;2.最终的结果都是由多棵树一起决定;

不同点:1.随机森林的子树可以是分类或回归树,而GBDT只能是回归树;2.随机森林可以并行生成,而GBDT只能是串行;3.输出结果,随机森林采用多数投票,GBDT将所有结果累加起来;4随机森林对异常值不敏感,GBDT敏感;5:随进森林减少方差,GBDT减少偏差;6:随机森林对数据集一视同仁,GBDT是基于权值的弱分类器的集成。

GBDT和随机森林哪个容易过拟合?

随机森林,因为随机森林的决策树尝试拟合数据集,有潜在的过拟合风险,而boostingd的GBDT的决策树则是拟合数据集的残差,然后更新残差,由新的决策树再去拟合新的残差,虽然慢,但是难以过拟合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐