R语言 这个使用C5.0的小决策树有什么问题吗?

yks3o0rb  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(137)

我尝试用C语言做一个简单的决策树。
数据有3列(包括目标数据)和14行。这是我的'慢跑'数据。目标变量是'分类'

WEATHER   JOGGED_YESTERDAY   CLASSIFICATION
C          N                  +
W          Y                  -
Y          Y                  -
C          Y                  -
Y          N                  -
W          Y                  -
C          N                  -
W          N                  +
C          Y                  -
W          Y                  +
W          N                  +
C          N                  +
Y          N                  -
W          Y                  -

或者作为dput结果:
x一个一个一个一个x一个一个二个x
但是它没有做任何决策树。我认为它应该做2个节点(因为除了目标变量外有2列)。我想知道出了什么问题:(

cngwdvgl

cngwdvgl1#

对于这个答案,我将使用一个不同的树构建包partykit,只是因为我更习惯它。

jogging <- read.table(header = TRUE, text = "WEATHER   JOGGED_YESTERDAY   CLASSIFICATION
C          N                  +
W          Y                  -
Y          Y                  -
C          Y                  -
Y          N                  -
W          Y                  -
C          N                  -
W          N                  +
C          Y                  -
W          Y                  +
W          N                  +
C          N                  +
Y          N                  -
W          Y                  -",
                      stringsAsFactors = TRUE)

library(partykit)
ctree(CLASSIFICATION ~ WEATHER + JOGGED_YESTERDAY, data = jogging, 
      minsplit = 1, minbucket = 1, mincriterion = 0) |> plot()

这将打印以下树:

这是一个使用了多达三个级别的拆分但仍然找不到完美拟合的树。第一个拆分的p值为.2,表明即使是第一个拆分也没有足够的数据来证明其合理性。更不用说那些跟随它的人了。这是一棵很可能大量过度拟合数据的树,过度拟合是不好的。这就是为什么通常的树算法都有防止过拟合的措施,在您的情况下,这就禁止了树的生长。
简而言之:你没有足够的数据,一直预测-是分类树所能做的最合理的事情。

相关问题