Chaos is a ladde|

West11

园龄:11个月粉丝:1关注:1

拟合算法

理论

拟合与插值不同,不需要经过所有的点,只需要误差比较小,拟合就是可行的。

基本的方法是最小二乘法,

设一条曲线y=kx+b , 对于xi这条曲线的估值为f(xi),e=f(xi)yi.e2

因为这些方程都是线性方程,所以除了求导计算最小值满足的k,b之外,还可以用线性代数解决最小二乘法问题。详见:https://open.163.com/newview/movie/free?pid=M6V0BQC4M&mid=M6V2AOJPU

大意为,一个线性方程组 Ax=b如果无解,那么最近的近似解可以通过ATAx=ATb的解计算来计算。

现实中的拟合可能要求高次函数,一次函数的拟合效果可能不好,所以可以用若干非线性函数来拟合。考虑一下插值算法,总体效果不好的情况下可以分段插值,所以拟合也可以分段,我们可以用若干非线性函数来拟合

  1. 直线y=kx+b
  2. 多项式y=a0+a1x++amxm
  3. 双曲线y=a1x+a2
  4. 指数函数y=a1ea2x.

有那么多的拟合函数,那么如何评价拟合效果呢?

用拟合优度(可决系数),R20R2=SSRSST=SSTSSESST=1SSESST1R21

SST(total)SST=i=1n(yiy¯)2

SSE(error)SSE=i=1n(yiyi^)2

SSR(return)SSR=i=1n(yi^y¯)2

拟合优度R2只能用于看线性拟合的效果,其他非线性看SSE的大小。

MATLAB

MATLAB自带拟合工具包,支持曲线拟合工作,在APP中找 Curve Fitting Tool.

最小二乘法,求一个y=a+bx的公式,用线性代数方法

%x,y为初始数据
x;
y;
%构造r它是方程中已知量的矩阵
r = [ones(5,1) x.^2];
ab = r\y %ab是r左除y,即ab=inv(r)*y,这样能得到方程的解,拟合曲线的系数在ab中。

多项式拟合

a = polyfit(x0,y0,m)
%x0,y0为初始数值
%m为多项式次数
%a为参数
y = polyval(a,x)
%要求拟合函数在x处的值用polyval

本文作者:West11

本文链接:https://www.cnblogs.com/cxy1114blog/p/18290075

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   West11  阅读(42)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起