Questions tagged «xgboost»

流行的增强算法和软件库(代表“极限梯度增强”)。Boosting将弱预测模型组合为强预测模型。


1
GBM,XGBoost,LightGBM,CatBoost之间的数学差异?
GBDT系列模型有几种实现,例如: GBM XGBoost LightGBM Catboost。 这些不同实现之间的数学区别是什么? 即使根据此基准测试仅使用Catboost的默认参数,Catboost似乎也胜过其他实现,但它仍然非常慢。 我的猜测是,catboost不使用虚拟变量,因此与其他实现相比,赋予每个(分类)变量的权重更加均衡,因此高基数变量的权重不会超过其他实现。它允许弱分类(具有低基数)进入某些树,因此性能更好。除此之外,我没有进一步的解释。
33 boosting  xgboost 

1
XGBoost损失函数与泰勒展开式的近似
例如,以第次迭代的XGBoost模型的目标函数为例:ttt L(t)=∑i=1nℓ(yi,y^(t−1)i+ft(xi))+Ω(ft)L(t)=∑i=1nℓ(yi,y^i(t−1)+ft(xi))+Ω(ft)\mathcal{L}^{(t)}=\sum_{i=1}^n\ell(y_i,\hat{y}_i^{(t-1)}+f_t(\mathbf{x}_i))+\Omega(f_t) 其中是损失函数,是第个树的输出,是正则化。近似值是快速计算的(许多)关键步骤之一:ℓℓ\ellftftf_ttttΩΩ\Omega L(t)≈∑i=1nℓ(yi,y^(t−1)i)+gtft(xi)+12hif2t(xi)+Ω(ft),L(t)≈∑i=1nℓ(yi,y^i(t−1))+gtft(xi)+12hift2(xi)+Ω(ft),\mathcal{L}^{(t)}\approx \sum_{i=1}^n\ell(y_i,\hat{y}_i^{(t-1)})+g_tf_t(\mathbf{x}_i)+\frac{1}{2}h_if_t^2(\mathbf{x}_i)+\Omega(f_t), 其中和是损失函数的一阶和二阶导数。gigig_ihih一世h_i 我要问的是令人信服的论点,以揭开上述近似为何起作用的神秘色彩: 1)具有上述近似值的XGBoost与具有完整目标函数的XGBoost相比如何?近似中丢失了哪些潜在的有趣的高阶行为? 2)很难形象化(并取决于损失函数),但是,如果损失函数具有较大的三次方分量,则逼近可能会失败。怎么不给XGBoost造成问题?

4
对于不平衡的数据集,在xgboost中scale_pos_weight的正确用法是什么?
我的数据集非常不平衡。我正在尝试遵循调整建议并使用,scale_pos_weight但不确定如何调整它。 我可以看到RegLossObj.GetGradient: if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight 因此,阳性样本的梯度会更具影响力。但是,根据xgboost论文,总是在特定树中特定节点的实例中局部使用梯度统计信息: 在节点的上下文中,以评估候选拆分的损失减少 在叶节点的上下文中,以优化赋予该节点的权重 因此,无法预先知道什么是好的scale_pos_weight-对于正负实例之间以1:100比率结尾的节点,以及1:2比率的节点,这是一个非常不同的数字。 有什么提示吗?

1
xgboost算法中min_child_weight的说明
xgboost中min_child_weight参数的定义为: 子级中实例重量的最小总和(hessian)。如果树分区步骤导致叶节点的实例权重之和小于min_child_weight,则构建过程将放弃进一步的分区。在线性回归模式下,这仅对应于每个节点中需要的最少实例数。越大,算法将越保守。 我已经在xgboost上阅读了很多东西,包括原始论文(请参见公式8和等式9后面的文章),该问题以及与xgboost有关的大多数事情,这些事都出现在Google搜索的前几页中。;) 基本上我还是不满意我们为什么要限制粗麻布的总和?从原始论文开始,我唯一的想法是,它与加权分位数草图部分(以及公式3的平方化加权平方损失的重新制定)有关,其中H一世hih_i是每个实例的“权重”。 另一个问题涉及为什么线性回归模式中的实例数仅仅是个数?我想这与平方和方程的二阶导数有关吗?

3
XGBoost vs Python Sklearn梯度增强树
我试图了解XGBoost的工作原理。我已经了解了梯度增强树如何在Python sklearn上工作。我不清楚XGBoost是否以相同的方式工作,但速度更快,或者它与python实现之间存在根本差异。 当我读这篇论文时 http://learningsys.org/papers/LearningSys_2015_paper_32.pdf 在我看来,XGboost的最终结果与Python实现中的结果相同,但是主要区别在于XGboost如何在每个回归树中找到最佳分割。 基本上,XGBoost提供相同的结果,但是速度更快。 这是正确的,还是我还缺少其他东西?


1
促进和袋装树木(XGBoost,LightGBM)
有很多关于袋装 或 助树的想法的博客文章,YouTube视频等。我的一般理解是,每个的伪代码为: 套袋: 取N个随机样本,占样本的x%和特征的y% 在每个N上拟合您的模型(例如决策树) 预测每个N 对预测取平均以得出最终预测 提升: 使模型(例如决策树)适合您的数据 获取残差 使模型适合残差 进行2次N轮助推 最终预测是顺序预测变量的加权和。 我将对上面的理解进行任何澄清,但是我想要的问题如下: XGBoost和LightGBM都具有允许打包的参数。该应用程序不是Bagging OR Boosting(每篇博客文章都在谈论),而是Bagging AND Boosting。在何时何地进行装袋和装袋的伪代码是什么? 我以为它是“袋装升压树”,但似乎是“升压袋装树”。差异似乎很大。 袋装助推树: 取N个随机样本,占样本的x%和特征的y% 在N个样本中的每个样本上拟合Boosted树 预测每个N 对预测取平均以得出最终预测 这似乎是最好的方法。毕竟,增加压力的风险是过度安装,装袋的主要好处是减少过度安装;打包一堆增强模型似乎是个好主意。 但是,通过浏览(例如,scikit-learn gradient_boosting.py(用于示例装袋,但不选择随机特征)),并在有关LightGBM和XGBoost的帖子中整理一些小块,看起来XGBoost和LightGBM的工作方式如下: 增强袋装树: 使决策树适合您的数据 对于我在N轮助推中: 获取残差 如果我mod bag_frequency == 0(即每5轮装袋): 取一个随机样本,占样本的x%和特征的y%;继续使用此随机样本 使树适合残差 最终预测是顺序预测变量的加权和。 请在这里更正我的理解并填写详细信息。Boosted Bagged树(每个bag_frequency仅包含1个随机树)似乎不如Bagged Boosted Tree强大。



1
线性基础学习器如何促进学习?以及它如何在xgboost库中工作?
我知道如何在XGBoost中实现线性目标函数和线性提升。我的具体问题是:当算法适合残差(或负梯度)时,是在每个步骤使用一个特征(即单变量模型)还是在所有特征(多元模型)中使用? 任何有关XGBoost中线性增强功能的文档参考都将受到赞赏。 编辑:通过将“ booster”参数设置为“ gblinear”,可以在XGBoost中实现线性增强。有关线性增强的有用信息,请参见:http : //www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/。请注意,我并不是在谈论目标函数(也可以是线性的),而是关于提升它们自己。 谢谢!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.