admin管理员组文章数量:1794759
多项式拟合的介绍与例子
机器学习是从有限的观测数据中学习(或“猜测”)出具有一般性的规律,并可以将总结出来的规律推广应用到未观测样本上。机器学习方法可以粗略地分为三个基本要素:模型、学习准则、优化算法[1]。照这个思路,我觉得多项式拟合也能算是一种机器学习,模型就是多项式拟合时选择的某次多项式,学习准则就是令残差平方和之类的指标最小,优化算法就是对残差平方和之类的指标求各阶拟合系数的偏导并令各偏导为0然后得到各阶拟合系数。
下面先结合自己的理解从原理上对多项式拟合进行阐述,然后用两个实际的例子,分别是线性拟合和二次多项式拟胡子长得快合,来实战一下。
多项式拟合原理假设有一组数据点,包含 m 个点,称之为样真三国无双5存档本点吧,为
\\left\\{ (x_{1},y_{1}) (x_{2},y_{2}) … (x_{m},y_{m}) \\right\\}\\\\
那样本点中的某个点就可以表示为
(x_{i},y_{i}),i=1,2,3,…,m\\\\
我们看这些样本点,觉得这些点的分布长得像某 n 次多项式(n为正整数,我们在拟合前就需要确定)
\\hat{y}=a_{0}x^{n}+a_经营贷款{1}x^{n-1}+a_{2}x^{n-2}+…+a_{n-1}x+a_{n}\\\\
可以看到,n 次多项式有a_{0} 到 a_{n}这n+1 个未知的拟合系数,我们要做的就是求出这最佳的n+1 个拟合系数。
那么,怎么样算最佳呢?
我们把样本点的横坐标值 x_{i} ,代入我们假定的多项式 \\hat{y} ,得,n 次多项式在给定样本点的横坐标处的纵坐标为
\\hat{y}_{i}=a_{0}x_{i}^{n}+a_{1}x_{i}^{n-1}+a_{2}x_{i}^{n-2}+…+a_{n-1}x_{i}+a_{n}\\\\
我们需要一个指标来评判所有的 \\hat{y}_{i} 和样本点中的 {y}_{i} 相差多少,可以采用误差/残差的平方和来表征,如
\\epsilon=\\sum_{i=1}^{m}{圣母案(\\hat{y}_{i}-y_{i})^{虚拟世界2}}\\\\ =\\sum_{i=1}^{m}{[(a_{0}x_{i}^{n}+a_{1}x_{i}^{n-1}+a_{2}x_{i}^{n-2}+…+a_{n-1}x_{i}+a_{n})-y_{i}]^{2}}\\\\
回到求最佳的拟合系数的问题,如果能有一组拟合系数让 \\epsilon 最小,那这组拟合系数我们就可以认为是最好的。
那么怎么求呢?我们可以对\\epsilon分别求如下n+1次偏导,并令每个偏导为0。(令偏导为0求多元函数的极值,是高数中的常见操作了。下式中的 \\frac{{\\partial}\\epsilon}{{\\partial}a_{j}} 可以证明是关于 a_压延微晶板{j} 的单调增加的一次函数,所以可以证明极值是极小值,这里就不展开了)
\\left\\{ \\begin{aligned} \\frac{{\\partial}鱼鳞病图片\\epsilon}{{\\partial}a_{0}}=0 \\\\\\ \\frac{{\\partial}\\epsilon}{{\\partial}a_{1}}=0 \\\\\\ … \\\\\\ \\frac{{\\partial}\\epsilon}{{\\partial}a_{n}}=0 \\end{aligned} \\right.\\\\
其中,上述方程组中的某一项 \\frac{{\\partial}\\epsilon}{{\\partial}a_{j}}=0,j=0,1,2,…,n+1 可以展开写为
\\frac{{\\partial}\\epsilon}{{\\partial}a_{j}} =\\sum_{i=1}^{m}{2x_{i}完美直销^{n-j}[(a_{0}x_{i}^{n}+a_{1}x_{i}^{n-1}+a_{2}x_{i}^{n-2}+…+a_{n-1}x_{i}+a_{n})-y_{i}]} =ei中国0\\\\
同理,上述方程组中的昆布丝其他项也可以展开为包含拟合系数a_{0} 到 a_{n}七日死的等式。那么,方程组中的n+1个等式就可以求出这n+1个拟合的系数。(这需要证线性方程组的解存在且唯一,很遗憾我并不会证明,o(╥﹏╥)o,就先这么理解了吧)
这样,我们就得到了一组让 \\epsilon 最小的拟合系数,带回 \\hat{y} 的表达式就拟合完啦!
看式子有点枯燥乏味,下面我们来结合两个拟合的实例看看!
直线拟合实例有3个点,如下图
我们想用线性函数 \\hat{y}=kx+b 来拟合。
代入图中3个点的数据,有
\\epsilon=\\sum_{i=1}^{3}{(\\hat{y}_{i}-y_{i})^{2}}\\\\ =(b-1.1)^{2}+(k+b-1.9)^{2}+(2k+b-3)^{2}
令
\\left\\{ \\begin{alig吴亦凡背景ned} \\frac{{\\partial}\\epsilon}{{\\partial}k}=10k+6b-15.8=0\\\\\\ \\frac{{\\partial}\\epsilon}{{\\partial}b}=6k+6b-12=0 \\end{aligned} \\right. \\\\
解得 k=0.95,b=1.05 。故拟合的线性函数为 \\hat{y}=0.95x+1.05 ,效果如下图
二次多项式拟合实例有4个点,如下图
(好像我忘记标这四个点的坐标了……)我们想用二次函数 \\hat{y}=ax^2+bx+c 来拟合。
代入图中4个点的数据,有
\\epsilon=\\sum_{i=1}^{4}{(\\hat{y}_{i}-y_{i})^{2}}\\\\=\\sum_{i=1}^{4}({ax_{i}^{2}+bx_i+c-y_i)^{2}}
令
\\left\\{ \\伴奏酷begin{eqnarray*}\\frac{{\\partial}\\epsilon}{{\\partial}a}=\\sum_{i=1}^{4}2x_{i}^{2}({ax_{i}^{2}+bx_i+c-y_i)}=196a+72b+28c-75.4=0\\\\\\ \\frac{{\\partial}\\epsilon}{{\\partial}b}=\\sum_{i=1}^{4}2x_{i}({ax_{i}^{2}+bx_i+c-y_i)}=72a+28b+12c-26.2=0\\\\\\ \\frac{{\\partial}\\epsilon}{{\\partial}c}=\\sum_{i=1}^{4}2({ax_{i}^{蓝脸的窦尔敦2}+bx_i+c-y_i)}=28a+12b+8c-12.4=0 \\end{eqnarray*} \\right. \\\\
解得 a=1.025,b=-2.165,c=1.085 。故拟合的二次函数为 \\hat{y}=1.025x^2-2.165x+1.085 ,效果如下图。
那么,假如减少至只有3个点,如下图
重复上述的计算过程,可以计算得到拟合函数为 \\hat{y}=x^2-2.1x+1.1 ,效果如下图。可以看到,拟合的函数完全过这3个点。
实际上,如果把这三个点的坐标直接代入 \\hat{y}=ax^2+bx+c ,能直接求出这个函数。
如果再去掉一个拟合的点,比如只剩下 (1,0) 和 (2,0.9)两个点,重复一遍上述的计算过程,会得到 \\hat{y}=0.2x^2+0.3x-0.5m8000 这个拟合函数,这个函数同样完全过这两个点。但按照高中的知识点,过这两个点的抛物线应该是有无数条的(不知道怎么解释这个现象……)。
不同的 \\epsilon ,不同的拟合结果实际上, \\epsilon 若不同,最终的拟合系数基本上也是不同的。下图展示的是用MAE和MSE作为\\epsilon 遇罗锦,用数值计算的方法求出的拟合结果。
数养宠物值法获得拟合系数如果要算多项式拟合的话,其实知道了拟合原理和并看过了实例就知道怎么算了。以下内容不需要看。但计算拟合系数还有另外一种数值的方法。而上面说的是解析的方法,即通过公式能直接计算出系数。
那么为什么要用数值的方法,通过迭代来获得系数呢?主要是我在刚开始学习机器学习的时候完全不懂机器学习是什么东西,只好从多项崔松旺式拟合上迁移一点自己的理解,帮助理解下机器学习是什么。
按我的理解,机器学习的原理和多项式拟合很接近。只是目前比较火的神经网络由于没有解析解,常采用梯度下降的方式,通过迭代来获得模型参数(对应着多项式拟合中的多项式系数)。
梯度下降和迭代的过程这里不赘述了。看看下面两张图,是迭代过程中参数和损失的变化,以及最后的结果。怎么样?是不是很像神culture是什么意思经网络训练的过程呢?哈哈
迭代过程中参数的变化拟合结果参考^[1辐射] nndl.github.io/版权声明:本文标题:多项式拟合的介绍与例子 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686594155a85625.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论