【问题标题】:Decision tree completely different between rpart and party packagerpart和party包之间完全不同的决策树
【发布时间】:2023-04-05 03:23:01
【问题描述】:

我想比较CART和CHAID算法,我选择rpart(cart算法)和party(chaid算法)来看看它们的区别。 我的数据是关于血压的:

派对功能返回我:

library(party)
# par <- ctree_control(minsplit=20, minbucket=10)
arbre <- ctree(bpress_level ~ ., data = df)
arbre
plot(arbre)

rpart 包返回给我:

library(rpart)
fit <- rpart(bpress_level ~ .,
             method="class", data=df)

printcp(fit) # display the results
plotcp(fit)

plot(fit, uniform=TRUE,
     main="Classification Tree for pressure level")
text(fit, use.n=TRUE, all=TRUE, cex=.8)

我不明白为什么树决定如此不同,这正常吗? 为什么对于派对包,算法会忽略烟雾、压力、性别...... 先感谢您。

【问题讨论】:

  • 可能是因为ctree 使用显着性检验来避免过度拟合,而在rpart 中则需要额外的步骤。关于这两个here有一些讨论
  • 还要注意,在深度为 2 的情况下,两棵树是相同的。所以很有可能在对 rpart 树进行一些额外的修剪之后(如@David Arenburg 所建议的那样),差异很小。
  • 补充说明:虽然CTree在很多方面与CHAID非常相似,但也有很多不同和改进等。所以我不会说CTree提供了CHAID实现。

标签: r decision-tree


【解决方案1】:

首先 ctree ([party]) 不使用 CHAID 算法。它与 CHAID 非常相似,但与 CHAID 不同。只有当数据本质上是分类数据时才能应用 CHAID。

当然,还有许多其他递归分区算法或多或少类似于可以处理混合数据类型的 CHAID。例如,CTree 算法(条件推理树)也是基于显着性检验,可在包partykit 中的 ctree() 中使用。

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 2013-05-01
    • 2021-05-30
    • 2015-06-28
    • 2013-02-09
    • 2019-02-11
    • 2017-09-08
    • 2018-08-26
    • 2020-10-05
    相关资源
    最近更新 更多