- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 725 个
- 通用积分
- 4318.4410
- 学术水平
- 867 点
- 热心指数
- 1004 点
- 信用等级
- 649 点
- 经验
- 116372 点
- 帖子
- 3968
- 精华
- 0
- 在线时间
- 7743 小时
- 注册时间
- 2009-9-3
- 最后登录
- 2025-9-7
|
peijianshi 发表于 2012-7-12 12:30 
使用非参数模型(包括GAM, LOESS, 神经网络, 树),出现overfit是不可避免的。因为这些方法大多是let the d ... 谢谢您的解答
恩,现在就是出现这个问题,在利用
mgcv包的gam函数时,默认的gamma=1,
而看到有些书籍上说通常把gamma设置为
gamma=1.4,可以避免或者减轻overfit,
但是我查看了很多资料,没有弄清楚
overfit是何意,即有哪些硬性的指标可以
看出是overfit的。
此外,还有一个choose.k里面的自带例子,有一点也看不懂
- library(mgcv)
- set.seed(1)
- dat <- gamSim(1,n=400,scale=2)
- ## fit a GAM with quite low `k'
- b<-gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=6)+s(x3,k=6),data=dat)
- plot(b,pages=1,residuals=TRUE) ## hint of a problem in s(x2)
- ## the following suggests a problem with s(x2)
- gam.check(b)
- ## Another approach (see below for more obvious method)....
- ## check for residual pattern, removeable by increasing `k'
- ## typically `k', below, chould be substantially larger than
- ## the original, `k' but certainly less than n/2.
- ## Note use of cheap "cs" shrinkage smoothers, and gamma=1.4
- ## to reduce chance of overfitting...
- rsd <- residuals(b)
- gam(rsd~s(x0,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
- gam(rsd~s(x1,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
- gam(rsd~s(x2,k=40,bs="cs"),gamma=1.4,data=dat) ## `k' too low
- gam(rsd~s(x3,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
- ## refit...
- b <- gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=20)+s(x3,k=6),data=dat)
- gam.check(b) ## better
复制代码
上述标注之处如何判断--- `k' too low?
请您多多指教。
|
|