前面提到的多项式拟合方法都是有n个数据点,这个多项式就是n-1阶。就像下面这个链接里的“例子2:多项式插值”,求解Ab=y。此时A是一个可逆方阵。
YcoFlegs:[数值计算] 条件数zhuanlan.zhihu.com1. Over-constrained System
但是如果已知数据存在误差,那么如果精确拟合反而会overfitting。此时可以刻意选择一个更小的多项式阶数,如果就用最简单的monomial basis的话,需要求解的问题变成
![bbb24124ec3ddb1c563e900e02a10d7f.png](https://img-blog.csdnimg.cn/img_convert/bbb24124ec3ddb1c563e900e02a10d7f.png)
其中
定义残差residual为
一种非常有效的优化方法是,最小二乘法:找到一组参数b,使得
最后第二行中间两项相等,是因为
注意,此处因为
最小化
这组方程叫正规方程组 Normal equations
其中
在线性代数中,一个矩阵A 的列秩是 A 的线性无关的纵列的极大数目。类似地,行秩是 A 的线性无关的横行的极大数目。矩阵的列秩和行秩总是相等的,因此它们可以简单地称作矩阵 A 的秩。
wikipedia 秩 (线性代数)
因此理论上最后一步只需要把正规方程组左边的
其中
这里有一个例子:
用11阶的多项式拟合50个samples的
![e22e5f5320bd3be0356919dd3b4b43fa.png](https://img-blog.csdnimg.cn/img_convert/e22e5f5320bd3be0356919dd3b4b43fa.png)
其中least sq.是调用np的库的结果,normal是用正则方程组求解的结果。
理论很美好,在小数据量的时候没问题,然而直接使用正规方程组求解会在数据量大(e.g. data size > 100)的时候不稳定numerically unstable。原因是 需要对
对动手操作感兴趣的可以看下这个作业题的第五题:
AM205: Assignment 1iacs-courses.seas.harvard.edu题目大意是用三张不正常的图片去拟合一个线性模型,组合成右下角那个正常的图片。比较有趣的一点是,这里的A矩阵是一个3阶张量,而不是上面推导中的矩阵,因为图片有RGB 3层。但做起来思路是一样的,只不过把矩阵点乘和转置 换成 张量的点乘和转置。
![cfe93abb79ab42ce8c0bbab1cf5567b6.png](https://img-blog.csdnimg.cn/img_convert/cfe93abb79ab42ce8c0bbab1cf5567b6.png)
2. Underdetermined System
和数据量大于参数量的情况相反,另一种情况是,参数量多于数据量,因此已知条件过少。
![85bc9fff8ce160c9a2e1515e3e5ef264.png](https://img-blog.csdnimg.cn/img_convert/85bc9fff8ce160c9a2e1515e3e5ef264.png)
同样是求解正规方程组
一种解决方法是 用拉格朗日乘子,
另一种简单一点的思路是 加正则项。目标函数现在是
其中
依旧是
可以通过选择S的形式来满足
还是以函数
![74a47641d058957cb6b8eb1d433290b3.png](https://img-blog.csdnimg.cn/img_convert/74a47641d058957cb6b8eb1d433290b3.png)
![851c32654031170a6ae6ab922fc12ded.png](https://img-blog.csdnimg.cn/img_convert/851c32654031170a6ae6ab922fc12ded.png)
-
:对高阶项的系数更多的惩罚
![b372c2740daec0a6363145dd10fc682c.png](https://img-blog.csdnimg.cn/img_convert/b372c2740daec0a6363145dd10fc682c.png)
- 拉格朗日乘子(突然冒出来)说,其实它的效果更好:
![25906b83d9e676bc1a6ed4820fd40491.png](https://img-blog.csdnimg.cn/img_convert/25906b83d9e676bc1a6ed4820fd40491.png)