[英]Minbucket not working when producing trees with CHAID package
我一直在努力確保使用CHAID包中實現的CHAID算法獲得的分類樹將生成一個樹,其終端節點(葉子)至少具有minbucket
觀察數。 根據chaid過程的描述,這可以通過指定chaid_control
函數來完成:
chaid_control(alpha2 = 0.05, alpha3 = -1, alpha4 = 0.05,
minsplit = 20, minbucket = 7, minprob = 0.01,
stump = FALSE, maxheight = -1)
這與控制rpart包中的樹類似。
然而,設置minbucket
參數似乎不會對結果樹的最終形狀產生任何影響。 這是一個例子:
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個觀測值組成。 現在,通常,為了限制最小數量的觀測,應按如下方式進行:
ctrl <- chaid_control(minbucket = 200)
然而,援引
chaid(vote3 ~ ., data = USvoteS, control = ctrl)
產生與以前相同的樹(而不是具有至少200個觀察點的節點的樹)。
我不確定是否是我犯了錯誤或者在執行chaid
程序時遺漏了chaid
......
每個終端節點中的最小觀察數由minbucket
和minprob
控制。 前者給出絕對觀察次數,后者給出相對頻率(相對於當前節點的樣本大小)。 在內部,每個節點中使用兩個量的最小值 。 這對我來說也是違反直覺的,因為我預期會使用最大值 - 但我沒有檢查原始CHAID算法是否以這種方式描述。
如果要確保只有minbucket
控制最小節點大小,則設置minbucket = 200, minprob = 1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.