这里是根据清风数学建模视频课程整理的笔记,我不是清风本人。想系统学习数学建模的可以移步B站搜索相关视频
插值和拟合的区别
插值算法中,得到的多项式 f ( x ) f(x) f(x)要经过所有样本点,如果样本点太多,那么这个多项式次数过高,会造成龙格现象。
尽管我们可以选择分段的方法避免这种现象,但是更多时候我们更倾向于得到 一个确定的曲线,尽管这条曲线不能经过每一个样本点,但只要保证误差足够小即可,这就是拟合的思想。
注:插值和拟合都可以用于预测
最小二乘法
设这些样本点为 ( x i , y i ) , i = 1 , 2 , … , n (x_i,y_i),i=1,2,…,n (xi,yi),i=1,2,…,n,设置拟合曲线为 y = k x + b y=kx+b y=kx+b,问 k k k和 b b b取何值时,样本点和拟合曲线最接近
1、 y i ^ = k x i + b \hat{y_i}=kx_i+b yi^=kxi+b,其中 k ^ , b ^ = a r g k , b m i n ( ∑ i = 1 n ∣ y i − y i ^ ∣ ) \hat{k},\hat{b}=arg_{k,b}min(\sum_{i=1}^n|y_i-\hat{y_i}|) k^,b^=argk,bmin(∑i=1n∣yi−yi^∣)
2、 y i ^ = k x i + b \hat{y_i}=kx_i+b yi^=kxi+b,其中 k ^ , b ^ = a r g k , b m i n ( ∑ i = 1 n ( y i − y i ^ ) 2 ) \hat{k},\hat{b}=arg_{k,b}min(\sum_{i=1}^n(y_i-\hat{y_i})^2) k^,b^=argk,bmin(∑i=1n(yi−yi^)2)
第一种有绝对值,不容易求导,因此往往使用第二种定义
求解最小二乘法
见代码
如何评价拟合的好坏
总体平方和 S S T = ∑ i = 1 n ( y i − y ‾ ) 2 SST=\sum_{i=1}^n(y_i-\overline{y})^2 SST=∑i=1n(yi−y)2
误差平方和 S S E = ∑ i = 1 n ( y i − y i ^ ) 2 SSE=\sum_{i=1}^n(y_i-\hat{y_i})^2 SSE=∑i=1n(yi−yi^)2
回归平方和 S S R = ∑ i = 1 n ( y ^ − y ‾ ) 2 SSR=\sum_{i=1}^n(\hat{y}-\overline{y})^2 SSR=∑i=1n(y^−y)2
可以证明得到 S S T = S S E + S S R SST=SSE+SSR SST=SSE+SSR
拟合优度(可决系数) R 2 R^2 R2,满足 0 ≤ R 2 = S S R S S T = S S T − S S E S S T = 1 − S S E S S T ≤ 1 0≤R^2=\frac {SSR}{SST}=\frac {SST-SSE}{SST}=1-\frac {SSE}{SST}≤1 0≤R2=SSTSSR=SSTSST−SSE=1−SSTSSE≤1
R 2 R^2 R2越接近1,说明误差平方和越接近0,说明误差越小,则拟合效果越好
注意: R 2 R^2 R2只能用于拟合函数是线性函数(参数线性)时,拟合结果的评价,若非线性函数直接看 S S E SSE SSE的大小即可(数值越小误差越小)
拟合工具箱
MATLAB中的Curve Fiting Tool