2015-04-06 62 views
0

我在R中創建了一個決策樹。當我繪製它時,我只有3個節點(1個根和2個終端)。我用來創建決策樹的公式是R中決策樹中的節點 - 需要更多節點

>FertilityTree <- rpart(Output~ Age + Surgery + RDrugs + SpermCount +  Smoker, data = FertilityTree, method = "class") 

這是生產的圖形是: http://rpubs.com/BonitaWilliams/fertilitydecisiontree

能否請你幫我一個圖表,顯示更多的節點?或者告訴我爲什麼我的節點很少?

+0

我剛剛看到一個空白頁在http://rpubs.com/BonitaWilliams/fertilitydecisiontree;另外,你可以包括你的'庫'/'需要'語句嗎?數據是現有軟件包的一部分嗎? –

+0

爲什麼應該有更多的節點?如果我正確理解決策樹,決策樹擬合已經決定有足夠的節點來做出最佳決策而不會過度擬合。 – Spacedman

回答

0

有些參數可用於向分裂算法提供更多信息,以增加(或減少)節點數量。如果您有一個特定的結果,預計錯誤會更加昂貴,那麼您需要爲其指定一個不同的loss。由於沒有示例數據就沒有測試示例代碼,但「損失」規範的形式是這樣的:

FertilityTree <- rpart(Output~ Age + Surgery + RDrugs + SpermCount + 
          Smoker, 
         data = FertilityTree, method = "class", 
         parms=list(loss=matrix(c(0,1,2,0),2)) 

我不能保證,這將是可用的,直到SO結束(或宇宙以先到者爲準),但目前你可以找到一個discussion and worked example here.損失矩陣需要正離軸和零軸上元素。還有其他一些參數也可以調整,包括調整'之前'並將分割標準更改爲「信息」。有關這些選項的要求,請參見?rpartparms部分。還可以將拆分標準更改爲用戶提供的版本。特里Therneau posted this in 2011 on Rhelp.

它也可以使用rpart.control,即與該名稱參數提供一個列表。您可以嘗試rpart.control=list(minsplit=10)作爲允許進一步拆分的簡單的第一步。更改複雜度參數cp也可能會產生一些影響。這是從幫助頁面::在Usage部分

?rpart.control 
rpart.control(minsplit = 20, minbucket = round(minsplit/3), cp = 0.01, 
       maxcompete = 4, maxsurrogate = 5, usesurrogate = 2, xval = 10, 
       surrogatestyle = 0, maxdepth = 30, ...)