【问题标题】:Decision Tree Performance, ML决策树性能,ML
【发布时间】:2020-08-05 05:05:52
【问题描述】:

如果不给max_depthminimum number of samples for nodes等任何约束条件,决策树能一直给0训练误差吗?还是取决于数据集?显示的数据集呢?

edit- 有可能进行拆分,导致准确性低于父节点,对吧?根据决策树的理论,即使多次分裂后的最终结果可能很好,它也应该停止分裂!我对么?

【问题讨论】:

    标签: machine-learning decision-tree


    【解决方案1】:

    决策树总是会找到一个可以提高准确性/分数的分割

    例如,我在数据上构建了一个与您类似的决策树:

    在没有 2 个具有相同特征值但不同标签的样本的任何数据集上,决策树可以达到 100% 的准确度。

    这是决策树倾向于过度拟合的原因之一,尤其是在许多特征或具有许多选项的分类数据上。

    确实,有时,如果拆分带来的改进不够高,我们会阻止节点拆分。这是有问题的,因为某些关系,例如 y=x_1 xor x_2 不能由具有此限制的树表示。

    通常情况下,一棵树不会停止,因为他无法在训练数据上改进模型。 您看不到 100% 准确度的树的原因是我们使用了一些技术来减少过度拟合,例如:

    1. 树木修剪like this relatively new example。这基本上意味着您构建了整个树,然后返回并修剪对模型性能贡献不足的节点。
    2. 使用ratio 代替增益进行拆分。基本上,这是一种表达我们预计 50%-50% 拆分比 10%-90% 拆分带来的改进更少的事实的方式。
    3. 设置超参数,例如max_depthmin_samples_leaf,以防止树分裂过多。

    【讨论】:

    • 谢谢,解释得很好。我想在此评论中添加一个数字,但不能。那么你能看看这个stackoverflow.com/questions/61364693/splitting-in-decision-tree吗?
    • 很难准确判断分裂的位置,因为基尼杂质和熵对我们来说都更难想象。我想说的是,在这种情况下,以及在上面的情况下,第一个拆分类似于x<=T,其中T 是一个阈值,它的左侧几乎只需要一个标签。例如,在与上述类似的数据上,我得到x<=-0.04。这为我们提供了一个您几乎 100% 正确的节点(因此它非常纯净),以及 1 个您更差的较小节点。在您提供的示例中,我猜 0.7-0.8 之间的某个位置是最佳的
    • 在问题中显示的输入中(在决策树中拆分),它将拆分一个白色(+1)数据点并作为其子节点休息,对吗?但是我们最终会预测白色(+1)数据点是负数,对吗?那么我们就无法获得 100% 的训练准确率!!你能在stackoverflow.com/questions/61364693/splitting-in-decision-tree 上回答这个问题吗
    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2018-12-19
    • 2016-11-11
    • 2017-10-03
    • 2023-03-28
    • 2018-09-11
    相关资源
    最近更新 更多