决策树修剪

amitdamitd 委员、大学教授职位:49Maven
2021年6月编辑 帮助
我有两个与决策树操作符中的“修剪”(后修剪)相关的问题。

1.RM支持悲观修剪(即自顶向下),但不支持乐观修剪(即自底向上)。对吗?
2.在修剪过程中,精确的逻辑步骤是什么?
3.当使用启用了修剪选项的“训练集”训练决策树时,哪个“验证集”计算分类误差?它不可能是整个训练集因为那样的话,在完全生长的树中,分类误差将是0,它总是最小的。我对剪枝的理解是,通过应用树大小的惩罚因子来计算成本复杂性,并选择使验证集的分类错误最小化的树。当使用训练集时,如何进行验证?

我从这篇文章中得到了相关的想法帖子另一个之前的帖子。此外,我还查看了RapidMiner代码PessimisticPruner.java,但我无法从那里解析逻辑。

@IngoRM@land,和其他人-任何帮助将不胜感激。



标记:

答案

  • amitdamitd 委员、大学教授职位:49Maven
    为了补充我之前的评论,我认为决策树操作符中的修剪工作不正确。我附上了一个简单的过程与泰坦尼克号的数据集。切换修剪选项“打开”和“关闭”不会对生成的树和性能指标产生任何影响。同样,改变修剪置信水平(我尝试过0.001、0.05、0.1、0.5)也没有影响。有人能证实这里是否有bug吗?
    另外,我在上一篇文章中提出的问题在哪里?我会感谢社区的帮助。
  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3314年RM数据科学家
    @avd
    我不会说它毫无作用。看看下面的过程。添加置信度修剪减少了低层树中的节点数量。

    最好的
    马丁

    < ?xml version="1.0" encoding="UTF-8"?> <过程version = " 9.9.000”>
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文







    <过程扩展= " true " >


    < /操作符>











    < /操作符>











    < /操作符>












    > < /过程
    < /操作符>
    > < /过程


    - RapidMin乐鱼平台进入er数据科学服务主管
    德国多特蒙德
  • IngoRMIngoRM 管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、社区经理、RMResearcher、会员、大学教授职位:1751年RM创始人
    嘿,伙计们,
    同意,它确实为其他数据集做了一些事情。然而,我也发现有点奇怪的是,无论置信度是多少,似乎都不会对泰坦尼克号产生任何修剪影响……我将在我们的内部系统中创建一个票证,以便更仔细地检查它。情况很可能很好,但是让我们再检查一下……
    欢呼,
    Ingo
  • amitdamitd 委员、大学教授职位:49Maven
    2021年6月编辑
    谢谢你调查这件事。期待最新消息。
    我确实用其他一些数据集测试了它,得到了相同的结果。

    一些概念性的问题,将有助于回答
    (a)既然决策树算子是基于CART的,它是否使用Cost-Complexity修剪悲观修剪期间的方法?一些相关链接:链接1,scikit-learn Python的实现。
    (b)在修剪过程中如何进行验证(内部)?“训练”数据的哪一部分在内部用于验证?如何使用?
    (c)如果使用cc -剪枝方法,所选择的惩罚(alpha)参数是否可以告知用户解释?
    (d)如果不使用cc -修剪方法,使用的确切方法是什么?
  • amitdamitd 委员、大学教授职位:49Maven
    2021年6月编辑
    当我在等待社区中RM的人对剪枝功能进行双重检查时,经过进一步的挖掘,在我看来,Decision Tree操作符使用的是“悲观误差修剪方法(参见链接文章中的2.2.5节),而不是“成本复杂度方法”。有人能证实吗?在这种情况下,没有用于修剪的验证分区是有意义的。是否有计划将更流行的“成本复杂性方法”纳入到修剪中(可能是因为它能提供更可靠的结果)?
登录注册置评。