在 CART 中选择复杂度参数

机器算法验证 r 大车 rpart
2022-01-30 06:01:07

在创建 CART 模型的 rpart() 例程中,您指定要修剪树的复杂度参数。我已经看到了两种不同的选择复杂度参数的建议:

  1. 选择与最小可能的交叉验证错误相关的复杂性参数。Quick-R和 HSAUR推荐使用此方法。

  2. 选择其估计的交叉验证误差仍在最小可能交叉验证误差的 SE 内的最大复杂度参数。这是我对包文档的解释,其中说:“用于修剪的 cp 的一个好的选择通常是平均值位于水平线下方的最左边的值”,参考此图

cp 的两种选择在我的数据集中产生了完全不同的树。

似乎第一种方法总是会产生更复杂、可能过度拟合的树。是否还有其他优点、缺点、文献中的建议等。在决定使用哪种方法时我应该考虑到这些?如果有用的话,我可以提供有关我的特定建模问题的更多信息,但我试图使这个问题足够广泛,以便与其他人相关。

2个回答

在实践中,我已经看到两种方法都采用了,我认为通常你的结果不会有太大差异。

话虽如此,Hastie 等人在Elements of Statistical Learning推荐了“单一标准错误”规则,我倾向于相信他们的判断(我的版本中的第 7.10 节,第 244 页)。相关报价为:

“一个标准误差”规则通常与交叉验证一起使用,在该规则中,我们选择最简洁的模型,其误差不超过最佳模型误差的一个标准误差。”

您对为什么要遵循单一标准错误规则的直觉是正确的 - 您会这样做以避免选择过度拟合数据的模型。

您应该首先使用参数minsplit=0cp=0(复杂性参数)然后使用函数plotcp(T.max)printcp(T.max)选择cp对应的最小相对误差的值并通过函数修剪树prune.rpart(T.max, cp=....)

这应该为您提供最佳分类树,因为它们往往过于乐观。