java 多项式拟合最多的项数_[数值计算] 数据拟合——线性最小二乘法

前面提到的多项式拟合方法都是有n个数据点,这个多项式就是n-1阶。就像下面这个链接里的“例子2:多项式插值”,求解Ab=y。此时A是一个可逆方阵。

YcoFlegs:[数值计算] 条件数​zhuanlan.zhihu.com

1. Over-constrained System

但是如果已知数据存在误差,那么如果精确拟合反而会overfitting。此时可以刻意选择一个更小的多项式阶数,如果就用最简单的monomial basis的话,需要求解的问题变成

bbb24124ec3ddb1c563e900e02a10d7f.png

其中

是已知数据的input x,
是参数向量,
是已知数据的output。

定义残差residual为

一种非常有效的优化方法是,最小二乘法:找到一组参数b,使得

最小,具体形式为:

最后第二行中间两项相等,是因为

,而且这个计算结果是个有理数

注意,此处因为

是b的二次函数,而且非负,所以必然存在最小值。但不一定是唯一解,比如
,与
无关。

最小化

等价于梯度为零

这组方程叫正规方程组 Normal equations

其中

奇异 当且仅当
是非满秩 rank-deficient矩阵(即,不是所有的列都是线性独立的)
在线性代数中,一个矩阵A 的列秩是 A 的线性无关的纵列的极大数目。类似地,行秩是 A 的线性无关的横行的极大数目。矩阵的列秩和行秩总是相等的,因此它们可以简单地称作矩阵 A 的秩。
wikipedia 秩 (线性代数)

因此理论上最后一步只需要把正规方程组左边的

移到等式右侧,即:

其中

被称为是 伪逆 Pseudoinverse,记作

这里有一个例子:

用11阶的多项式拟合50个samples的

(代码)

e22e5f5320bd3be0356919dd3b4b43fa.png
Credit to http://iacs-courses.seas.harvard.edu/courses/am205/schedule/

其中least sq.是调用np的库的结果,normal是用正则方程组求解的结果。

理论很美好,在小数据量的时候没问题,然而直接使用正规方程组求解会在数据量大(e.g. data size > 100)的时候不稳定numerically unstable。原因是 需要对

求逆,而A我们都知道是Vandermonde矩阵的一部分,本身就是poorly conditioned,而
只会更糟糕。解决的方法是使用QR分解,这也是Python MATLAB求解
线性最小二乘 问题的方法。

对动手操作感兴趣的可以看下这个作业题的第五题:

AM205: Assignment 1​iacs-courses.seas.harvard.edu

题目大意是用三张不正常的图片去拟合一个线性模型,组合成右下角那个正常的图片。比较有趣的一点是,这里的A矩阵是一个3阶张量,而不是上面推导中的矩阵,因为图片有RGB 3层。但做起来思路是一样的,只不过把矩阵点乘和转置 换成 张量的点乘和转置。

cfe93abb79ab42ce8c0bbab1cf5567b6.png

2. Underdetermined System

和数据量大于参数量的情况相反,另一种情况是,参数量多于数据量,因此已知条件过少。

中的各个矩阵形状如下:

85bc9fff8ce160c9a2e1515e3e5ef264.png
Credit to http://iacs-courses.seas.harvard.edu/courses/am205/schedule/

同样是求解正规方程组

, 但此时因为此时
的rank最大为m(m<n),此时
一定奇异。

一种解决方法是 用拉格朗日乘子,

。注意这个和前面的Eq.4形式有细微的差别。此处的伪逆是
,满足
。因此被称为右逆right inverse,详细可以参考MIT OCW的线代note和video。
Lecture 33: Left and right inverses; pseudoinvers​ocw.mit.edu

另一种简单一点的思路是 加正则项。目标函数现在是

其中

依旧是

的套路,此时结果是:

可以通过选择S的形式来满足

可逆。比如取

还是以函数

区间上为例,取5个点,然后拟合一个11阶的多项式。

74a47641d058957cb6b8eb1d433290b3.png
Credit to http://iacs-courses.seas.harvard.edu/courses/am205/schedule/

(拟合效果不错)

(条件数太大了)

851c32654031170a6ae6ab922fc12ded.png
Credit to http://iacs-courses.seas.harvard.edu/courses/am205/schedule/

(拟合效果很差)

(条件数比较小)
  • :对高阶项的系数更多的惩罚

b372c2740daec0a6363145dd10fc682c.png
Credit to http://iacs-courses.seas.harvard.edu/courses/am205/schedule/

(拟合效果很差)

(条件数也比较大小)
  • 拉格朗日乘子(突然冒出来)说,其实它的效果更好:

25906b83d9e676bc1a6ed4820fd40491.png
Credit to http://iacs-courses.seas.harvard.edu/courses/am205/schedule/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值