首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

BAT面试题78:xgboost为什么用泰勒展开?是有放回选特征吗?

今天连载两题,都是关于XGBoost的。文中提到的陈大佬即是发明者:陈天奇。 7.为什么XGBoost要用泰勒展开,优势在哪里?...实际上使用二阶泰勒展开是为了xgboost能够【自定义loss function】,如果按照最小二乘法的损失函数直接推导,同样能够得到陈大佬最终的推导式子: ?...二阶泰勒展开实际不是最小二乘法,平方损失函数的二阶泰勒展开=最小二乘法。...但陈佬为何想用二阶泰勒展开呢,我猜是为了xgboost库的可扩展性,因为任何损失函数只要二阶可导即能【复用】陈大佬所做的关于最小二乘法的任何推导。...8.XGBoost如何寻找最优特征?是有放回还是无放回的呢? XGBoost在训练的过程中给出各个特征的评分,从而表明每个特征对模型训练的重要性。

7.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

XGBoost超详细推导,终于有人讲明白了!

- 如何计算树节点的权值? - 为防止过拟合,XGB做了哪些改进?...细心的同学可以发现,这里我们将正则化项进行了拆分,由于前 t-1棵树的结构已经确定,因此,前 t-1 棵树的复杂度之和可以用一个常量表示: ? 3. 泰勒公式展开 首先简单回忆一下,泰勒公式。...泰勒公式是将一个在 x = x0 处具有n阶导数的函数 f(x) 利用关于 (x-x0) 的n次多项式来逼近函数的方法。 泰勒公式的二阶展开形式如下: ?...然后,将【4】【5】中一棵树及其复杂度的定义,带入到【3】中泰勒展开后的目标函数Obj中,具体推导如下: ? 为进一步简化该式,我们进行如下定义: ?...XGB用二阶泰勒展开的优势在哪? XGB为了防止过拟合,进行了哪些设计? XGB如何处理缺失值? XGB如何分裂一个结点?如何选择特征? XGB中一颗树停止生长的条件有哪些?

12.2K95

XGBoost超详细推导,终于讲明白了!

- 如何计算树节点的权值? - 为防止过拟合,XGB做了哪些改进?...细心的同学可以发现,这里我们将正则化项进行了拆分,由于前 t-1棵树的结构已经确定,因此,前 t-1 棵树的复杂度之和可以用一个常量表示: ? 3. 泰勒公式展开 首先简单回忆一下,泰勒公式。...泰勒公式是将一个在 x = x0 处具有n阶导数的函数 f(x) 利用关于 (x-x0) 的n次多项式来逼近函数的方法。 泰勒公式的二阶展开形式如下: ?...然后,将【4】【5】中一棵树及其复杂度的定义,带入到【3】中泰勒展开后的目标函数Obj中,具体推导如下: ? 为进一步简化该式,我们进行如下定义: ?...XGB用二阶泰勒展开的优势在哪? XGB为了防止过拟合,进行了哪些设计? XGB如何处理缺失值? XGB如何分裂一个结点?如何选择特征? XGB中一颗树停止生长的条件有哪些?

3.8K32

终于有人把XGBoost LightGBM 讲明白了,项目中最主流的集成算法!

+1 阶导数,则对闭区间 上任意一点 x 有 其中的多项式称为函数在 处的泰勒展开式, 是泰勒公式的余项且是 的高阶无穷小。...1.1.3 最优切分点划分算法 在决策树的生长过程中,一个非常关键的问题如何找到叶子的节点的最优切分点,Xgboost 支持两种分裂节点的方法——贪心算法近似算法。...1.3 优缺点 1.3.1 优点 精度更高:GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开。...XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数; 灵活性更强:GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART...针对这种想法,我们会遇到两个问题: 哪些特征可以一起绑定? 特征绑定后,特征值如何确定? 对于问题一:EFB 算法利用特征特征间的关系构造一个加权无向图,并将其转换为图着色算法。

3K20

终于有人把XGBoost LightGBM 讲明白了,项目中最主流的集成算法!

+1 阶导数,则对闭区间 上任意一点 x 有 其中的多项式称为函数在 处的泰勒展开式, 是泰勒公式的余项且是 的高阶无穷小。...1.1.3 最优切分点划分算法 在决策树的生长过程中,一个非常关键的问题如何找到叶子的节点的最优切分点,Xgboost 支持两种分裂节点的方法——贪心算法近似算法。...1.3 优缺点 1.3.1 优点 精度更高:GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开。...XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数; 灵活性更强:GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART...针对这种想法,我们会遇到两个问题: 哪些特征可以一起绑定? 特征绑定后,特征值如何确定? 对于问题一:EFB 算法利用特征特征间的关系构造一个加权无向图,并将其转换为图着色算法。

3.7K20

终于有人把XGBoost LightGBM 讲明白了,项目中最主流的集成算法!

+1 阶导数,则对闭区间 上任意一点 x 有 其中的多项式称为函数在 处的泰勒展开式, 是泰勒公式的余项且是 的高阶无穷小。...1.1.3 最优切分点划分算法 在决策树的生长过程中,一个非常关键的问题如何找到叶子的节点的最优切分点,Xgboost 支持两种分裂节点的方法——贪心算法近似算法。...1.3 优缺点 1.3.1 优点 精度更高:GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开。...XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数; 灵活性更强:GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART...针对这种想法,我们会遇到两个问题: 哪些特征可以一起绑定? 特征绑定后,特征值如何确定? 对于问题一:EFB 算法利用特征特征间的关系构造一个加权无向图,并将其转换为图着色算法。

78720

【ML】项目中最主流的集成算法XGBoost LightGBM

+1 阶导数,则对闭区间 上任意一点 x 有 其中的多项式称为函数在 处的泰勒展开式, 是泰勒公式的余项且是 的高阶无穷小。...1.1.3 最优切分点划分算法 在决策树的生长过程中,一个非常关键的问题如何找到叶子的节点的最优切分点,Xgboost 支持两种分裂节点的方法——贪心算法近似算法。...1.3 优缺点 1.3.1 优点 精度更高:GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开。...XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数; 灵活性更强:GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART...针对这种想法,我们会遇到两个问题: 哪些特征可以一起绑定? 特征绑定后,特征值如何确定? 对于问题一:EFB 算法利用特征特征间的关系构造一个加权无向图,并将其转换为图着色算法。

60310

终于有人把XGBoost LightGBM 讲明白了,项目中最主流的集成算法!

+1 阶导数,则对闭区间 上任意一点 x 有 其中的多项式称为函数在 处的泰勒展开式, 是泰勒公式的余项且是 的高阶无穷小。...1.1.3 最优切分点划分算法 在决策树的生长过程中,一个非常关键的问题如何找到叶子的节点的最优切分点,Xgboost 支持两种分裂节点的方法——贪心算法近似算法。...1.3 优缺点 1.3.1 优点 精度更高:GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开。...XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数; 灵活性更强:GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART...针对这种想法,我们会遇到两个问题: 哪些特征可以一起绑定? 特征绑定后,特征值如何确定? 对于问题一:EFB 算法利用特征特征间的关系构造一个加权无向图,并将其转换为图着色算法。

1.2K10

【机器学习】xgboost系列丨xgboost原理及公式推导

建树过程中如何选择使用哪个特征哪个值来进行分裂? 什么时候停止分裂? 如何计算叶节点的权值? 建完了第一棵树之后如何建第二棵树? 为防止过拟合,XGB做了哪些改进 树的集成 ?...泰勒展开 ? gbdt的目标函数与xgboost区别就是带不带正则项,也就是上面式子中的 ? 。...而xgboost在这里使用了二阶泰勒展开,因为包含了损失函数的二阶信息,其优化的速度大大加快。 ? 下面来看一下泰勒展开的推导。首先我们来复习一下泰勒定理: 设n是一个正整数。...其中的多项式称为函数在a处的泰勒展开式,剩余的 ? 是泰勒公式的余项,是 ? 的高阶无穷小。 该公式经过变换 ? 可以得到二阶展开式: ? 对于式子: ? 可以这样分析, ? 为预测值 ?...对于二分类问题常使用负log损失作为损失函数,下面推导一下log loss的一阶梯度G海森矩阵H。 ? : ? 其中p为预测概率。若 ? 为预测值,则有: ? 因此: ? 即: ? ?

1.2K20

30分钟看懂XGBoost的基本原理

相比于经典的GBDT,xgboost做了一些改进,从而在效果性能上有明显的提升(划重点面试常考)。 第一,GBDT将目标函数泰勒展开到一阶,而xgboost将目标函数泰勒展开到了二阶。...第二,GBDT是给新的基模型寻找新的拟合标签(前面加法模型的负梯度),而xgboost是给新的基模型寻找新的目标函数(目标函数关于新的基模型的二阶泰勒展开)。...已知第t棵树的学习目标的前提下,如何学习这棵树?具体又包括是否进行分裂?选择哪个特征进行分裂?选择什么分裂点位?分裂的叶子节点如何取值?...我们首先考虑如何boost的问题,顺便解决分裂的叶子节点如何取值的问题。 ? ? ? ? 四、如何生成第t棵树? xgboost采用二叉树,开始的时候,全部样本都在一个叶子节点上。...对叶子节点分裂生成树的过程有几个基本的问题:是否要进行分裂?选择哪个特征进行分裂?在特征的什么点位进行分裂?以及分裂后新的叶子上取什么值? 叶子节点的取值问题前面已经解决了。

1.8K20

XGBoost超详细推导,终于有人讲明白了!

- 如何计算树节点的权值? - 为防止过拟合,XGB做了哪些改进?...细心的同学可以发现,这里我们将正则化项进行了拆分,由于前 t-1棵树的结构已经确定,因此,前 t-1 棵树的复杂度之和可以用一个常量表示: ? 3. 泰勒公式展开 首先简单回忆一下,泰勒公式。...泰勒公式是将一个在 x = x0 处具有n阶导数的函数 f(x) 利用关于 (x-x0) 的n次多项式来逼近函数的方法。 泰勒公式的二阶展开形式如下: ?...然后,将【4】【5】中一棵树及其复杂度的定义,带入到【3】中泰勒展开后的目标函数Obj中,具体推导如下: ? 为进一步简化该式,我们进行如下定义: ?...这涉及到一个超参数:最小样本权重,是指如果一个叶子节点包含的样本数量太少也会放弃分裂,防止树分的太细,这也是过拟合的一种措施。 每个叶子结点的样本权值计算方式如下: ?

1.3K20

数据分析利器:XGBoost算法最佳解析

因此,使用泰勒级数对目标函数进行展开,对目标函数规整、重组后,将目标函数转换为关于预测残差的多项式函数。 第三个阶段,如何将树的结构引入到目标函数中? 第二个阶段得到的多项式目标函数是一个复合函数。...为了解决目标函数无法进行进一步优化,XGBoost原文是使用泰勒级数展开式技术对目标函数进行近似转换,即使用函数的1阶、2阶、3阶...阶导数对应的函数值,将目标函数进行多项式展开,多项式阶数越多,对目标函数的近似程度越高...对目标函数进行泰勒展开,就是为了统一目标函数的形式,针对回归分类问题,使得平方损失或逻辑损失函数优化求解,可以共用同一套算法框架及工程代码。...图6.XGBoost目标函数泰勒展开式官方解释 相对于GBDT的一阶泰勒展开XGBoost采用二阶泰勒展开,可以更精准的逼近真实的损失函数,提升算法框架的精准性。...导数信息:GBDT在优化求解时,只是用到一阶导数信息,XGBoost对代价函数做了二阶泰勒展开,同时用到一阶二阶导数信息。另外,XGBoost工具支持自定义代价函数,只要函数可以一阶二阶求导即可。

1.8K20

推荐收藏 | 10道XGBoost面试题送给你

XGBoost对GBDT进行了一系列优化,比如损失函数进行了二阶泰勒展开、目标函数加入正则项、支持并行默认缺失值处理等,在可扩展性训练速度上有了巨大的提升,但其核心思想没有大的变化。 2....XGBoost与GBDT有什么不同 基分类器:XGBoost的基分类器不仅支持CART决策树,还支持线性分类器,此时XGBoost相当于带L1L2正则化项的Logistic回归(分类问题)或者线性回归...导数信息:XGBoost对损失函数做了二阶泰勒展开,GBDT只用了一阶导数信息,并且XGBoost还支持自定义损失函数,只要损失函数一阶、二阶可导。...XGBoost为什么使用泰勒二阶展开 精准性:相对于GBDT的一阶泰勒展开XGBoost采用二阶泰勒展开,可以更为精准的逼近真实的损失函数 可扩展性:损失函数支持自定义,只需要新的损失函数二阶可导。...XGBoost如何处理缺失值 XGBoost模型的一个优点就是允许特征存在缺失值。

1K10

机器学习算法中 GBDT XGBOOST 的区别有哪些?

Xgboost在代价函数里加入了正则项,用于控制模型的复杂度,降低了过拟合的可能性。正则项里包含了树的叶子节点个数,每个叶子节点上输出的score的L2模的平方,普通GBDT没有。...gamma ,delta 为参数 2.xgboost损失函数对误差部分是二阶泰勒展开,GBDT 是一阶泰勒展开,所以损失函数定义的更精确。...传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶二阶导数。为什么xgboost要用泰勒展开,优势在哪里?...xgboost使用了一阶二阶偏导, 二阶导数有利于梯度下降的更快更准....使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取模型算法优化/参数选择分开了.

45510

随机森林、AdaBoost XGBoost 三者之间的主要区别

XGBoost 的核心作者陈天奇为什么用二阶泰勒展开呢?...XGBoost 之所以采用二阶泰勒展开,是为了能够自定义损失函数,提高算法的可扩展性,使其能够近似大量的损失函数,从而支持回归、分类排名任务。...泰勒展开式的本质在于尽可能地近似一个函数,二阶泰勒展开已经足够近似许多损失函数,例如基于分类的对数似然损失函数。...一阶导指示梯度方向,而二阶导则揭示了梯度方向如何变化,类似牛顿法比 SGD 收敛更快,二阶导信息可以使得梯度收敛更加快速精确。...XGBoost 通过采用二阶泰勒展开直接求解最优化问题,有效避免了 GBDT 采用一阶泰勒展开时所需的 “打补丁” 方法,这凸显了 XGBoost 在模块化设计上的显著优势。

31700

终于有人说清楚了--XGBoost算法

利用泰勒展开三项,做一个近似。...那接下来,我们如何选择每一轮加入什么 f 呢?答案是非常直接的,选取一个 f 来使得我们的目标函数尽量最大地降低。这里 f 可以使用泰勒展开公式近似。 ?...GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代 价函数进行二阶泰勒展开,可以同时使用一阶二阶导数。...为什么XGBoost要用泰勒展开,优势在哪里? XGBoost使用了一阶二阶偏导, 二阶导数有利于梯度下降的更快更准....使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取模型算法优化/参数选择分开了.

5.8K10

博客 | 干货 | 一文读懂横扫Kaggle的XGBoost原理与实战(一)

回归树的参数我们知道有两个:(1)选哪个feature进行分裂(2)如何求取节点的预测值,上述公式并没有很好地反映出这两个问题的答案,那么是如何解决上述两个问题的呢?...到这你可能发现了,这不就是二次函数的最优化问题吗? 那如果损失函数不是平方误差函数怎么办?我们采用的是泰勒展开的方式,任何函数总能用泰勒展开的方法表示,不是二次函数我们总能想办法让它变成二次函数。...那么我们再来看我们的两个问题: (1)选哪个feature进行分裂?最粗暴的枚举法,用损失函数效果最好的那一个(粗暴枚举XGBoost的并行化等我们在后面介绍) (2)如何求取节点的预测值,对!...3.3损失函数 这个点也是XGBoost比较bug的地方,因为XGBoost能够自定义损失函数,只要能够使用泰勒展开(能求一阶导二阶导)的函数,都可以拿来做损失函数。你开心就好!...泰勒展开后的一般损失函数 f_t(x_i)是什么?它其实就是f_t的某个叶子节点的值。之前我们提到过,叶子节点的值是可以作为模型的参数的。其中: ?

1K20

机器学习|XGBoost

(看懂了就动动小手点个赞吧) 01 XGBoost的定义 GBDT一样,XGBoost也是一种基于CART树的Boosting算法,让我们来看一下如何通俗的去理解XGBoost。...示例图计算方式如下表示: ? ? image.png 07 问题小结 至此,我们的XGBoost的原理就全都说通了,下面再来看几个通常会遇到的问题: obj中的constant是怎么来的?...XGBoost为什么用泰勒展开XGBoost使用了一阶二阶偏导, 二阶导数有利于梯度下降的更快更准....使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取模型算法优化/参数选择分开了....这种去耦合增加了xgboost的适用性, 使得它按需选取损失函数, 可以用于分类, 也可以用于回归。简单的说:使用二阶泰勒展开是为了xgboost能够自定义loss function。

51830

最全!两万字带你完整掌握八大决策树!

我们可以看到,基尼指数可以理解为熵模型的一阶泰勒展开。这边在放上一张很经典的图: ? 3、缺失值处理 上文说到,模型对于缺失值的处理会分为两个子问题如何在特征值缺失的情况下进行划分特征的选择?...对于一个二分类问题节点 node 被分成类别 1 当且仅当: ? 比如二分类,节点属于 1 类 0 类的分别有 20 80 个。...处的泰勒展开式, ? 是泰勒公式的余项且是 ? 的高阶无穷小。 根据泰勒公式我们把函数 ? 在点 ? 处进行泰勒的二阶展开,可得到如下等式: ? 我们把 ? 视为 ?...3)最优切分点划分算法 在决策树的生长过程中,一个非常关键的问题如何找到叶子的节点的最优切分点,Xgboost 支持两种分裂节点的方法——贪心算法近似算法。 A.贪心算法 从深度为 ?...3、优缺点 1)优点 精度更高:GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开

1.3K32
领券