我对学习 XGBoost 算法相当陌生,并且有一个关于算法如何知道首先破坏树的特征的问题。
这是我的理解(如果我错了,请纠正我):
每棵树都从单个叶子开始,所有残差都流向该叶子。然后我们计算相似度分数并尝试在一些特征特征之间进行分割。例如,假设我们只有一个特征——高度。如果残差各自的 x 值是高度 >,我们可以拆分残差或高度 <. 然后继续计算新叶子的相似度分数和增益,然后继续我们的树。
我现在的问题是说我们有两个或多个特征,例如身高、年龄、体重、教育等。算法如何知道在哪里打破初始残差?它是否对所有可能的特征进行计算并找到最佳增益?我可以想象大型数据集要遍历所有特征,然后在某个阈值处打破它并进行比较必须花费很长时间。
还是它从某个随机特征开始,然后像随机森林一样向下运行?我知道算法中有一个参数可以让你设置每棵树的特征百分比,所以一旦我们指定了这个百分比,它是如何选择特征的,更重要的是,一旦选择了这些特征,它如何知道哪一个?一个要挑断残差的初始叶子。
编辑:我尝试阅读该算法首次发表的论文,但发现它有点难以概念化和理解。