定义

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

插值和拟合的区别

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

例子

找出y和x的拟合曲线:
在这里插入图片描述
先画一个散点图:
在这里插入图片描述

求解最小二乘法

在这里插入图片描述
在这里插入图片描述
代码:

plot(x, y, 'o')
xlabel('x的值')
ylabel('y的值')

n = size(x,1);
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))

hold on % 继续在之前的图形上来画图形
grid on % 显示网格线

f = @(x)k*x + b;
fplot(f,[2.5,7]);
legend('样本数据','拟合函数','location','SouthEast')

得到下图:
在这里插入图片描述

评价拟合的好坏

在这里插入图片描述
代码:

y_hat = k*x+b; % y的拟合值
SSR = sum((y_hat-mean(y)).^2)  % 回归平方和
SSE = sum((y_hat-y).^2) % 误差平方和
SST = sum((y-mean(y)).^2) % 总体平方和
SST-SSE-SSR   
R_2 = SSR / SST
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐