从一开始就过度拟合回归树

数据挖掘 r 回归 决策树
2022-02-15 16:07:59

我正在尝试建立一个回归树来模拟保险索赔频率。我有 36000 个观察值和 9 个协变量。

我的模型从一开始就过拟合了!即随着成本复杂性的下降,相对验证误差会上升。我在 R 中使用这个命令:

rpart_model <-rpart(cbind(Duration,Nbclaims) ~ Gender + DriverAge + 
  CarAge + Area + Leasing + Power + Fract + Contract, data = motor,    method="poisson",parms=list(shrink=1), control=rpart.control(cp=0))

并获得这些结果:

        CP nsplit rel error xerror     xstd
1   1.9019e-03        0     1.00000   1.0002   0.022911

2   1.3854e-03        1     0.99810   1.0004   0.022973

3   1.1587e-03        2     0.99671   1.0057   0.023185

4   9.1009e-04        5     0.99324   1.0069   0.023269

5   9.0852e-04        6     0.99233   1.0134   0.023526

6   8.8781e-04        7     0.99142   1.0134   0.023531

7   8.5397e-04       10     0.98872   1.0150   0.023603

8   8.5119e-04       11     0.98786   1.0153   0.023621

我已经进行了研究以尝试解决此问题,但目前完全陷入困境,有人可以帮忙吗?

1个回答

复杂度参数 CP 描述了一个阈如果分支提供的改进小于,则将其从树中删除。您正在使用 cp=0 ,因此您告诉算法不要独立地修剪任何分支的结果!被测试的CP也很小。TTprintcp

CP 值越大,修剪的分支越多,因此您的树应该更小并且应该更好地泛化。因此,您可以在开始时尝试使用更高的 CP 值,然后打印交叉验证结果以获得建议的 CP 值,最后使用修剪方法来减少您的树,例如:

model_pruned <- prune(rpart_model, cp=0.01)

您可以使用rpart.plot(tree_object)方法比较树的结构。我认为原始树太复杂了,这就是它在开始时过度拟合的原因。