Java教程

拟合算法及Matlab求解——对数据寻求一个最简易的函数(曲线)

本文主要是介绍拟合算法及Matlab求解——对数据寻求一个最简易的函数(曲线),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

与插值不同,在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数)。


目录

一、插值和拟合的区别

二、最小二乘法的解释及求解

三、如何评价拟合的好坏

四、“线性函数”的介绍


一、插值和拟合的区别

        插值算法中,得到的多项式 f(x) 要经过所有样本点。但如果样本点太多,那么这个多项式次数过高,会造成龙格现象。
        虽然我们可以选择分段的方法避免这种现象,但更多时候我们倾向于得到一个确定的曲线,尽管这条曲线不能经过每一个样本点,但只要保证误差足够小即可,这就是拟合的思想。(拟合的结果是得到一个确定的曲线)

举个例子
假设拟合曲线为 y = kx+b .此时拟合即求解:k 和 b 取何值时,样本点和拟合曲线最接近。
那怎么样定义“最接近”呢?最小二乘法!

二、最小二乘法的解释及求解

第一种定义:  \hat{k},\hat{b}=argmin(\sum_{i=1}^{n}|y_{i}-\hat{y_{i}}|)
第二种定义:  \hat{k},\hat{b}=argmin(\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2})
由于第一种定义有绝对值,不容易求导,因此计算比较复杂,所以我们往往使用第二种定义,这也正是最小二乘的思想。(为什么不用三次方?正负会相抵)
为什么不用四次方?(1)避免极端数据对拟合曲线的影响;(2)最小二乘法得到的结果和MLE极大似然估计一致。

求解最小二乘法

Matlab求解最小二乘

三、如何评价拟合的好坏

        总体平方和:SST=\sum_{i=1}^{n}(y_{i}-\bar{y})^{2}
        误差平方和:SSE=\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2}
        回归平方和: SSR=\sum_{i=1}^{n}(\hat{y_{i}}-\bar{y})^{2}
可以证明得到:SST = SSE + SSR(要用到我们求导得到的两个等式)
则有拟合优度 R^20\leqslant R^{2}=\frac{SSR}{SST}=\frac{SST-SSE}{SST}=1-\frac{SSE}{SST}\leqslant 1
R^2 越接近1,说明误差平方和越接近0,说明拟合的越好。
注:R^2只能用于拟合函数是线性函数时拟合结果的评价;线性函数和其他函数比较拟合的好坏,直接看SSE即可)
Matlab计算拟合优度:
        

四、“线性函数”的介绍

思考: y = a+bx^2 是线性函数吗?
是的,因为我们这里说的线性函数是指对参数为线性(线性于参数)
对于“线性”的解释有两种:
①对变量为线性
        对线性的第一种并且也许是更“自然”的一种解释是,Y的条件期望值是X_{i} 的线性函数。按照这种解释,诸如 E(Y|X_{i}) = \beta _{1} + \beta _{2}\ X_{i}^{2} 的回归系数,由于变量X以幂或指数2出现,就不是线性的。
②对参数为线性
        对线性的第二种解释是,Y的期望 E(Y|X_{i}) 是参数β的一个线性函数;它可以是或不是变量X的线性函数。对于这种解释,E(Y|X_{i}) = \beta _{1} + \beta _{2}\ X_{i}^{2} 就是一个线性(于参数)回归模型。为了看出这一点,让我们假设X的值为3,因此 E(Y|X=3) = β + 9\beta _{2} ,显然它是β1和β2的线性函数。

 如何判断线性于参数的函数?
        在函数中,参数仅以一次方出现,且不能乘以或除以其他任何的参数,并且不能出现参数的复合函数形式。
        因此,y=a+b^{3}x 、y=a+bcx、y=a(x-b)^2、y=asin(b+cx) 都不是线性函数,不能用R^2。

这篇关于拟合算法及Matlab求解——对数据寻求一个最简易的函数(曲线)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!