ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器学习之集成学习(三)

2019-06-26 20:53:29  阅读:209  来源: 互联网

标签:集成 分类器 机器 训练 XGBoost 学习 RF GBDT 随机


1.RF和bagging的联系 RF是对bagging的进化版,首先都是有放回的进行采样,获得n个训练集从而训练n个弱分类器,但是RF在随机选取的训练集的基础上对于特征的选择也是随机的,随机的选取一部分的特征进行弱分类器的构建,同时在划分建树的过程中也是从这些随机选取的部分特征中选择最优的特征。 2.AdaBoost和GBDT的区别 它俩都是boost家族的一员都属于加法模型,当前树的建立都是在前一棵树的基础上进行的。GBDT是在建树的过程中不断的对负梯度进行拟合,最后的结果是每棵树结果的加和。而Adaboost是先为训练数据赋予相等的一个权重,然后基于训练数据训练出一个弱分类器,随后计算出该分类器的错误率(错误分类的样本/所有样本的数目),再结合错误率对每个样本的权重进行更新,使得分错的样本其权重变大,同时还会结合错误率为每个分类器赋予不同的权重值,最后的结果对于分类问题是对每棵树进行加权表决,对于回归问题的集成策略为采用的是对加权的弱学习器取权重中位数对应的弱学习器作为强学习器的方法。 3.RF和GBDT的区别 1)随机森林采用的bagging思想,而GBDT采用的boosting思想。Bagging的训练集的选择是随机的,各训练集之间相互独立,弱分类器可并行,而Boosting的训练集的选择与前一轮的学习结果有关,是串行的,树的建立不能并行的进行。 2)组成随机森林的树可以是分类树,也可以是回归树;而GBDT只能由CART回归树组成。 3)对于最终的输出结果而言,随机森林对于分类问题采用的集成策略是投票法,对于回归问题采用的集成策略是平均法;而GBDT则是将所有结果累加起来,或者加权累加起来。 4)随机森林对异常值不敏感;GBDT对异常值敏感。(因为GBDT的迭代过程是为了最小化损失函数,有异常数据会影响后面树的创建)对于异常值,相比于GBDT而言RF对于异常值有更好的鲁棒性。RF由于子树建立时的训练样本都使用了子采样,所以异常点的负面作用会被稀释,GBDT不止可以使用健壮的损失函数(例如Huber损失函数,它的思想是对于远离中心的点采用绝对值,近处使用均方差的思想)来减少异常值的影响。使用到的方法还有:第一、通过正则化来减少异常点影响。第二、通过无放回子采样来减少异常点影响。 5)随机森林是通过减少模型方差提高性能;GBDT是通过减少模型偏差提高性能。Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。所以说bagging是通过减小方差来提高模型的性能(各个弱分类器所使用的训练集是通过随机采样获取的,因此能够学到更多的数据分布的特性),boosting是通过减小偏差来提高模型的性能。 4.GBDT和XGBoost的比较 1)GBDT只能以cart回归树作为基分类器,XGBoost还支持线性分类器 2)GBDT的目标函数只有损失函数,而XGBoost的目标函数是损失函数+正则项 3)GBDT仅使用了目标函数一阶泰勒展开,而XGBoost使用了二阶的泰勒展开值,加快了收敛速度。(GBDT用的是一阶导数处的值来近似误差,XGB是用二阶导数处的值来近似误差) 4)XGBoost加入了列采样(参照随机森林)用以防止过拟合(但是现在scikit-learn中的GBDT也能列采样了) 5)XGBoost通过预排序的方法(data事先排好序并以block的形式存储,利于并行计算)来实现树的分割点选择时增益计算的并行(并不是树级别的并行),提高了模型的训练效率 6)在进行树的分裂点的选择时XGBoost所利用的增益准则来源于目标函数的推导,而GBDT所利用的和方差最小原则和目标函数无关。 5.决策树与感知机的对比,GBDT和LR的对比 1)从处理的数据方面而言,感知机只能处理线性可分的数据,而决策树是非线性模型,可以处理非线性可分的数据。对于LR,它是广义的线性回归,尽管它可以通过核函数处理非线性可分的数据,但是一般不会这样干,它处理的还是线性可分的,只是通过特征组合融入非线性因素。 2)从决策面而言:在二维的情况下,感知机的决策面是一条直线,LR的决策面如果不考虑使用核函数也是一条直线,而决策树和GBDT相当于多次划分,是多条直线。 6.RF、GBDT以及XGBoost选取重要特征的依据 1)RF选取重要特征的依据 第一、平均不纯度减少(MDI):表示每个特征对误差的平均减少程度。 第二、平均精确率减少(MDA):打乱每个特征的特征值顺序,并且度量顺序变动对模型的精确率的影响。对于不重要的特征来说,打乱顺序对模型的精确率影响不会太大,但是对于重要的特征来说,打乱顺序就会降低模型的精确率。 2)sklearn GBDT是根据非叶子节点在分裂时加权不纯度减少的程度来衡量的,减少得越多说明特征越重要。 3)XGBoost则有三种方法(get_score) 第一、weight:特征用来作为分裂点的次数 第二、gain:使用特征进行切分的平均增益 第三、cover:某个特征在某个结点进行分裂时所覆盖的样本个数

标签:集成,分类器,机器,训练,XGBoost,学习,RF,GBDT,随机
来源: https://www.cnblogs.com/dyl222/p/11093783.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有