2014-12-01 26 views
2

我一直在試圖確保使用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過程的實現......

回答

0

觀察的每個終端節點通過minbucketminprob控制的最小數量。前者給出觀測的絕對數量,後者是相對頻率(相對於當前節點的樣本大小)。在內部,兩個數量的最小值用於每個節點。這對我來說也是違反直覺的,因爲我期望最大值被使用 - 但我沒有檢查原始CHAID算法是否以這種方式描述。

如果要確保只有minbucket控制最小節點大小,請設置minbucket = 200, minprob = 1

+0

謝謝!這解決了問題,現在一切都按預期工作!順便說一下,您是否通過檢查代碼瞭解了兩個正在使用的數量的最小值(可能取代_maximum_),還是基於其他一些知識? – 2014-12-03 11:41:32

相關問題