我一直在試圖確保使用CHAID包中實現的CHAID算法獲得的分類樹將生成一個具有至少minbucket
終端節點(樹葉)的樹觀察結果。根據CHAID過程的描述,這可以通過指定一個chaid_control
函數來完成:當使用CHAID包生成樹時,Minbucket不起作用
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
過程的實現......
謝謝!這解決了問題,現在一切都按預期工作!順便說一下,您是否通過檢查代碼瞭解了兩個正在使用的數量的最小值(可能取代_maximum_),還是基於其他一些知識? – 2014-12-03 11:41:32