这两个算法在面经中提到较多,故而整理一下。
串行:Boosting,后一个学习器依赖于前一个,故为串行
并行:bagging(样本扰动)、随机森林(样本扰动和属性扰动)
Bagging和Boosting的区别:
1)样本选择上:Bagging训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。Boosting每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:Bagging使用均匀取样,每个样例的权重相等。Boosting根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:Bagging所有预测函数的权重相等。Boosting每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:Bagging各个预测函数可以并行生成。Boosting各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
决策树的叶节点对应于决策成果,其他每个节点对应于一个属性测试。
可通过信息增益(ID3决策树)、增益率(C4.5)、基尼指数(CART)等策略来进行最优属性划分。
信息增益对可取值数目较多的属性有所偏好,所以C4.5采用信息增益率作为划分依据,在信息增益基础上除以IV(a)。但是仍不能完全解决以上问题,而是有所改善,这个时候引入了CART树,它使用gini系数作为节点的分裂依据,反映了随机抽取两个样本,,其类别标记不一致的概率。
目的:防止过拟合
预剪枝:划分前估计能否带来精度提升(预留一部分数据集进行评估)
后剪枝:在完整的决策树上自底向上地对非叶节点考查,看替换为叶节点是否提升精度
分类决策树:上面提到的ID3/C4.5决策树(西瓜书)
回归决策树:它的作用在于数值预测,例如明天的温度、用户的年龄等等,而且对基于回归树所得到的数值进行加减是有意义的(例如10岁+5岁-3岁=12岁)。
属于Boosting家族的一员,将决策树与集成思想进行了有效的结合。GBDT使用到了回归决策树,它将累加所有树的结果作为最终结果。在前一颗树的梯度方向生成下一颗树,每棵树都在学习前面树尚存的不足。用于一个简单的例子来说明GBDT,假如某人的年龄为30岁,第一次用20岁去拟合,发现损失还有10岁,第二次用6岁去拟合10岁,发现损失还有4岁,第三次用3岁去拟合4岁,依次下去直到损失在我们可接受范围内。
一句话总结原理:先用一个初始值去学习一棵树,然后在叶子处得到预测值以及预测后的残差,之后的树则基于之前树的残差不断的拟合得到,累加所有树的结果作为最终结果。
优点:预测精度高、能处理非精度数据。
缺点:当数据集大且较为复杂时,迭代次数多,计算量大。
GBDT往往要生成很多数量的树才能达到令人满意的准确率,此算法是针对GBDT计算量大的缺点所做的改进
和GBDT方法一样,XGBoost的提升模型也是采用残差,不同的是分裂结点选取的时候不一定是最小平方损失,其损失函数如下,较GBDT其根据树模型的复杂度加入了一项正则化项