catboost算法中对称树背后的直觉是什么?

时间:2018-04-29 14:15:46

标签: machine-learning decision-tree catboost

我一直在使用catboost算法,我很难看到使用对称树的重点。在这方面,我发现他们的github:

  

算法的一个重要部分是它使用对称树并逐级构建它们。   对称树是一个树,每个级别的节点使用相同的分割。这允许使用idex将路径编码为叶子。   例如,存在深度为2的树。第一级的分割是f1 <2,第二级的分割是f2 <4。   然后f1 = 5,f2 = 0的对象将具有数字01b的叶子。

他们说,它有助于减少过度拟合,并且有更快的推理,但直观地说,就像你需要两倍的深度才能探索相同数量的分裂。

那么,任何人都可以解释使用这种树的实际优势吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

由于这是 Google 搜索中的第一个结果,我将提供答案。

典型的决策树是一系列 if/else 决策。假设您可以在每个处理器周期做出 1 个这样的决定——这会很快,但 100% 是连续的。要做出决定,您需要 O(m) 次决定,其中 m 是树的最大高度。

在 CatBoost 的对称树中,每个分割都在同一个属性上。要确定向左还是向右,您只需要知道树的当前级别,它对应于一个特征及其值。该阈值对于该级别上的所有分组都是相同的。通过这种方式,您可以向量化您的决策——创建一个阈值向量,一个您当前用于预测的值向量,并按元素进行比较。如果你有一个向量处理器,即它可以并行执行多个整数比较(这在现在很常见),你需要 1 个处理器周期来做出决定。

区别,如您所见,归结为向量化,能够在向量元素比较的 1 步中直接从根到叶,而不是 if/其他决定。