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

Posted

技术标签:

【中文标题】catboost算法中对称树背后的直觉是啥?【英文标题】:What is the intuition behind symmetric trees in catboost algorithm?catboost算法中对称树背后的直觉是什么? 【发布时间】:2018-10-09 18:46:30 【问题描述】:

我一直在使用 catboost 算法,我很难理解使用对称树的意义。关于这点,我在他们的github上找到了:

该算法的一个重要部分是它使用对称树并逐级构建它们。 对称树是一棵树,其中每个级别的节点使用相同的拆分。这允许使用 idex 对叶子的路径进行编码。 例如,有一棵深度为 2 的树。第一层的拆分是 f1

他们说这有助于减少过度拟合并进行更快的推理,但从直觉上来说,这就像你需要两倍的深度来探索相同数量的分割。

那么,谁能解释一下使用这种树的真正优势是什么?

非常感谢。

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于catboost算法中对称树背后的直觉是啥?的主要内容,如果未能解决你的问题,请参考以下文章

找到堆的父级和子级的方程式背后的直觉是啥?

图像编辑软件中滤镜背后使用的算法是啥?

多维数组动态内存分配背后的算法是啥?

线性回归中确定系数背后的直觉

GlobalSpanCoefficient 背后的直觉

Akinator 游戏背后的算法是啥样的?