一. 背景
实际工作中,在得到一堆数据点后,常要寻求数据点之间的关系。一般做法是先画出图来,然后用多项式或其他函数来拟合,最后分析下拟合的误差,看拟合结果是否可靠。
二. 实例
数据: data2.txt
步骤:
1. 点击matlab主页上的 “导入数据”选项,将txt导入matlab。
2. 这里选择“数值矩阵”,点击“导入所选内容”
此时工作空间里就有了data2这个矩阵,是2000x2double型。
3. 对导入的数据进行画图。
>> plot(data2(:,1), data2(:,2))
>> xlabel('data size(M)')
>> ylabel('average time(s)')
4. 对数据进行拟合
>>x=data2(:,1)
>>y=data2(:,2)
5. 点击“应用程序” 下的“curve fitting”
6. 加载数据x 和 y,然后选择拟合类型
7. 对拟合结果的分析
左下角的Results是拟合的结果。
Godness of fit:(拟合的好坏)
SSE(sum of square error):所有误差平方和,其实就是残差,即不能被拟合回归所解释的部分。假定是真实值,是预测值。
SSE越小,预测值越准,说明拟合的越好。
RMSE(root of mean square error):对均方误差开根号。
RMSE和SSE是一回事,值越小,拟合越好。
R-square(relation of square): 称可决系数,其实是相关系数的平方,衡量拟合度的量,取值在[0,1].
,
其中
是预测值,是真实值, 是所有真值的平均值。SSR(sum of square of the regression)度量预测值自身的波动,它是可由拟合回归模型来解释的,因为是通过模型给出的预测值嘛。SST(sum of squares of total)度量真实值自身的波动,即数据总的偏差平方和。通过对SST,SSE,SSR本质的分析,可以得到
即数据总偏差=不能被回归解释的偏差+能被回归解释的偏差
所以能被回归解释的偏差占比越大,说明回归拟合的越好。故越接近1拟合越好。
Adjusted R-square:调整, 取值在[0,1], 越接近1拟合越好。
不难发现
随着真实数据的增加,SSE会减小,从而会增大,但是这里存在一个问题,就是增加的真实数据不一定是有效的数据,所以我们通过调整来真实的衡量拟合度,也就是Adjusted R-square可以用来检验是否有多余无用的变量。
其中n为数据量,p为特征数,n-p-1就是自由度。
分子分母除以SSE和SST各自的自由度,确切的说是各自的均值,因为它们都服从卡方分布。这样除以均值是因为可以消除量纲对于其的影响,就比如测量长城和桌子,长城的误差可能是好几米,桌子的误差可能几毫米,这肯定不能说长城测量的没有桌子测量的准确,而应该将其放到一个水平上进行误差的比较,从而对其进行判断,调整的R square就是将RSS和TSS调整到同一水平上进行比较[1]。
8.结果分析
通过对Results 几个量的分析,我们可以知道拟合的好坏。在方框2中有不同的拟合类供选择。
三. 参考文献
[1] 作者:SUNFLOWER 链接:https://www.zhihu.com/question/25654342/answer/271334114