我一直在使用rpart来训练带有二进制响应的监督决策树模型。结果的问题是某些功能以非单调的方式被拆分了多次。例如,特征A可以分为三个间隔[0,0.4],[0.4,0.6],[0.6,1],分别对应于以下响应-1,1,-1。我希望每个功能都以二进制方式拆分一次。有没有办法在R中做到这一点?

一个说明性的例子:

假设我有兴趣根据SAT分数预测大学辍学率。然后,R中的tree或rpart包可能会给我以下模型:

1. SAT > 1100: no dropout
2. SAT <= 1100:
  3. SAT > 900: dropout
  4. SAT <= 900: no dropout


给定训练数据,这可能是最好的二叉树模型。我想注入我的领域知识,即SAT分数和辍学概率之间的关系应该是单调的,并强制要求存在一个用于确定辍学概率的SAT阈值。

所以我的问题是,是否有一种方法可以在R的上述意义上强制单调性。

最佳答案

您也可以尝试party包,可以在其中强制执行单个拆分

library(party)
plot(ctree(status  ~ time1,  rats2), type = "simple")




plot(ctree(status  ~ time1,  rats2, controls = ctree_control(stump = T)), type = "simple")

07-24 09:52
查看更多