首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用链包生产树木时,Minbucket不起作用

用链包生产树木时,Minbucket不起作用
EN

Stack Overflow用户
提问于 2014-12-01 22:34:00
回答 1查看 1K关注 0票数 7

我一直试图确保使用在CHAID包中实现的CHAID算法获得的分类树将生成一个具有至少minbucket观测数的终端节点(leafs)的树。根据chaid过程的描述,可以通过指定chaid_control函数来完成这一任务:

代码语言:javascript
复制
chaid_control(alpha2 = 0.05, alpha3 = -1, alpha4 = 0.05,
              minsplit = 20, minbucket = 7, minprob = 0.01,
              stump = FALSE, maxheight = -1)

这与rpart包中控制树的行为类似。

尽管如此,设置minbucket参数似乎对最终的树的形状没有任何影响。下面是一个示例:

代码语言:javascript
复制
library("CHAID")
set.seed(290875)
USvoteS <- USvote[sample(1:nrow(USvote), 1000),]
chaid(vote3 ~ ., data = USvoteS)

Model formula:
vote3 ~ gender + ager + empstat + educr + marstat

Fitted party:
[1] root
|   [2] marstat in married
|   |   [3] educr <HS, HS, >HS: Gore (n = 311, err = 49.5%)
|   |   [4] educr in College, Post Coll: Bush (n = 249, err = 35.3%)
|   [5] marstat in widowed, divorced, never married
|   |   [6] gender in male: Gore (n = 159, err = 47.8%)
|   |   [7] gender in female
|   |   |   [8] ager in 18-24, 25-34, 35-44, 45-54: Gore (n = 127, err = 22.0%)
|   |   |   [9] ager in 55-64, 65+: Gore (n = 115, err = 40.9%)

Number of inner nodes:    4
Number of terminal nodes: 5

终端节点3、4、6、8和9分别由311、249、159、127和115观测组成。现在,通常情况下,为了限制最低数目的观察,我们应该进行以下工作:

代码语言:javascript
复制
ctrl <- chaid_control(minbucket = 200)

然而,援引

代码语言:javascript
复制
chaid(vote3 ~ ., data = USvoteS, control = ctrl)

生成与以前相同的树(而不是具有至少200个观测节点的树)。

我不确定是我犯了一个错误,还是在chaid过程的实现中遗漏了什么.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-02 22:57:11

每个终端节点的最小观测数由minbucketminprob控制。前者给出观测的绝对数目,后者给出相对频率(相对于当前节点的样本大小)。在内部,每个节点都使用这两个量的最小值。这对我来说也是违反直觉的,因为我本来希望使用最大值--但我没有检查原始CHAID算法是否是这样描述的。

如果要确保只有minbucket控制最小节点大小,则设置minbucket = 200, minprob = 1

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27238620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档