数学建模中拟合算法那些事(上)

插值算法和拟合算法的区别:

插值算法:得到的多项式f(x)要经过所有样本点.
拟合算法:得到的多项式不一定经过每一个样本点,但只要保证误差足够小即可.
拟合算法用到了最小二乘法,首先来对最小二乘法做个解释(清风老师讲解和自己理解)
最小二乘法:设一些样本点为(Xi,Yi),其中i=1,2,3,…n 我们设置拟合曲线为y=kx+b.要使得误差足够小,只需要保证有特定的k和b的取值,来使得样本点和拟合曲线最接近.
在这里插入图片描述
上图是老师给出的定义.
1.首先说说**为什么取最小值,**这也是基于拟合算法的定义来说,可以不经过样本所有点,但是要保证误差最小,样本和拟合曲线最接近当从几何方面说到数学层面时,就是要y=kx+b中实际的y和计算出来的y^差之间最小.
2.一般使用第二种定义,原因在此.第一种有绝对值,不容易求导,计算比较复杂.第二种求导相对简单,适合应用,这也是为啥叫最小二乘.
3.平方可以,三次方,四次方可以吗?
首先三次方有正负之分,会对y差值之间的和相加有影响.四次方理论也可以,但是会造成个别点偏离过多对拟合曲线影响太大,而且不好求导,所以我们一般使用二次方.
对上式进行变化可得下式:
在这里插入图片描述
(L在机器学习中被称作损失函数,在回归中常常被称作残差平方和)
下图为使得k,b最小,对k,b的推导.
在这里插入图片描述
涉及到的建模代码:

k = (n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x))
b = (sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))

注意点乘
在此处再讲解一个东西R的平方(拟合优度也叫作可决系数)
在这里插入图片描述
涉及到的一些代码:

y_hat = k*x+b; % y的拟合值    mean为取平均值作用
SSR = sum((y_hat-mean(y)).^2)  % 回归平方和
SSE = sum((y_hat-y).^2) % 误差平方和
SST = sum((y-mean(y)).^2) % 总体平方和
SST-SSE-SSR   % 5.6843e-14  =   5.6843*10^-14   matlab浮点数计算的一个误差
R_2 = SSR / SST

这里的线性有两种解释:对参数为线性对变量为线性
思考:y=a+bx^2是线性函数吗?
答案:如果是对参数为线性的话就是,如果是对变量为线性则不是.
而我们拟合算法中说到的线性是对参数为线性,此处应该特别注意.
(ab,a^2这样的都不是线性,注意指数函数是可以的)

此时,我们对拟合算法中用到的一些概念和需要的东西进行了简单的理解,下一篇来继续说说拟合算法那些事,并且实际操作一个小题目.

猜你喜欢

转载自blog.csdn.net/Fireworkyanhuo/article/details/106171078