当我们引出某个模型的时候,一般都会有一个或者多个未知参数,这时候我们就需要去收集数据,利用我们得到的数据对模型进行拟合,从而确定这些参数.
具体的如何收集数据,对数据点的间距我们在此不进行讨论我们讨论的是,如何利用已得到的可利用的数据来确定我们的模型.
这里我们需要知道一个概念. 绝对偏差
假设我们的模型为 y=f(x) ,对于每一个 f(x) ,它与实际数据之间的纵向偏差,我们称其为 绝对偏差
为了尽可能的使模型接近于实际情况,我们需要将 绝对偏差 减少.具体的可分为两类
- 极小化拟合函数带来的 绝对偏差和
- 极小化拟合函数带来的 最大偏差
这样得到的拟合模型,虽然可能在具体的 f(x) 上可能并不与任意一个数据点相等,但是在总体上,这个模型是成功的.他能够在整体上反应出我们想要探究的事物的变化关系.
转换模型
在许多情况下,我们建立的模型
y=f(x)
可能并不容易代入数据进行参数确定,这时候我们可以尝试去改变模型,对模型中的变量进行调整,然后再代入数据对模型进行参数确定.通常我们会将各类曲线模型进行一定的调整变化,使其成为一条直线,最后我们只需要去确定斜率和截距即可.然而模型在进行调整的时候,会损失一定的值,这些值累积起来,可能会导致最终的结局会有相当大的偏差,这点我们最后再进行讨论.
假设现在我们收集到了如下的数据
x | 1 | 2 | 3 | 4 |
---|---|---|---|---|
y | 8.1 | 22.1 | 60.1 | 165 |
对于上面的数据,我们可以尝试利用
y=Cex
形式的关系来建立模型.但是很明显,这是一条曲线,对于曲线的建模,现在我们难以去精准的确定,这时候我们就需要对模型进行转换.对于这个模型的转换,我们有两种方法.
第一种.我们令
y=Cex⇒lny=x+lnC
.同时,我们将源数据转变为下表所示
x | 1 | 2 | 3 | 4 |
---|---|---|---|---|
lny | 2.1 | 3.1 | 4.1 | 5.1 |
在
lny=x+lnC
这一模型中, 我们可以简单的算出截距
lnC
为1.1, 所以我们能够得到参数
C=e1.1≈3.0
,现在我们利用python来对所得的数据进行作图,如下所示,我们发现拟合的结果非常漂亮,大体上能够说明这个模型的准确度相对是比较高的.
第二种方法就比较简单粗暴,我们直接令
ex
为
y
的因变量,所以这也是一条直线,斜率依旧为
ex | 2.7 | 7.4 | 20.1 | 54.6 |
---|---|---|---|---|
y | 8.1 | 22.1 | 60.1 | 165 |
很明显,我们可以看出
总结
从上面这个例子我们能够看出,对于一条曲线的拟合,如果不借助一些相对较为高级的拟合方法,唯一比较可行的方式是变换模型,将模型转换为一条直线,求斜率和截距的难度系数要小的多.
但是既然模型是在转换,那么就存在一个精度损失的问题,精度的损失在小范围内是一个可以忽视的量,但是数量一旦大了起来,精度的损失就会逐渐累积,最后使得我们的模型不再远远的偏离了实际.