最小二乘法—多项式拟合非线性函数

本章涉及到的知识点清单:

1、函数的近似表示—高次多项式

2、误差函数—最小二乘法

3、引出案例函数曲线

4、目标函数

5、优化目标函数

6、优化目标函数—梯度下降法

7、优化目标函数—求解线性方程组

8、python编程实现拟合曲线函数

9、结果分析

一、函数的近似表示—高次多项式

为了研究一些复杂的函数,我们希望对函数自变量进行有限的加、减、乘法三种算数运算,便可以求出原函数值,因此我们通常使用高次多项式来近似表示函数

高次多项式近似表示f(x)

可以看到,我们可以用n阶多项式的系数线性组合来近似表示f(x)

特别说明,由泰勒展开式可知,当pn(x)的各阶导数和f(x)的各阶导数都相等,则f(x)和pn(x)的误差只是(x-x0)^n的高阶无穷小

泰勒公式

二、误差函数—最小二乘法

我们用f(x)的真实函数值减去多项式函数的结果的平方,来表示f(x)和多项式函数的误差关系,即

最小二乘法表示误差

我们令x0=0,则最小二乘法表示的误差为

最小二乘法表示误差

三、引出案例函数曲线

有了上述数学知识,下面我们用一个案例来介绍最小二乘法拟合非线性函数的算法步骤

案例:求一个多项式来拟合下列函数的函数值

案例函数

其中我们加入了噪点数据noise,使得函数在定义域内随机的震荡

我们画出f(x)在[-1, 1]之间的图像,即

案例函数图像

案例问题即为:已知上述N个数据点,求其函数f(x)的表达式?

显然,f(x)也就是机器学习要学习的目标

四、目标函数

下面我们开始推导机器学习的过程

机器学习的目标为:

(1) 学习一个f(x)多项式,可以拟合真实数据的变化趋势

(2)f(x)的目标:使每一个真实数值到f(x)的拟合数值的距离之和最小

翻译为数学语言,即

学习到的f(x)
目标函数

五、优化目标函数

为了使目标函数最优,我们对每个系数求其偏导数为0,即

优化目标函数

至此,我们需要根据上述k的等式,求出所有的系数ak,有两种方法可以求解

(1)梯度下降法

(2)求解线性方程

六、优化目标函数—梯度下降法

采用梯度下降法,可以避免我们用数学方法直接一步来求解上述k个方程的最优解,而是采用迭代逼近最优解的思路,其具体步骤为:

(1)初始化k个系数值,开始迭代

(2)每次迭代,分别求出各个系数ak对应的梯度值

(3)用梯度值和学习率来更新每一个系数ak

(4)保证每次更新完所有系数,对应的损失函数值都在减少(说明梯度一直在下降)

翻译为数学语言为:

计算ak对应的梯度值

计算ak的梯度值

更新ak

更新ak

七、优化目标函数—求解线性方程组

求解线性方程组让我们直接一步求出偏导数最优解,其具体步骤为:

(1)将最优化偏导数的方程组写为矩阵乘法形式:XA=Y

(2)利用数学消元算法来求解XA=Y

我们对k个偏导数=0的等式进行化简处理,即

k个偏导数等式

下面我们将其写为矩阵相乘的形式,将所有只含有x的系数写为第一个矩阵X,即

含有x的系数矩阵

将只含有待求解的多项式系数ak写为第二个矩阵A,即

含有a的系数矩阵

最后将含有y的系数写为第三个矩阵Y,即

含有y的系数矩阵

此时,我们就可以用矩阵的乘法来表示最初的k个偏导数为0的等式,即

k个偏导数等式的矩阵形式

注意:其中X是k*k的矩阵,A是k*1的矩阵,Y是k*1的矩阵,符合矩阵的乘法规则

从矩阵表达式可以看出,X和Y矩阵是已知的,A矩阵只包含待求解的f(x)的所有多项式系数,则问题即转化为线性方程组:XA=Y

求解线性方程组,大概有如下算法

(1)高斯消元法(全主元、列主消元)

(2)LU三角分解法

(3)雅克比迭代法

(4)逐次超松弛(SOR)迭代法

(5)高斯-赛德尔迭代法

这里我们采用高斯消元法来求解A,具体算法步骤较为复杂,我们在单独的章节介绍高斯消元算法

八、python编程实现拟合曲线函数

生成带有噪点的待拟合的数据集合

生成带有噪点的待拟合的数据集合

计算最小二乘法当前的误差

计算最小二乘法当前的误差

迭代解法:最小二乘法+梯度下降法

迭代解法:最小二乘法+梯度下降法

数学解法:最小二乘法+求解线性方程组

数学解法:最小二乘法+求解线性方程组

九、结果分析

我们来拟合N=10次幂的多项式,分别用梯度下降法和求解线性方程组的算法来比较拟合结果

(1)使用梯度下降法来优化目标函数,其拟合结果为:

梯度下降法拟合结果

其误差变化为

梯度下降法优化的误差

(2)使用求解线性方程组来优化目标函数,其拟合结果为:

求解线性方程组拟合结果

其误差变化为

求解线性方程组优化的误差

比较上述两种解法,以及多项式拟合的思想,我们可以总结出

(1)利用函数的近似多项式表示,和最小二乘法来表示目标函数,我们可以高效的拟合非线性函数

(2)梯度下降法可以一步步迭代逼近目标函数的极值,而不用直接求出偏导数最优解

(3)求解方程组,使用数学消元的算法,直接一步优化完成了目标函数的偏导数最优解

(4)从结果上比较,求解方程组的效率和拟合结果要比梯度下降法好

案例代码见:最小二乘法—多项式拟合非线性函数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容