地球包R中的自适应回归样条

机器算法验证 r
2022-04-12 08:12:48

我正在为以下数据使用 earth 包。

x <- c(127, 128, 255, 256, 511, 512, 600, 700, 800, 900, 1000, 1023, 1100,
       1200, 1300, 1400, 1500, 1600, 2047, 2048, 2100, 2200, 2300, 2400, 2500,
       2600, 2700, 2800, 3000, 3100, 3200, 3300, 3500, 4063, 4064, 4100, 4200,
       5200, 5400)

y <- c(0.59, 0.61, 0.59, 1.55, 1.33, 3.50, 1.00, 1.22, 2.50, 3.00, 3.79,
       3.98, 4.33, 4.45, 4.59, 4.72, 4.82, 4.90, 4.96, 7.92, 5.01, 5.01,
       4.94, 5.05, 5.04, 5.03, 5.06, 5.10, 5.04, 5.06, 7.77, 5.07, 5.08,
       5.08, 5.12, 5.12, 5.08, 5.17, 5.18) 

建立模型后,

model<-earth(y~x)

我得到以下回归模型。

summary(model)
Call: earth(x=x, y=y)
coefficients
(Intercept)  5.225822553
h(1400-x)   -0.003820087

有没有可能我可以以某种方式增加结或回归样条的数量?

1个回答

是的,可能有几种方法。首先请注意,所选模型是拟合模型中 GCV 最小的模型。因此,该算法已经删除了附加项,因为它们对拟合的贡献很小,但却增加了模型的复杂性。这里的问题是节俭并试图避免过度拟合。

由于模型是由 GCV 选择的,我们可以在 GCV 计算中选择每项的惩罚,实际上,将其设置为-1导致 GCV 标准有效的模型 RSS/n其中n是项的数量。

> model <- earth(y~x, penalty = -1)
> summary(model)
Call: earth(formula=y~x, penalty=-1)

            coefficients
(Intercept)    4.8340954
h(x-1400)      0.0014362
h(1400-x)     -0.0033889
h(x-2047)     -0.0027031
h(x-2500)      0.0012920

Selected 5 of 5 terms, and 1 of 1 predictors 
Importance: x
Number of terms at each degree of interaction: 1 4 (additive model)
GCV 0.5231077    RSS 20.4012    GRSq 0.8307609    RSq 0.8307609

我们可以看到,该模型保留了在前向传递初始化期间添加到样条池中的所有 5 个项。另请注意,添加三个以上的项仅将 RSS 减少了约 2 个单位,或者对于更简单的模型而言,大约减少了 RSS 的 10%。

这里感兴趣的其他论点是nknprune但似乎都没有影响这个数据样本的结果模型。