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

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)从结果上比较,求解方程组的效率和拟合结果要比梯度下降法好

python多项式拟合_最小二乘法—多项式拟合非线性函数相关推荐

  1. c++ 三次多项式拟合_最小二乘法多项式曲线拟合数学原理及其C++实现

    本文使用 Zhihu On VSCode 创作并发布 0 前言 自动驾驶开发中经常涉及到多项式曲线拟合,本文详细描述了使用最小二乘法进行多项式曲线拟合的数学原理,通过样本集构造范德蒙德矩阵,将一元 N ...

  2. 求解多变量非线性全局最优解_约束条件下多变量非线性函数的区间算法.doc

    约束条件下多变量非线性函数的区间算法.doc 一种求解约束条件下多变量非线性函数所有全局最优解的区间算法李爽,许才军,王新洲(武汉大学测绘学院,湖北,武汉,430079)摘要研究和实践中经常会遇到附有 ...

  3. python imshow参数_用matplotlib中imshow()函数绘图

    matplotlib 是python最著名的2D绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.通过简单的绘图语 ...

  4. 多项式拟合 java_最小二乘法多项式拟合的Java实现

    背景由于项目中需要根据磁盘的历史使用情况预测未来一段时间的使用情况,决定采用最小二乘法做多项式拟合,这里简单描述下: 假设给定的数据点和其对应的函数值为 (x1, y1), (x2, y2), ... ...

  5. python定义多项式除法_快速多项式除法的fft除法

    下面是一个快速多项式除法算法的直接实现,在这些lecture notes中找到.在 除法是基于除数的倒数与被除数的快速/FFT相乘.我下面的实现严格遵循了被证明具有O(n*log(n))时间复杂度的算 ...

  6. 怎么作非线性拟合_值得收藏ansys非线性收敛总结

    ansys计算非线性时会绘出收敛图,其中横坐标是cumulative iteration number 纵坐标是absolute convergence norm.他们分别是累积迭代次数和绝对收敛范数 ...

  7. python多元函数求解_使用遗传算法求二元函数的最小值

    二元函数为y=x1^2+x2^2,x∈[-5,5] NIND=121; %初始种群的个数(Number of individuals) NVAR=2; %一个染色体(个体)有多少基因 PRECI=20 ...

  8. python多项式拟合_Python 普通最小二乘法(OLS)进行多项式拟合,最小二乘法拟合二次多项式,多元函数拟合。如 电...

    Python 普通最小二乘法(OLS)进行多项式拟合,最小二乘法拟合二次多项式,多元函数拟合.如 电 多元函数拟合.如 电视机和收音机价格多销售额的影响,此时自变量有两个. python 解法:imp ...

  9. python3中多项式创建_机器学习入门之机器学习之路:python 多项式特征生成PolynomialFeatures 欠拟合与过拟合...

    本文主要向大家介绍了机器学习入门之机器学习之路:python 多项式特征生成PolynomialFeatures  欠拟合与过拟合,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 分享 ...

最新文章

  1. Bootstrap 简洁、直观、强悍、移动设备优先的前端开发框架,让web开发更迅速、简单。...
  2. python formatters 与字符串 小结 (python 2)
  3. 设置CodeRush Xpress的线条颜色
  4. Nginx 配置https 自动续期
  5. matlab模拟三体运动_从灯泡到超级计算机,如何模拟浩瀚星空?| 赛先生
  6. 《我的侠客》主策划何铮:如何打出武侠游戏的新招
  7. 关于 HTTP 和 TCP 的 keep-alive
  8. linux不适合数据传输,【Linux调试经验】局域网内数据传输不经过路由
  9. activiti5第六弹 手动任务、接收任务、邮件任务
  10. Matlab自定义函数的五种方法
  11. 详解用backgroundImage解决图片轮播切换
  12. 案例一(haproxy+keepalived高可用负载均衡系统)【转】
  13. 运筹优化(十二)--带约束非线性规划(NLP)
  14. Android程序开发:简单电话拨号器
  15. 八个方向调节的云台控制器
  16. 低频声音功率放大器电子设计报告
  17. 基于RFID技术的智能交通解决方案
  18. Python写一个小小的项目监控
  19. android切换皮肤,Android 应用更换皮肤实现方法
  20. WIN10一键开启所有服务

热门文章

  1. WHEA-Logger 17错误:发生了已更正的硬件错误
  2. JAVA多线程设计模式篇 12、Thread-Specific Storage模式——给我个柜子
  3. 这可能是全网关于Camera慢动作录像(SlowMotion)介绍最全的文章了
  4. ASP.NET 5系列教程(七)完结篇-解读代码
  5. 怎样做扩展名为,HLP的帮助文件
  6. python中文分词库_jieba分词-强大的Python 中文分词库
  7. HtmlFoundation
  8. 光伏累计装机全国第二 青海光伏全产业链如何炼成?
  9. 支付宝支付——统一wap和支付宝钱包回调
  10. SIMULINK电力电子仿真