XGBoost 树“开始功能中断”

数据挖掘 机器学习 决策树 xgboost
2022-02-14 18:52:30

我对学习 XGBoost 算法相当陌生,并且有一个关于算法如何知道首先破坏树的特征的问题。

这是我的理解(如果我错了,请纠正我):

每棵树都从单个叶子开始,所有残差都流向该叶子。然后我们计算相似度分数并尝试在一些特征特征之间进行分割。例如,假设我们只有一个特征——高度。如果残差各自的 x 值是高度 >,我们可以拆分残差180cm或高度 <180cm. 然后继续计算新叶子的相似度分数和增益,然后继续我们的树。

我现在的问题是说我们有两个或多个特征,例如身高、年龄、体重、教育等。算法如何知道在哪里打破初始残差?它是否对所有可能的特征进行计算并找到最佳增益?我可以想象大型数据集要遍历所有特征,然后在某个阈值处打破它并进行比较必须花费很长时间。

还是它从某个随机特征开始,然后像随机森林一样向下运行?我知道算法中有一个参数可以让你设置每棵树的特征百分比,所以一旦我们指定了这个百分比,它是如何选择特征的,更重要的是,一旦选择了这些特征,它如何知道哪一个?一个要挑断残差的初始叶子。

编辑:我尝试阅读该算法首次发表的论文,但发现它有点难以概念化和理解。

1个回答

每棵树都从单个叶子开始,所有残差都流向该叶子。然后我们计算相似度分数并尝试在一些特征特征之间进行分割。例如说我们只有一个特征——高度。如果残差各自的 x 值是高度 > 180𝑐𝑚 或高度 < 180𝑐𝑚,我们可以拆分残差。然后继续计算新叶子的相似度分数和增益并继续我们的树

我现在的问题是说我们有两个或多个特征,例如身高、年龄、体重、教育等。算法如何知道在哪里打破初始残差?它是否对所有可能的特征进行计算并找到最佳增益?我可以想象大型数据集要遍历所有特征,然后在某个阈值处打破它并进行比较必须花费很长时间。

  • 您再次谈论决策树及其复杂性,但是是的,对于大型数据集而言,计算成本过高。为了避免这种情况,使用了几种策略,如采样、特征选择或量化

还是它从某个随机特征开始,然后像随机森林一样向下运行?我知道算法中有一个参数可以让你设置每棵树的特征百分比,所以一旦我们指定了这个百分比,它是如何选择特征的,更重要的是,一旦选择了这些特征,它如何知道哪一个?一个要挑断残差的初始叶子。

  • 随机森林对树的每个分割进行随机特征选择。树木变得贪婪,所以它会尝试所有可能的分裂并选择最好的。如果原始论文太难,请尝试遵循有关随机森林的本教程