【问题标题】:Weka - Classification and Regression TreesWeka - 分类和回归树
【发布时间】:2022-03-23 04:59:03
【问题描述】:

我已经运行了分类和回归树 (trees.REPTree) 关于housing.arff 数据(66% 百分比拆分)。这就是结果。

REPTree
============

RM < 6.84
|   LSTAT < 14.8
|   |   LSTAT < 9.75 : 25.15 (88/21.02) [47/55.38]

叶子(25.15、88/21.02 等)的值是什么意思?

【问题讨论】:

  • 您找到答案了吗?我也有同样的问题。我已经在 Weka 列表上发布了它,但还没有答案。 weka.8497.n7.nabble.com/…

标签: weka


【解决方案1】:

我试图对答案进行逆向工程,如果我得到更明确的信息,我会更新这个。

我在 Toyota Corolla 数据集上运行了一棵非常小的树(预测二手车的价格)。这是树:

Age_08_04 < 32.5
|   Weight < 1297.5 : 18033.54 (121/6009564.12) [59/6768951.55]
|   Weight >= 1297.5 : 27945.83 (3/10945416.67) [3/22217291.67]
Age_08_04 >= 32.5
|   Age_08_04 < 57.5 : 11363.26 (296/2827594.01) [144/2999066.05]
|   Age_08_04 >= 57.5 : 8636.94 (537/1487597.91) [273/1821232.47]

叶节点中的第一个数字(18033、27945、11363、8636)是这些汽车的预测价格。 第二个和第四个数字加起来就是实例数: 121 + 59 + 3 + 3 ...+273 = 1436,整个集合中的实例数。 第二个数字加起来是 957(实例的三分之二),第四个数字加起来是 479(实例的三分之一)。

Witten 等人的书(数据挖掘:实用机器学习工具和技术,第 4 版),第 6.1 节(决策树:错误估计错误率)注释

“提出错误估计的一种方法是标准 验证技术:保留一些最初给出的数据 并将其用作独立的测试集来估计每个 节点。这称为减少错误修剪。”(Kindle 位置 5403)

所以我认为它对数据进行了 2/3、1/3 拆分,尽管我们也在进行 10 倍交叉验证。

第三和第五个数字(在 / 之后)似乎是 MSE。做一点代数,第五个数字的加权平均值与交叉验证总结中报告的均方根误差和相对方根误差一致。 (不太准确,但我认为我不会期望它是)

同样,如果我发现更多信息,我会更新这个答案——我很乐意从其他人那里获得更明确的信息。

【讨论】:

    【解决方案2】:

    为了完整起见,以下是 Weka 邮件列表中 Eibe Frank 的 answer 的副本(日期为 2015 年 1 月 21 日):

    请记住,REPTree 将数据拆分为增长集和修剪集(除非您关闭修剪)。

    假设你有

      (A/B) [C/D]
    

    这个表达式的含义取决于你是在做回归(你的情况)还是分类。

    回归案例

    • A: 生长集中最终进入该叶子的所有实例的总权重
    • B:增长集中所有实例的平均平方误差,这些实例最终出现在这个叶子中(考虑实例权重)
    • C:剪枝集中最终在这个叶子中的所有实例的总权重
    • D: 修剪集中所有实例的平均平方误差,这些实例最终位于该叶子中(考虑实例权重)

    分类案例

    • A:同上面的A
    • B: 生长集中最终进入该叶子的所有错误分类实例的总权重
    • C:同上面的C
    • D: 修剪集中所有错误分类实例的总权重,这些实例最终出现在这个叶子中

    与您的情况一样,修剪集上的误差通常会大于增长集上的误差。

    请注意,A、B、C 和 D 是在 反向拟合之前计算的,这是 REPTree 算法中在树生长和修剪之后发生的最后一步。在反向拟合期间,修剪集中的数据用于更新叶节点的预测,因此这些预测基于完整的组合数据。

    输出中显示的叶节点处的预测是后拟合得到的。

    【讨论】:

      【解决方案3】:

      为了对标称数据进行分类,https://www.analyticsvidhya.com/blog/2020/03/decision-tree-weka-no-coding/ 表示这些是 REPTree(减少错误修剪树)算法的产物。

      • 括号前的值表示分类值
      • 第一个括号中的第一个值是总数 来自该叶子中的训练集的实例。第二个值是 该叶子中错误分类的实例数
      • 第二个括号中的第一个值是总数 来自该叶子中的修剪集的实例。第二个值是 该叶子中错误分类的实例数

      这与@zbicyclist 的answer 一致。

      【讨论】:

        猜你喜欢
        • 2012-10-27
        • 2016-04-17
        • 2019-07-02
        • 2012-02-28
        • 2013-10-14
        • 2015-02-05
        • 2017-12-08
        • 2015-11-23
        • 2013-02-21
        相关资源
        最近更新 更多