基于Python的多项式拟合正弦函数

多项式拟合正弦函数 一,实验过程 实验目的 掌握最小二乘法求解(无惩罚项的损失函数),掌握加惩罚项(2 范数)的损失函数优化,梯度下降法,共轭梯度法

本文包含相关资料包-----> 点击直达获取<-------

多项式拟合正弦函数

一、实验过程

实验目的

掌握最小二乘法求解(无惩罚项的损失函数)、掌握加惩罚项(2 范数)的损失函数优化、梯度下降法、共轭梯度法、理解过拟合、克服过拟合的方法(如加惩罚项、增加样本)

实验要求

生成数据,加入噪声;

用高阶多项式函数拟合曲线;

用解析解求解两种 loss 的最优解(无正则项和有正则项);

优化方法求解最优解(梯度下降,共轭梯度);

用你得到的实验数据,解释过拟合。

用不同数据量,不同超参数,不同的多项式阶数,比较实验效果。

语言不限,可以用 matlab,python。求解解析解时可以利用现成的矩阵求逆。梯度下降,共轭梯度要求自己求梯度,迭代优化自己写。不许用现成的平台,例如 pytorch,tensorflow 的自动微分工具。

实验环境

OS: Windows 11

Python: 3.7.9

设计思想

生成数据并加入噪声

利用高阶多项式函数拟合曲线(无正则项)

代入 即可得到 获得拟合曲线。

利用高阶多项式函数拟合曲线(有正则项)

通过正则化减轻过拟合影响,为误差函数增加一个惩罚项如下:

代入

梯度下降法求解最优解

在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向;对应的,梯度的反方向就是给定点的下降最快的方向。梯度下降公式为 ,其中 为学习率或步长对有惩罚项的误差函数:

共轭梯度法求解最优解

考虑线性对称正定方程组: 构造二次函数:

对其求导得:

则求 的解即为求函数

直到满足精度,退出循环,得到

二、实验结果分析

不带正则项的解析解

  • 在 1 阶时,无法拟合,属于欠拟合,需要提高阶数;
  • 在 3 阶时,拟合效果较好,阶数提高到 5 阶,拟合效果更好;
  • 阶数提高到 9 阶,拟合函数图像能穿过大多数训练集上的点,但波动较大,出现过拟合现象。

可以通过增加训练集大小降低过拟合的影响:

设定阶数为 9 阶,在训练集大小分别为 10,20,50,100 下拟合结果:

随着训练集增大,过拟合现象逐渐消失,拟合函数很好的拟合到原函数上。

带正则项的解析解 取训练集大小为 10,验证集大小为 20,阶数为 9,确定最优

取 为 ,在训练集大小为 10 ,阶数为 9 的条件下的带惩罚项和不带惩罚项的拟合图像比较

可以看出,加入惩罚项有效降低过拟合现象。

梯度下降求得优化解

设定 为 ,学习率 为 0.01,(左图精度为 ,右图精度为 )设定训练集大小为 10 ,在不同阶数下拟合函数:

阶数为 9:

设定阶数为 9,在不同训练集大小下拟合函数 训练集大小为 20:

训练集大小为 50:

精度升高,迭代次数变大;多项式阶增大,迭代次数呈现下降趋势;而训练集的大小对于迭代次数几乎没有影响,但仍然满足训练集越大拟合效果也好的结论。

共轭梯度求得优化解

设定 为 ,(左图精度为 ,右图精度为 )设定训练集大小为 10 ,在不同阶数下拟合函数: 阶数为 3 :

设定阶数为 9,在不同训练集大小下拟合函数 训练集大小为 20:

训练集大小为 50:

的右图的拟合效果并未显著强于精度为 下的拟合效果。

共轭梯度法的迭代次数受精度、多项式阶、训练集的大小的影响并不大,一直在

三、结论

在对正弦函数的多项式拟合中,不加惩罚项时,多项式的次数越高,拟合得越好,阶数较高时出现过拟合现象,是由于样本数量少但模型能力强,模型拟合结果过分依赖数据集,这种强拟合能力可能无法拟合出正弦曲线的效果。所以增大数据集可以有效地解决过拟合问题。

加入惩罚项后,过拟合现象得到改善。加入惩罚项可以有效地降低参数的绝对值,从而使模型复杂度与问题匹配。所以对于训练样本限制较多的问题,增加惩罚项是解决过拟合问题的有效手段。

在使用梯度下降时,由于我们的目标函数是二次的,只有一个极值点,即最值点,所以梯度下降的初值选取并不很重要。如果梯度下降步长设置的比较大,那么下降结果将在目标函数最值附近逐渐向上跳动,从而无法收敛。

梯度下降相比共轭梯度收敛速度很慢,迭代次数很大,而共轭梯度的稳定性较差,更容易出现过拟合现象,但对于数据量较大复杂度较高的情况,共轭梯度显然要比梯度下降来的更优。

四、参考文献

《模式识别与机器学习》

《机器学习》

参考文献

  • 基于.NET的在线考试系统的设计与实现(吉林大学·杨雪洁)
  • 偏微分方程有限差分法求解软件研发(宁夏大学·马天龙)
  • 多维数据展现开发工具的设计与实现(山东大学·展鹏)
  • 基于B/S的考卷搜索和标记系统的设计与实现(华中师范大学·沈亮)
  • 多维数据展现开发工具的设计与实现(山东大学·展鹏)
  • 基于J2EE网络考试系统的设计与实现(吉林大学·叶丽娜)
  • 基于SSH框架的软件项目管理系统的设计与实现(北京邮电大学·王萌)
  • 基于Web的负荷统计法建模平台(山东大学·刘晓宇)
  • 基于行列转换的统计功能研究与应用(中国海洋大学·张娜)
  • 双权重弹性网-逻辑回归多步筛选算法及其应用(中央财经大学·黄捷)
  • 基于Q-learning的系统集成与过程优化(青岛科技大学·魏晓彤)
  • 中学python课程知识图谱构建及应用研究(华中师范大学·黄健)
  • 基于Web的微分方程自动求解系统的研究与开发(华东师范大学·杨乐)
  • 基于J2EE的远程网络教育系统研究与实现(电子科技大学·陈南荪)
  • 基于Java和Matlab的虚拟仿真实验系统的设计与实现(长江大学·喻盼)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设驿站 ,原文地址:https://m.bishedaima.com/yuanma/36164.html

相关推荐

发表回复

登录后才能评论