决策树的可读性

时间:2018-07-11 11:14:43

标签: r decision-tree

我对决策树有疑问。还不是很清楚。

我的数据结构如下:

> str(mi)
'data.frame':   4393 obs. of  18 variables:
 $ OS_Gatunek       : Factor w/ 5 levels "Taraxacum ancistrolobum",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ PH_CreateDate    : Factor w/ 15 levels "2016-04-06","2016-04-19",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ L_Dl             : num  7.91 8.96 10.18 10.09 9.4 ...
 $ L_SzerMaksOs     : num  1.93 3.98 3.12 4.04 2.75 2.69 3.69 3.23 2.3 2.49 ...
 $ L_DlMax          : num  3.51 4.08 5.58 5.04 3.99 3.6 5.65 4.62 3.33 4.18 ...
 $ KS_DlSk_Sr       : num  1.78 3.28 2.88 4.19 1.88 2.47 3.11 4.04 1.61 2.09 ...
 $ KS_Dl_Sr         : num  1.68 2.83 2.62 3.84 1.68 2.12 2.87 3.8 1.44 1.86 ...
 $ KS_Sz            : num  1.35 3.41 2.38 3.31 1.66 2.35 2.45 2.96 1.57 1.9 ...
 $ KB_DlSkos_Sr     : num  1.07 1.94 1.84 1.69 1.25 1.49 1.96 1.77 1.43 1.55 ...
 $ KB_Dl_Sr         : num  0.62 1.49 1.12 1.34 0.86 0.77 1.22 1.07 0.82 1.05 ...
 $ KB_Szer_Sr       : num  0.85 1.23 1.46 0.94 0.89 1.32 1.53 1.41 1.17 1.14 ...
 $ KB_SzerPierwKlapy: num  1.75 3.99 2.9 4.1 2.34 2.75 3.11 3.39 1.96 2.46 ...
 $ I_Dl_Sr          : num  0.25 0.86 0.48 0.61 0.44 0.41 0.7 0.86 0.14 0.59 ...
 $ I_SzOs           : num  0.37 0.83 0.47 0.87 0.39 0.73 0.53 0.96 0.4 0.33 ...
 $ I_DlSz_Sr        : num  2.3 4.08 3.35 5.23 2.34 3.39 3.22 4.43 1.96 2.55 ...
 $ O_Dl_Sr          : num  0.67 0.75 2.02 0.85 0.74 1.4 1.07 0.26 0.6 0.96 ...
 $ O_SzerOs         : num  1.35 1.59 1.31 0.91 1.08 0.94 1.18 0.84 1.71 0.93 ...
 $ O_SzerOskrz_Sr   : num  0.55 0.65 0.48 0.34 0.39 0.31 0.49 0.29 0.74 0.27 ...

代码如下:

model<-rpart(mi[,1]~., data=mi[,-c(1,2)])
plot(model)
text(model, cex=0.5)

还有这样的树:

Decision tree made from a plot()

如果我使用“ rattle”包中的fancyRpartPlot()命令:

fancyRpartPlot(model, sub=NULL)

树是这样的:

Decision tree made from a fancyRpartPlot()

如果我使用“ rpart.plot”包中的rpart.plot():

rpart.plot(model)

树看起来像这样:

Decision tree made from a rpart.plot()

它们完全难以辨认。

尽管互联网上有各种各样的文献,但我发现没有任何东西可以改善我的树的可读性。

我应该改变什么?如有任何建议,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

调用rpart.plot时,通过使用fallen.leaves=FALSE和/或tweak=1.1(例如)为绘制的树中的较大文本创建额外的空间。

还可以通过使用varlen=4faclen=4(例如)来减少变量和因子名称的长度。

另请参阅rpart.plot vignette的“常见问题”一章中的建议。