算法流程
- 回归树的生成【参考李航书,CART决策树算法浅谈(回归树部分)讲的也比较好】:
- 1)穷举扫描每一个属性特征及其取值,选取使均方误差最小的特征进行分枝;
- 2)根据划分到两个分枝的数据子集对应的y的平均值获得c1和c2,分别计算两个数据子集的平均绝对误差,选取可以使均方误差最小的特征和取值对作为节点,并确定子节点处的预测值为对应的c1和c2;
- 3)对子节点重复1)2)直到满足停止条件,递归地将数据集分割为更小的部分,直到总均方差的下降值小于某阈值或者数据集中只剩下一类数据为止;
- 4)将输入空间分为M个区域R1RM~,生成决策树;
- 前向分步算法,拟合残差直到分类完成或达到预设的终止条件,实现决策树的递归构建。
常见问题
-
gbdt 如何选择特征 ?
CART回归树用平方误差最小化选择特征
-
gbdt 如何构建特征 ?
GBDT的叶子节点编号可以与LR融合使用,落在的叶子为1,没有落到的为0
-
gbdt 如何用于分类?
对于多分类任务,训练时对N类都训练一个分类回归树,然后对于这N个输出计算交叉熵
-
gbdt 通过什么方式减少误差 ?
通过前向分步算法:即每棵树都是在拟合当前模型的预测值和真实值之间的误差,通过不断迭代减小误差
-
gbdt的效果相比于传统的LR,SVM效果为什么好一些 ?
GBDT基于树模型,继承了树模型的优点 :对异常点鲁棒、不相关的特征干扰性低(LR需要加正则)、可以很好地处理缺失值、受噪音的干扰小
-
gbdt 如何加速训练?
类似Xgboost的工程优化:Column Subsampling和特征值近似算法
-
gbdt的参数有哪些,如何调参 ?
- General parameters:常规参数,设置选择哪类booster,线程数等工程实现参数
- Booster parameters:booster的具体参数,如学习率、分隔最小增益、正则系数、树深、采样率、终止迭代阈值等
- Learning task parameters:学习任务参数,如loss类型,评估指标等
-
gbdt 实战当中遇到的一些问题 ?
根据实际情况吧
-
gbdt的优缺点 ?
- 优点:1)可以灵活处理各种类型的数据,包括连续值和离散值。2)对异常值比较鲁棒。3)相关性较低的特征干扰性较低。4)可以较好的处理缺失值。5)具有良好的可解释性
- 缺点:1)由于弱学习器之间存在依赖关系,难以并行训练数据。但是工程实现上同层节点可以并行计算且可以通过技巧提升训练速度
- GBDT如何进行正则化?
1)较长步长与Shrinkage同时使用,2)子采样比例subsample,3)针对弱分类器CART树的正则化剪枝操作