bagging
bagging用于复杂的model,解决over-fitting,例如决策树
boosting
用于简单的model
Adaboost
让新的data分布,在当前分类器上的正确率为50%,再使用新的data分布来训练下一个分类器
将分类正确的data权重降低,分类错误的data权重增加
gradient boosting
把adaboost当作梯度下降来做
回归树、提升树、梯度提升树:
https://www.cnblogs.com/zengzhen94/p/8744970.html
回归树:需要对每个数据进行分类得到一个回归值
提升树:使用许多个树,每个数据在所有树上的结果相加便是最后的结果
当前树的回归目标是之前的结果与真实值的残差
梯度提升树:使用泰勒一阶展开,也就是一阶导数来表示这个残差,之前的loss只能使用均方误差,现在可以使用其他loss
每一棵树得到的回归值就是一个loss的梯度,多个树累计到一起,就相当于做了梯度下降,得到最优值
XGBoost:对loss引入了正则化项,也就是树的大小和回归值大小的限制,并且对残差使用了泰勒二阶展开,考虑到了二阶导数,因此loss只要支持二阶导数都可以使用
XGBoost
每个样本都会分类到一个叶子节点,每个叶子节点都有一个权重,通过构造多个树,结合多个树的结果,得到最终的分类结果
这就需要考虑如何构建这么多个树,就是在之前树的结果上,优化当前树的结果
树大小的惩罚项,树越小越好,减少过拟合风险
通过得到的目标函数,作为每个节点分割的标准,就像熵和基尼系数一样
stacking