决策树
xgboost和lightgbm_西二旗鲁智深的博客-CSDN博客
1.介绍一下决策树
决策树是依托策略决策而建立起来的树,沿树的方向,熵减小(不确定性减小)
决策树涉及到节点(特征)的划分标准,有三种:最大信息增益、最大信息增益率、基尼系数。而这三种不同的划分标准就对应了三种典型决策树:ID3(最大信息增益)、C4.5(最大信息增益率)、CART(基尼系数)。
2.决策树的划分标准
有三种:最大信息增益、最大信息增益率、基尼系数。而这三种不同的划分标准就对应了三种典型决策树:ID3(最大信息增益)、C4.5(最大信息增益率)、CART(基尼系数)。
id3的分裂准则是信息增益(熵模型),每次分裂时,计算label的信息熵,计算每个特征下的条件熵,信息增益 = 信息熵-条件熵。找到信息增益最大的特征进行分裂,是一个多叉树。信息增益越大,意味着使用属性a来进行划分所获得的“纯度提升”越大。
信息增益的缺点是对nunique值较多的特征比较敏感。
c4.5的树分裂准则是信息增益率(熵模型),克服了这个缺点。把特征的取值数作为惩罚项加了进去。
cart树的树分裂准则是基尼系数,避免了计算信息增益时的大量log运算。计算label的基尼系数,计算每个特征下的基尼系数,基尼增益是两者相减,找到基尼增益最大的特征进行分裂,是一个多叉树。
此外,id3没有剪枝策略,其他两个有,cart树既能分类又能回归,其他两个只能分类。
3.决策树的剪枝
机器学习算法——决策树4(剪枝处理)_Vicky_xiduoduo的博客-CSDN博客_决策树剪枝
4.树模型对离散特征和连续特征怎么处理的
连续特征树模型如何对连续型特征进行处理?_不拿大场offer不改名的博客-CSDN博客
假设训练样本集合D中有n个样本,考察对连续属性a的最佳划分点。
若属性a在这n个样本中有m个不同的取值(m<=n),对这m个值两两之间取中点,可获得m-1个中点作为候选划分点。
选择过程
接下来的选择最佳划分点过程和离散属性的虚选择过程类似,以基尼系数或信息增益作为度量,选择使度量值最大的候选划分点作为最佳划分点。
xgboost
RF,GBDT,XGBOOST, LightGBM的对比和分析-蒲公英云
1.介绍一下xgboost
【算法岗求职笔记】集成学习(五)Xgboost · 十三问十三答
xgboost是属于boosting家族,是GBDT算法的一个工程实现,是前向加法模型,在模型的训练过程中是聚焦残差。
损失函数与gbdt不同,gbdt树分裂的时候是用的最小平方误差原则,去拟合梯度方向。xgboost在目标函数中使用了二阶泰勒展开并加入了正则项,正则项里包括了树的叶子结点个数、每个叶子结点上输出分数的L2模的平方和。
树分裂采用了精确贪心的思路,寻找最佳分裂点的时候,使用了预排序(pre-sorted)算法,对所有特征都按照特征的数值进行预排序,然后遍历所有特征上的所有分裂点位,计算按照这些候选分裂点位分裂后的全部样本的目标函数增益,找到最大的那个增益对应的特征和候选分裂点位,从而进行分裂。
在对特征数值进行预排序时,存储为block结构,以后在结点分裂时可以重复使用该结构,可以采用特征并行的方法利用多个线程分别计算每个特征的最佳分割点,根据每次分裂后产生的增益,最终选择增益最大的那个特征的特征值作为最佳分裂点。
2.简述具体的树分裂过程
在决策树的生成过程中采用了精确贪心的思路,寻找最佳分裂点的时候,使用了预排序(pre-sorted)算法,对所有特征都按照特征的数值进行预排序,然后遍历所有特征上的所有分裂点位,计算按照这些候选分裂点位分裂后的全部样本的目标函数增益,找到最大的那个增益对应的特征和候选分裂点位,从而进行分裂。
(xgb后续的优化,可以不提,放到和lightgbm的区别里)贪婪算法可以的到最优解,但当数据量太大时则无法读入内存进行计算,近似算法主要针对贪婪算法这一缺点给出了近似最优解。对于每个特征,只考察分位点可以减少计算复杂度。将连续型特征映射到由这些候选点划分的桶中,然后聚合统计信息找到所有区间的最佳分裂点。
LightGBM里默认的训练决策树时使用直方图算法(根据直方图的离散值,遍历寻找最优的分割点。)XGBoost里现在也提供了这一选项,不过默认的方法是对特征预排序,直方图算法是一种牺牲了一定的切分准确性而换取训练速度以及节省内存空间消耗的算法。
3.XGBoost如何评价特征的重要性
weight :该特征在所有树中被用作分割样本的特征的总次数。
gain :该特征在其出现过的所有树中产生的平均增益。
4.xgboost为什么快
5.Xgboost为什么要用泰勒展开,优势在哪儿
【算法岗求职笔记】集成学习(五)Xgboost · 十三问十三答
6.gbdt,xgb,lgb的区别
https://www.jianshu.com/p/765efe2b951a
xgb树的如何分裂的
gbdt和xgb区别:
1.损失函数上的区别
2.树分裂的时候,寻找最佳分裂节点的时候,xgb做的工程实现优化,
lgb为何比xgb快?具体是如何并行计算的?
xgb为什么可以使用不同的基分类器?(从损失函数角度出发)
xgb每一个基分类器的损失函数。
7.gbdt做分类和回归有什么区别
20201010
gbdt详细的例子。
https://hexinlin.top/2020/02/24/decision-tree/
决策树算法详解。