参考网络博客和个人理解记录如下:
1.GBDT(Gradient Boosting Decision Tree)
1.优势
- 效果还不错
- 既可用于分类也可用于回归
- 可以筛选特征
2.关键点
2.1 gbdt 的算法的流程?
gbdt通过多轮迭代,每轮迭代生成一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练.(弱分类器一般会选择CART TREE - 分类回归树)
最终的总分类器是将每轮训练得到的弱分类器加权求和得到. - 加法模型
模型最终可描述为:$F_M(x)=\sum_{m=1}^{M}T(x;\theta_{m})$
模型一共训练M轮,每轮产生一个弱分类器$T(x;\theta_m)$,弱分类器的损失函数
gbdt在每轮迭代的时候,都去拟合损失函数在当前模型下的负梯度.
2.2 gbdt 如何选择特征 ?
原始的gbdt做法非常暴力,首先遍历每个特征,然后对每个特征遍历它所有可能的切分点,找到最优特征m的最优切分点j.
2.3 gbdt 如何构建特征 ?
工业界做法是和逻辑回归结合,得到组合特征.
2.4 gbdt 如何用于分类?
对于多分类任务,GBDT的做法采用一对多的策略.一共有K个类别,训练M轮,每一轮都训练K个树,训练完成后一共有M*K个树.损失函数log loss
2.5 gbdt 通过什么方式减少误差 ?
拟合残差,梯度下降
2.6 gbdt的效果相比于传统的LR,SVM效果为什么好一些 ?
- 1.结合了多个弱分类器,是集成学习,所以泛化能力和准确率更高
- 2.SVM对于训练集不同的维度,数据量的大小,核函数的选择直接决定了模型的训练效果.gbdt相较于SVM和LR更不容易过拟合,因为它的超参学习能力较好,gbdt的泛化能力更多取决于数据集.
2.7 gbdt的参数有哪些,如何调参 ?
1.框架参数
- 步长 - 选择一个较大的步长
- 迭代次数或者说学习器的个数 - 100左右
- 学习率$\eta$
- 损失函数 - 分类问题和回归问题不一样(分类问题有对数似然和指数似然函数;回归模型有均方误差,绝对损失,Huber损失和分位数损失)
2.弱学习器参数
- 树的深度 - 10-100
- 最大特征数 - 划分时考虑的最大特征数
- 最小叶子结点样本数
- 最大叶子结点个数 - 限制最大叶子结点数,防止过拟合
2.8 gbdt的优缺点 ?
1.优点
- 泛化能力强,不容易过拟合
- 不需要复杂的特征工程
2.缺点
- 难以实行并行化
- 模型复杂度较高,深入分析和调优有一定难度
2.XgBoost(Extreme Gradient Boosting)
1.xgboost和GBDT区别
- 传统GBDT以CART作为基分类器,xgboost还支持线性分类器.
- 传统GBDT在优化时只用到一阶导数信息,而xgboost进行了二阶泰勒展开
- xgboost在代价函数中加入了正则项
- 对于缺失值的处理,xgboost可以自动学习出它的分裂方向
- xgboost支持并行,并行过程是在确定最佳分割点时,每一轮的训练还是前向分步法,这个过程不能并行.选择最佳分割点时使用近似直方图算法
3.SVM(Support Vector Machine)
参考该篇博客: https://blog.csdn.net/szlcw1/article/details/52259668 (谢谢作者整理)