树算法总结(tree)
一、单棵树-决策树
单树作为所有集成树的基数,主要有三种:
- 1.ID3 (分类树)
- 2.C4.5(分类树)
- 3.CART(回归树)
详细学习方法可以参考我对应的博客学习。
二、决策树的集成学习
集成学习分为两种方法。
1.Bagging 集成
学习器间不存在强依赖关系、必须同时生成的并行化化方法。
- 随机森林
2.Boostring 集成
基学习器间存在强依赖关系、必须串行生成的序列化方法。
boostring方法在实际工程中主要使用四种方法:
- 1.adaboost
- 2.GBTD
- 3.xgBoost
- 4.LightGBM
三、bagging 和boosting算法区别
1.是否过拟合:
bagging 算法 base learners is weak because of overfitting .
boosting 算法base learners is weak because of underfitting .
2.采样:
bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
3.计算并行:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
4样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
5.这个很重要面试被问到了
为什么说bagging是减少variance,而boosting是减少bias?
variance:方差,bias:偏差区别参考:http://www.kexue.love/index.php/archives/22/
原因:
(1)而bagging,之所以进行bagging,是希望模型能够具有更好的鲁棒性,也就是稳定性,希望避免过拟合,显然这就是在减少variance。
Bagging中有两个操作都可以达到降低variance的效果,首先每一轮生成树的时候都是用bootstrap的方式在采样,即保证了数据集的相对多样性;此外bagging还随机选择k个特征,这可以进一步保证每个树之间的差异性,因此对于单独的一棵树来说它的偏差是非常高的,但是由于bagging生成的树可以是多种多样的,达到了防止过拟合的作用,即降低了方差。而对于bias来说的话,由于基分类器优化的目标本质上是一致的,所以bagging前后的bias是差不多的。
(2)通常来说boosting是在优化loss function,在降低loss,那么很显然,这在很大程度上是减少bias。
Boosting,每一轮迭代都根据前面迭代模型的效果来进行修正,进行样本或分类器的加权。这个过程也可以理解为一步一步的逼近真实值。因此如果迭代次数足够多,可以产生更好的预测结果,也就是减少了偏差。同时由于boosting中的基分类器是强相关的,总是利用残差来进行计算,所以不能显著的降低variance。
参考文献:
1.https://blog.csdn.net/dark_scope/article/details/24863289
2.https://www.jianshu.com/p/d55f7aaac4a7