非线性拟合/GAM

因为要用到GAM,但是网上资料很少,看到这篇博文,特地学习了一下,相对比较全面,感谢博主的分享,在此转载,希望更多人看到啦!!
原文博客:https://blog.csdn.net/tongweiganglp/article/details/53422324
参考:http://www-bcf.usc.edu/~gareth/ISL/

https://en.wikipedia.org/wiki/Spline_(mathematics)

http://web.as.uky.edu/statistics/users/pbreheny/621/F10/notes/11-4.pdf

http://learning.cis.upenn.edu/cis520_fall2009/index.php?n=Lectures.LocalLearning


从第二章开始,主要介绍的重点都是线性模型。线性模型简单、直观、便于理解,但是现实中,线性假设很可能不能满足实际需求,甚至直接违背实际情况。在第6、7章会介绍一些方法来弥补线性模型的不足,通过降低模型的复杂度和估计量的方差来改善模型。但我们还可以通过另一种方式来改善模型,那就是改变”线性假设”。接下来,我们介绍一些由线性假设下,扩展得到的其他模型。

一,多项式回归

在了解简单线性模型的基础上,很容易理解多项式回归,形如:
yi=β0+β1x11+β2x22+...++βnxnn+eiyi=β0+β1x11+β2x22+...++βnxnn+ei为误差项

多项式回归的优点是,随着变量的增加,可以拟合出异常极端变化的曲线。不过通常来说,多项式回归基本都不会超过四项式。

多项式也可以结合logistics进行回归,形如:
P(yi|xi)=exp(β0+β1x11+β2x22+...++βnxnn)1+exp(β0+β1x11+β2x22+...++βnxnn)P(yi|xi)=exp(β0+β1x11+β2x22+...++βnxnn)1+exp(β0+β1x11+β2x22+...++βnxnn)

二,分段常值函数(step functions)

不论简单线性回归、多项式回归等都是具有全局性的结构。再不考虑全局性回归时,可以用到分段回归。

最简单的分段回归应该就是形如阶跃函数了,阶跃函数也是提供连续变量离散化成有序分类变量的方法。

过程如下:
对X进行分组;
每个组拟合出不同的常量;

假设对X有K个截点,c1,c2,...,ckc1,c2,...,ck
我们生成K+1个新变量:

这些变量有时候也叫虚拟变量或哑变量,然后对这K+1个变量进行拟合,得到形如:

三,基底函数(basis functions)

前两种回归方式,都可以总结为是基底函数的特例。所谓的基底函数是不直接对X进行回归,而是用函数函数变化后的bi(xi)bi(xi)值进行回归,形如:

bj(xi)=xjibj(xi)=xij时,就变成了分段回归;

四,回归样条(Regression Splines)

由基底函数可知,基函数可以是任意的组合形式,不过接下来我们介绍的一种基函数是结合了多项式和分段常值函数的”回归样条”.

什么是样条呢?
样条是一个函数,由多项式构造的分段函数,并且在分段节点处要具有高度平滑的特性,即在分段结点处连续且有连续的导数。

1,三次样条:
一个三次多项式分段回归如下,但是该回归并不满足”平滑的特性”,在结点处可能出现跳跃。

所以,我们要加两个限制条件,让其变成一个样条回归:
1)结点处连续;
2)结点处平滑;

定义,K个节点下的三次样条回归模型:

三次样条下,基函数b()b(),进行拟合

其中,ξiξi是结点:

样条缺点是,有时候受异常点影响较大。需要加上额外的边界约束。

2,如何确定结点的个数与位置

一种方法是在变化相对稳定的区间设置尽量少的结点,在变化相对快速的地方设置尽量多的结点。尽量让每个结点区间内的变量趋于均匀分布。

另一种方法是设置自由度,根据算法自动跑出最优的结点位置。

自由度的个数可以结合交叉验证来验证。

3,与多项式回归的比较

由于样条有结点的帮助,所以在变动很大的数据背景下,仍然可以保证多项式的次数较小。而多项式回归则可能需要更多的次数(如X15X15) 。一句话概括即是样条比多项式回归更灵活。

4,平滑样条曲线

假设我们样条函数为g(x),再求得该函数参数的同时,如何保证样条曲线的平滑性呢?
结合第四章所讲,在求解样条回归的结构风险最小化(RSS+惩罚项)时,把惩罚项设置为”平滑性”相关的表示,形如:

函数在某点处的一阶导数表示的该点曲线的斜率,二阶导数表示的就是斜率的变化率,即,惩罚项即表示为函数曲线在该点的平滑性。

但是,在一段区间内,曲线整体的平滑性要如何衡量呢?我们用到了累计的变化情况,因此可以用来衡量该段区间整体的平滑性了。

超参λ,则是用来衡量惩罚项的重要性占比的。一般用n折交叉验证或者留一交叉验证法来确定。

五,局部回归(Local Regression)

局部回归是另一种拟合非线性模型的方法。

为了实现局部回归,有许多重要步骤需要确定:
- 确定加权函数K
- 确定局部回归的模型:线性/二次/还是常数等,通常是简单模型
- 最重要的还是对“局部”的定义,如何确定点x0x0点近临范围“s”

范围s的值越小,每次拟合的数据区间越小,并且到下一个拟合点到距离也越小。我们可以用交叉验证的方法来确定s,或者人为设定一个值。

1)最简单的局部模型
局部平均(local average)模型是最简单的局部模型,形如:

其缺点是,估计结果并非是连续的。
且与KNN的思想类似,是一种非参数方法。

2)Nadaraya-Watson 核估计(NW)

引用核估计方法,将local average模型进行改造,当K是连续时,f即为连续的。

其局部性参数h可以通过交叉验证的方式计算得到。

不过当x不是均匀分布的时候,该方法将产生偏倚。

3)lowess

前两种方法都属于非参数方法,下面介绍一种结合了非参和参数模型的方法:lowess或者又叫做loess,通过对局部进行线性拟合(非常数值拟合),来解决NW的缺点。

lowess 算法:
1)给定数据集D=(xi,yi)D=(xi,yi)

局部加权logistics回归算法:
1)给定数据集D=(xi,yi)D=(xi,yi)

总结:

六,广义相加模型(Generalized Additive Models)

前面,我们已经介绍了一些方法,作为简单线性模型的扩展。这些方法可以归纳为广义相加模型(GAMs)的框架里,形如:

之所是”相加性的”,是因为我们对于每个变量XjXj.

GAMs的优缺点:
- 可以引入非线性函数fjfj,只能通过手动添加交互项来弥补。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值