【问题标题】:Finding non-monotonic regions in decision trees在决策树中查找非单调区域
【发布时间】:2013-05-15 07:00:36
【问题描述】:

我有一个二叉决策树 T,它采用 n 个实数的向量 V,并通过遵循 V 上的每个坐标二进制拆分来输出一个数字 S。我想找到树的非单调区域。也就是说,如果我在 V 中再减少一个输入以形成 V',然后树为 V' 分配比 V 更大的输出,那么我发现了一个非单调区域。

如何找到这些地区?

【问题讨论】:

    标签: algorithm machine-learning decision-tree


    【解决方案1】:

    我假设“每个坐标二进制拆分”意味着一次在单个坐标上做出决策。对于 L1 的值低于 L2 的所有叶 L1 和 L2 对,确定 L1 和 L2 的轴对齐边界框。如果对于某些 L1 和 L2,L1 的最大角超过 L2 的最小角,则树是非单调的。相反,如果不存在这样的对,则树是单调的。

    【讨论】:

    • 不错。与一位同事一起,我们也提出了枚举所有叶对的解决方案。有比 O(leaves^2) 更好的解决方案吗?
    • @rrenaud 渐近地说?无疑。问题是你真正关心的 n 和 #leaves 的范围。
    • @rrenaud 为了稍微扩展该评论​​,我认为这可以通过 O(log n) 调用(甚至可能是 O(1))到确定一组点的子例程来完成在 n 维中具有空的支配关系,这比 n 维最大值问题更容易,对于 n 维最大值问题,存在固定 n 的子二次算法。问题是后者遭受了维度的诅咒。
    • n 很小,现在 ~=10,可以想象它可以达到 50(这些对应于手工设计的特征)。我不确定叶子的数量,现在它不到 25k(训练点的数量),但可以变得更容易。
    • @rrenaud 粗略计算表明理论上最好的最大值算法对您没有用处。在枚举候选叶子对的方式上可能会有一些改进(例如,存储子树的最小值/最大值;遍历所有叶子,并在枚举另一个叶子的可能性时,修剪明显没有有趣可能性的子树)。
    【解决方案2】:

    我没有提供细节,只是提供大体方向。如果您需要更多详细信息,请告诉我。

    假设您有一棵考虑单个特征(即一个实数)并输出一个单个数字或一个范围的树。现在,很容易找到该树的非单调区域(在任何节点,如果左子树的范围与右子树的范围重叠,则树的该部分存在非单调区域)。

    您可以将您的通用 DT 转换为仅适用于一个功能的 DT 并应用上述方法。

    一般而言,您可以在每个节点上维护每个特征的范围,并使用我上面提到的相同标准来查找此类区域。

    【讨论】:

    • 我没有看到一般的 DT -> 单功能 DT 构造。从根本上说,即使是 2D DT 也具有无法比较的区域(在 OP 的 V、V' 意义上两者都不相互支配),而 1 特征 DT 中的所有区域都是可比较的。
    猜你喜欢
    • 2020-07-12
    • 2011-08-06
    • 2013-01-07
    • 1970-01-01
    • 2016-06-06
    • 2020-08-15
    • 2021-12-28
    • 2011-07-29
    • 2013-09-12
    相关资源
    最近更新 更多