-
2019-10-21 15:52:24
数据的误差分为两类:
1.抽样误差
是一种随机性误差;
引起:抽样的随机性;
只出现在概率抽样中;
只要采用概率抽样,抽样误差就是不可避免的;
抽样误差是可计算的;
抽样误差是可控制的,主要通过改变样本量来控制;2.非抽样误差
出现在概率抽样、非概率抽样、全面调查中;
可控制,但不可计算;
非抽样误差可分为:- 抽样框误差
只出现在概率抽样中(因为只有概率抽样需要抽样框)。 - 回答误差
主要有理解误差、记忆误差、有意识误差。
记忆误差,是一种随机误差,最终结果是具有趋中的倾向;
有意识误差,是一种系统误差,偏向一个方向; - 无回答误差
有时是随机的,有时是系统的。
不因调查内容的无回答是随机的,可通过增大样本量来解决;
因调查内容的无回答是系统性误差。 - 调查员误差
- 测量误差
更多相关内容 - 抽样框误差
-
浮选试验误差分析与最佳数据处理方法的研究
2020-07-14 21:31:13浮选试验中的误差是不可避免的。通过规范试验操作,可以在一定程度上减小系统误差。同时,在试验结果的处理中,对比求算术平均值法和加权平均值法的不同可知,求加权平均值的方法更能在一定程度上缩小试验值与真值的差距... -
误差理论与数据处理简答题及答案.docx
2020-12-06 20:29:381误差永远不等于零 2误差具有随机性 3误差具有不确定性 4误差是未知的 由于实验方法和实验设备的不完善周围环境的影响受人们认识能力所限测量或实验所得数据和被测量真值之间不可避免地存在差异因此误差是不可避免的... -
误差理论与数据处理简答题及答案.pdf
2020-07-22 00:52:54基本概念题 1误差的定义是什么它有...识能力所限测量或实 验所得数据和被测量真值之间不可避免地存在差异因此误差是 不可避免的 2什么叫真值什么叫修正值修正后能否得到真值为什么 答真值在观测一个量时该量本身所具 -
误差
2021-07-26 05:46:35§1.2 数值计算的误差用数值方法解决科学研究或工程技术中的实际问题,一般来说,产生误差是不可避免的,根本不存在绝对的严格和精确。但是我们可以认识误差,从而控制误差,使之局限于最小(或尽量小)的范围内。...§1.2 数值计算的误差
用数值方法解决科学研究或工程技术中的实际问题,一般来说,产生误差是不可避免的,根本不存在绝对的严格和精确。但是我们可以认识误差,从而控制误差,使之局限于最小(或尽量小)的范围内。
算法的实现必须在计算机上进行,计算机并不是像一般人想象的哪样可以解决一切问题而不出差错。半个世纪以来计算机带给我们这个世界的诸多烦恼中,误差问题最为突出。小到银行利率的错算,大到导弹的错误发射,除了操作人员的疏忽、机器的故障引起过失误差外,计算机在处理数据过程中还存在计算误差。这主要是计算机机器数所引起的,机器数的特点是有限、离散;这和数学上常用的实数系无限、稠密、连续的特点完全不同。
在2400多年前,古希腊人提出了被称为几何三大问题的古典难题。这说明在历史上,人类就常被误差所困扰。下面问题就是三大难题之一。
立方倍积问题做一个立方体,使其体积为已知立方体的二倍。
解 不妨设已知立方体体积为1,要做的立方体体积为2,则所做立方体高度应该为
。用计算机计算出
≈1.259 921 049 894 87(15位数),尽管精确度相当高,但仍然是近似值。下面表中列出了对h取前有限位数时,计算所得体积的误差。
位数
高度
体积
误差
2
1.2
1.728
2.7200×10--1
3
1.25
1.953125
4.6875×10--2
4
1.259
1.995616979
4.3830×10--3
5
1.2599
1.999899757799
1.0024×10--4
6
1.25992
1.99999500019149
4.9998×10--6
7
1.259921
1.99999976239049
2.3761×10--7
8
1.2599210
1.99999976239049
2.3761×10--7
9
1.25992104
1.99999976239049
4.7121×10--8
10
由上表可知,计算机机器数的有限位特点使这一问题只能在满足一定的精度条件下解决。误差是无法消除的。
1.2.1计算机的数系与运算特点
1.计算机数系
我们所研究的算法都是在计算机上求解的方法,因此应该了解计算机是如何进行数字计算的,这有助于构造和分析各种数值方法。数字运算主要是实数运算,而任一实数都可以表示为
=±
其中
为整数,x称为十进制浮点数。一般地,可定义
进制浮点数为
=±
其中
在计算机中,由于机器本身的限制,一般实数只能被表示为
=±
其中
这里的t是正整数,是计算机的字长,c为整数,满足
和
为固定整数,对不同的计算机,
是不同的。这样的是x称为t位
进制浮点数,其中c称为阶码,
称为尾数,数集
±
}
称为机器数系,它是计算机进行实数运算所用的数系,一般
取2,8,10和16.机器数系F是一个离散的有限集合,分布也不均匀。在F中有一个最大正数M和一个最小正数m,如数系
中,
,
若一个实数的绝对值大于M,则计算机产生上溢错误,若绝对值小于m,则计算机产生下溢错误,上溢时计算机中断程序处理;下溢时,计算机将此树以零表示,继续执行程序。上溢、下溢统称为溢出错误。通常,计算机把尾数为0且阶数最小的数表示为数零。
2.计算机对数的接收
设实数x是计算机接收的数,则计算机对其的处理方法是:
1)若
,则计算机按原样接收x;
2)若
,但
,则计算机用数系F中最接近x的数
表示并记录x。
3.计算机对数的处理
计算机对接收到数主要做加减乘除四则运算,其运算方式是:
1)加减法——先向上对阶,再运算,后舍入。
例1设计算机数系为
,
是计算机接收到的二数。则此二数做加法的处理过程是:
2)乘除法——先运算,后舍入。
例2同例1条件,则此二数做乘法的处理过程是:
计算机接收和处理实数的上述特点,往往使得数学上完美的公式在计算机上编程计算时却得不到正确的结果,所以在数值计算的研究中应注意计算机的此种特点。
在计算机数系中,把尾数第一位
的数称为规格化浮点数,用规格化浮点数表示一个实数,具有形式唯一和精度高的特点,但并不是
中所有数都能用规格化浮点数表示,如
就不能用规格化浮点数表示。
1.2.2误差的来源与分类
在数值计算过程中,估计计算结果的精确度是十分重要的工作,而影响精确度的因素是各种各样的误差,它们可分为两大类:一类称为“过失误差”,即因为疏忽导致误写数字和误用公式等,它一般是由人为造成的,这是可以避免的,故在“数值计算”中我们不讨论它;而另一类称为“非过失误差”,这在“数值计算”中往往是无法避免的,也是我们要研究的,大体有四种类型:模型误差、测量误差、截断误差和舍入误差。例如,计算地球的表面积可以用近似公式:
。这其中就包含了各种误差。
1模型误差
用数值计算方法解决实际问题时,首先必须建立数学模型。由于实际问题的复杂性,在对实际问题进行抽象与简化时,往往为了抓住主要因素而忽略了一些次要因素,这样就会使得建立起来的数学模型只是复杂客观现象的一种近似描述,它与实际问题之间总会存在一定的误差。我们把数学模型与实际问题之间出现的这种误差称为模型误差。在上面的近似公式中,把地球表面近似地看成一个球,这就是地球的简单模型,它与地球的实际情况有很大的差别。
2测量误差
在数学模型中往往包含一些由观测或实验得来的物理量,如电阻、电压、温度、长度等,由于测量工具精度和测量手段的限制,它们与实际量大小之间必然存在误差,这种误差称为测量误差。上面近似公式中地球半径是要经过测量得到,然而无论使用什么工具,其误差是无法避免的。
3截断误差
由实际问题建立起来的数学模型,在很多情况下要得到准确解是困难的,通常要用数值方法求出它的近似解。例如常用有限过程逼近无限过程,用能计算的问题代替不能计算的问题。这种数学模型的精确解与由数值方法求出的近似解之间的误差称为截断误差,由于截断误差是数值计算方法固有的,故又称为方法误差。例如用函数
的泰勒(Taylor)展开式的部分和
去近似代替
,其余项
就是真值
的截断误差。如
当
很小时,可以取前两项来近似代替
的计算,即:
,由泰勒定理可知,这时
与
的误差是:
在计算中被抛弃了。截断误差的大小,直接影响数值计算的精度,所以它是数值计算中必须十分重视的一类误差。
4舍入误差
无论用计算机、计算器计算还是笔算,都只能用有限位小数来代替无穷小数或用位数较少的小数来代替位数较多的有限小数。在上面的近似公式中的
,因为是一个无理数,在计算机中无法精确表示,只能取有限位,一般取3.14159,而将后面无穷多位舍弃。不仅无理数,即便是十分简单的有理数如1/3,也只能用有限位的计算机数近似地表示为0.333333(保留6位)。因此在用计算机进行数值计算时,由于计算机的位数有限,在数值计算时只能近似地表示这些数字,由此而产生的误差称为舍入误差。
舍入地方法比较多,有收尾法(只入不舍)、去尾法(只舍不入)和四舍五入法等,一般常用人们所熟知的四舍五入法。
当然在计算过程中,这类误差往往是有舍有入的,而且单从一次的舍入误差来看也许是微不足道的,但应当注意的是,在数值计算中,当计算机上完成了千百万次运算之后,舍入误差的积累却可能是十分惊人的,这些误差一经迭加或传递,对精度可能有较大的影响。所以,在做数值计算时,对舍入误差应予以足够的重视。
综上所述,数值计算中除了可以完全避免的过失误差外,还存在难以回避的模型误差、观测误差、截断误差和舍入误差。显然,四类误差都会影响计算结果的准确性,而在这四种误差来源的分析中,前两种误差是客观存在的,称为固有误差,而固有误差往往是计算工作者不能独立解决的,是需要与各有关学科的科学工作者共同研究的问题;后两种误差是由计算方法所引起的,称为计算误差,计算误差将是数值计算方法的主要研究对象。因此,在本课程中,主要研究截断误差和舍入误差(包括初始数据的误差)对计算结果的影响,讨论它们在计算过程中的传播和对计算结果的影响,并找出误差的界,对研究误差的渐近特性和改进算法的近似程度具有重大的实际意义。
1.2.3绝对误差与相对误差
在不同的场合下,表示近似数精确度的方法各有不同,下面介绍数值运算中误差的基本概念。
1绝对误差与绝对误差限
定义1.2.1:设
是精确值
*的近似值,则称:E(
)=
*-
为近似值
的绝对误差,简称误差。
应当注意的是,绝对误差E(
)不是误差的绝对值,它是可正可负的,当E(
)>0时,称
为“弱近似值”或“亏近似值”,当E(
)<0时,称
为“强近似值”或“盈近似值”。而误差的绝对值
是一个非负值,它的大小标志着
的精确程度,
越小说明
的精确程度越高。
一般来说,精确值
*是不知道的,因而E(
)也就无法求出。但在实际测量中,可以根据具体情况估计出
的某个上界,即存在一个适当的正数
,使得:
=
此时,称
为近似值
的绝对误差限,简称误差限或精度。有了绝对误差限就可以知道
*范围为:
-
≤
*≤x+
即
*落在区间
内。在工程应用上,常常采用
*=
±
来表示近似值
的精度或精确值
*的所在范围。
绝对误差是有量纲的。例如,用毫米刻度的直尺去测量一个长度为
*的物体,测得其近似值为
=15mm,由于直尺以毫米为刻度,所以其误差不超过0.5mm,即:
(mm)。这样,虽然不能得出准确值
*的长度是多少,但从这个不等式可以知道
*的范围是:14.5mm<
*<15.5mm,说明
*必在区间[14.5,15.5]内。
2相对误差与相对误差限
用绝对误差来刻画一个近似值的精确程度是有局限性的,在很多场合中它无法显示出近似值的准确程度。如测量100m和10m两个长度,若它们的绝对误差限都是1m,显然前者的测量结果比后者的准确。由此可见,决定一个量的近似值的精确度,除了要看绝对误差的大小外,还必须考虑该量本身的大小,为此引入相对误差的概念。
定义1.2.2:设x*是准确值,x是近似值,将绝对误差与精确值之比,称为近似值
的相对误差,即:
=
由于精确值
*一般无法知道,因此往往取
=
作为近似值
的相对误差。
类似于绝对误差的情况,若存在正数
,使得:
则称
为近似值
的相对误差限。相对误差是无量纲的数,通常用百分比表示,称为百分误差。
例1.2.1:月球到地球的平均距离D=384401±0.5(km);某一公共汽车站到下一站的距离d=1.5±0.3(km)。则D的绝对误差限是0.5(km);d的绝对误差限是0.3(km),
根据绝对误差限的概念,第一个数据D的精确度比第二个数据d的精确度差,但由于
,
根据相对误差限的概念,第一个数据D的精确度比第二个数据d的精确度高,这个结果比较合理,与人们的常识一致。所以,在分析误差时,相对误差更能刻画误差的特性。
1.2.4有效数字
为了能给出一种数的表示法,使之既能表示其大小,又能表示其精确程度,于是需要引进有效数字的概念。在实际计算中,当准确值
*有很多位数时,我们常按四舍五入的原则得到
*的近似值
。
例1.2.2:我们知道e=2.718281828…是一个无理数,由于无理数不能用有限位数表示,只能按四舍五入原则取其近似值:
取一位数时
=3, 有
取三位数时
=2.72, 有
取五位数时
=2.7183,有
由以上分析可知,按四舍五入原则不管取几位小数得到的近似值,其绝对误差都不超过末位数的半个单位。
下面我们将四舍五入抽象为数学语言,进而引进“有效数字”的概念。
定义1.2.3:若
是准确数
*的近似数,且
,那么我们就说,用近似数
表示
*时,准确到非零数之间的一切数字都叫做有效数字,并把有效数字的位数叫做有效数位,它反映了
近似
*的精确程度。
也可用文字叙述如下:若近似值
的绝对误差限是某一位的半个单位,就称
“准确”到这一位,且从该位到
的第一位非零数字共有n位,则称近似值
有n位有效数字,或者说
精确到该位。实际上,用四舍五入方法取得准确数
*的前n位(不包括第一位非零数字前面的零)数,作为它的近似数
时,
就有n位有效数字,其中每一个数字(包括后面的零)都叫做
的有效数字。
引入有效数字概念后,我们规定所写出的数都应该是有效数字,且在同一计算问题中,参加运算的数,都应该有相同的有效数字。在上面的例子中,
有1位有效数字,
具有3位有效数字,而
具有5位有效数字。
分别具有6,5位有效数字。
如何描述有效数字?(一般情况下在计算机中数往往规格化,故有必要考察规格化数。)一般地,任何一个精确值
*经四舍五入后,所得到的近似值
都可写成十进制浮点数表示形式:
=±
。其中,
且
都是0~9中的任一整数,
称为尾数。
用于确定小数点位置,指数m称为阶码。因此,一个浮点数包含尾数和阶码两部分。
当
的绝对误差满足:
=
时,则称近似值
具有n位有效数字。可以证明有效数字的两种定义方式是等价的。
在例1.2.2中
=3=0.3×10,有
×10(1-1),所以
有1位有效数字,或者说
精确到个位;
=2.72=0.272×10, 有
=0.5×10(1-3),则
具有3位有效数字,或者说
精确到0.01,
=2.7183=0.27183×10,有
=0.5×10(1-5),则
具有5位有效数字,或者说
精确到0.0001。
由此可见,如果用浮点数
表示某个数据的近似值时,当阶码m一定时,有效数字位数n越多,其绝对误差越小。
有效数字不但给出了近似值的大小,而且还给出了它的绝对误差限。例如有效数字15.28,0.283×10-2,0.2830×10-2的绝对误差限分别为:0.5×10-2,0.5×10-5,0.5×10-6。
必须注意,在有效数字的记法中有效数字尾部的零不能随意省去,以免损失精度。例如,对于一个精确值
*=3.51499962(吨),其两个近似值
=3.515(吨)与
=3.515000(吨)的近似程度是完全不同的,
精确到0.001(精确到公斤),有四位有效数字,而
精确到0.000001(精确到克),有七位有效数字。
还需特别指出的是,一个准确数字的有效数字应当说有无穷多位,例如1/2=0.5不能说只有1位有效数字。
例:设
,它的两个近似值
和
分别有3,4位有效数字。
有效数字与相对误差有如下关系:
定理1.2.1若用浮点数表示的近似值
具有n位有效数字,则其相对误差限为:
。
证明 由
=±
。其中,
且
都是0~9中的任一整数,得:
,所当
有
位有效数字时,
,则:
。
证毕。
可见有效数字的位数越多,相对误差限就越小,即近似值的有效位数越多,用这个近似值去近似代替准确值的精度就越高。
例1.2.3:为了使
近似值的相对误差小于1%,问至少取几位有效数字?
解
的近似值的首位非零数字是4,则有:
解之得n>2,故取n=3即可满足要求。也就是说只要
的近似值具有3位有效数字,就能保证
≈4.47的相对误差小于1%。
定理1.2.2若
的相对误差限
,则
至少具有
位有效数字。
证明若
有相对误差限:
,则:
因此
至少有
位有效数字,证毕。
有效数字的位数可以刻画近似数的精确度(有效数字的位数越多,绝对误差限和相对误差限就越小)。绝对误差与小数后的位数有关,相对误差与有效数字的位数有关。
1.2.5数值计算的误差估计
数值计算中误差产生与传播的情况非常复杂,参与运算的数据往往都是些近似值,它们都带有误差。而这些数据的误差在多次运算中又会进行传播,使计算结果产生一定的误差,这就是误差的传播问题。
以下介绍利用函数的Taylor公式来估计误差的一种常用方法。
设二元可微函数
中的自变量
*1,
*2相互独立,又
1,
2是自变量
*1,
*2的近似值,则
的近似值
。
将函数
在点(
1,
2)处作泰勒展开,并略去其中的高阶无穷小项,即可得到y*的近似值y的绝对误差的估计式为:
=
≈
=
其中两个偏导数应该是在点(
1,
2)处的值。
近似值y的相对误差的估计式为:
=
以上式子中的
及
分别为各个
对
的绝对误差和相对误差的增长因子,分别表示绝对误差和相对误差经过传播后增大或缩小的倍数。
由以上两个公式,很容易导出两个近似值和与差的绝对误差和相对误差的估计式:
对于绝对误差有:
。即和与差的绝对误差不大于各绝对误差之和。
对于相对误差,考虑最坏的情况是所有相对误差同号,当
时,可得:
即和的相对误差不超过各单项中的最大相对误差。
同理可得两个近似值之积、商绝对误差和相对误差的估计式:
近似值x的绝对误差和相对误差的估计式,也可用微分的形式近似表示。绝对误差
,相对误差
。并有如下结论:
1和的绝对误差:d(x+y)=dx+dy。因此,和的绝对误差限
(x+y)≤
x+
y。
2和的相对误差:
=
对相对误差可作一些讨论:
⑴ 当xy<0时,必有:
或
这时对于很小的相对误差dlnx或dlny可能导致很大的相对误差dln(x+y),特别是x+y≈0时,可能使dln(x+y)相当大,因此在近似计算中应当努力避免相近的两个数相减,避免小的数作分母,这是减小误差的一个原则。
为此在x接近于零时,常作变换:
当x充分大时,常作变换:
⑵ 当xy>0时,必有:
或
,则:
即和的相对误差不超过相对误差之和进而有:
(x+y)≤
x+
y。
同时还可推出:
+
因此,表明同号两数和的相对误差(限)不超过这两数相对误差(限)的最大者。
特别地,当
时,
,则:
。
因此,当同号二数的绝对值相差很大时,其和的相对误差约等于绝对值大者的相对误差。
3积的绝对误差d(xy)=xdy+ydx,积的相对误差dln(xy)=dlnx+dlny。
特别地,dlnxn=ndlnx。
4商的绝对误差:
商的相对误差:
多个数值相乘除时,其相对误差等于各乘数和除数的相对误差的和与差,例:
5函数的相对误差:
对于多元函数
,它的绝对误差:
它的相对误差:
。
最后指出,在由误差估计式得出绝对误差限和相对误差限的估计时,由于取了绝对值并用三角不等式放大,因此是按最坏的情形得出的,所以由此得出的结果是保守的。事实上,出现最坏情形的可能性是很小的。因此近年来出现了一系列关于误差的概率估计。一般来说,为了保证运算结果的精确度,只要根据运算量的大小,比结果中所要求的有效数字的位数多取1位或2位进行计算就可以了。
1.2.6算法的数值稳定性
所谓算法,不仅是单纯的数学公式,而是对一些已知数据按某种规定的顺序进行有限次四则运算,求出所关心的未知量的整个计算过程。解决一个计算问题往往有多种算法,其计算结果的精度往往大不相同。原因是初始数据的误差或计算中的舍入误差在计算过程中的传播,因算法不同而相异。一个算法如果输入数据有误差,而在计算过程中舍人误差不增长,则称此算法是数值稳定的,否则,称此算法为不稳定的。
在构造算法时,应构造数值稳定的,尽量避免误差的危害。算法数值稳定通常有以下几条原则:
1)要防止“大数吃小数”。在数值计算中,参加运算的数有时数量级相差很大,而计算机的字长有限,加减法在向上对阶、运算,再四舍五入时,小数被吃掉。故在多数做和时,可将同号数按从小到大的顺序来计算。
2)要避免二相近的数相减。两个相近数相减会引起有效数字的严重损失,从而导致相对误差的增大。要避免这种情况,通常可采用数学方法将相应的计算公式转化为另一个等价的计算公式来计算。例如,x充分大时,计算
时,
与
很接近,直接计算会造成有效数字的严重损失,可将原式化为一个等价公式
来计算,以减少误差。
3)要避免绝对值很小的数作除数。绝对值很小的数作除数会直接影响计算结果的精度,这是由
可见,当|y|充分小时,
可能会变得很大。避免这种情况的方法,往往可用化其为其他等价形式来处理,例如,当x接近于0,将
转化为等价式
来计算,可避免这种情况发生。
4)要减少运算次数,避免误差积累。减少运算次数,能减少舍入误差及其传播环节。如对多项式
的计算,直接计算需做
次乘法,而采用秦九绍算法,只需进行n次乘法。
5)要控制舍入误差的积累和传播。如一定积分递推公式,初值的舍入误差在计算过程中迅速传播,而用逆推公式,则成为数值稳定的算法。
-
什么是误差图?今天带你了解可视化误差图,让数据一目了然
2020-08-19 14:36:13这是Python数据可视化的系列短篇,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib, seaborn, plotly等工具创建不同主题的图表。 本文主题是如何在图表中显示误差。 import os import warnings ...前言
这是Python数据可视化的系列短篇,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib, seaborn, plotly等工具创建不同主题的图表。
本文主题是如何在图表中显示误差。
import os import warnings import requests import numpy as np import pandas as pd import matplotlib.pyplot as plt from statsmodels.tsa.arima_model import ARIMA %matplotlib inline plt.style.use("fivethirtyeight") warnings.filterwarnings("ignore")
PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取
可以免费领取源码、项目实战视频、PDF文件等
1. 显示测量误差
科学测量往往存在误差,准确的报告误差跟报告测量结果同样重要。
测量误差(也称为观察误差)是测量值和真实值之间的差异,包括随机误差(任何实验中都会自然发生的误差)和系统误差(由影响所有测量的错误校准的仪器引起)。
举一个例子,假设您正在测量100个学生的体重,有的学生穿较多的衣服,导致重500克,有的学生可能脱水导致轻200克,这些都是测量误差。事实上所有收集的样本都会存在误差,大多数情况下它们不可避免。所以在数据可视化中,有效显示这些错误可以传达更完整的信息。
在matplotlib中通过调用ax.errorbar()创建误差图(errorbar)。误差图由一个点和穿过这个点的线段组成,点对应测量结果,线段代表测量误差。
# 设置随机数种子 np.random.seed(123) # 观测值的数量 n_observations = 30 x = np.arange(n_observations) # 虚拟测量值 y = np.sin(x) + np.random.randn(n_observations) # 测量误差,假设误差服从均匀分布 errors = np.random.randint(1, 3, n_observations) # 调用ax.errorbar接口,提供3个数组,x, y, yerr # fmt控制点和线段的样式,跟ax.plot的fmt相同 # color: 控制点的颜色 # ecolor: 代表误差的线段的颜色 # elinewidth: 代表误差的线段的大小 fig, ax = plt.subplots(figsize=(10, 7)) ax.errorbar(x, y, yerr=errors, fmt="o", color="black", ecolor="lightgray", elinewidth=3)
2. 显示预测误差
在机器学习领域,回归模型和时间序列模型用于预测,模型会同时生成预测误差(所谓置信区间),在可视化预测结果时,通常要求显示预测值和预测区间,这可以通过ax.plot()和ax.fill_between()实现。
接下来使用一个真实的案例说明,先从蜂鸟数据获取黄金价格,然后用ARIMA(自回归整合移动平均)预测未来30天的价格,可视化预测结果。
# 从蜂鸟数据下载黄金价格 params = { "symbol": "XAUUSD", # 现货黄金ID "start_date": "2010-01-01", "end_date": "2020-08-05", "apikey": os.getenv("TROCHIL_API") # 在蜂鸟数据官网注册获取API密钥 } resp = requests.get("https://api.trochil.cn/v1/forex/history", params) data = pd.DataFrame.from_records(resp.json()["data"]) data["datetime"] = pd.to_datetime(data["datetime"]) data.set_index("datetime", inplace=True) # 创建ARMIA模型,预测未来30天价格走势 model = ARIMA(data.close, order=(1, 1, 1)) results = model.fit() fc, errors, conf = results.forecast(steps=30, alpha=0.05) fc_df = pd.DataFrame({ "forecast": fc, "lower": conf[:, 0], "upper": conf[:, 1] }, index=pd.date_range("2020-08-06", periods=30)) # 可视化预测结果,包括点预测值和预测区间 # 预测区间包括置信下限和上限,代表真实值可能落入的范围 # 调用ax.plot显示点预测值,ax.fill_between显示预测区间 data_since_2020 = data["2020":] fig, ax = plt.subplots(figsize=(12, 7)) data_since_2020.close.plot(ax=ax, label="Historical Prices") ax.plot(fc_df.index, fc_df.forecast, label="Forecast Prices") ax.fill_between(fc_df.index, fc_df.lower, fc_df.upper, color="gray", alpha=0.3, label="Forecast Interval") ax.set_title("Plot Forecast Errors") ax.legend(loc="upper left") <matplotlib.legend.Legend at 0x7fbfa348d9a0>
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:蜂鸟数据Trochil
-
深度学习笔记(17) 误差分析(二)
2019-06-14 08:27:57使用来自不同分布的数据进行误差分析、 数据分布不匹配时的偏差与方差、处理数据不匹配问题深度学习笔记(17) 误差分析(二)
1. 使用来自不同分布的数据进行误差分析
越来越多的团队都用来自和开发集、测试集分布不同的数据来训练
这里有一些最佳做法来处理训练集和测试集存在差异的情况假设在开发一个手机应用,用户会上传他们用手机拍摄的照片
想识别用户从应用中上传的图片是不是猫
现在有两个数据来源:- 一个是真正关心的数据分布,来自应用上传的数据
这些照片一般更业余,取景不太好 - 一个数据来源就是用爬虫程序挖掘网页直接下载
就这个样本而言,可以下载很多取景专业、高分辨率的猫图
如果应用用户数还不多,也许只收集到10,000张用户上传的照片
但通过爬虫挖掘网页,可以下载到海量猫图而真正关心的算法表现是
最终系统处理来自应用程序的这个图片分布时效果好不好现在就陷入困境
因为有一个小的数据集,而一个大得多的数据集来自另一个分布,和真正想要处理的并不一样
但又不想直接用这10,000张图片,因为这样训练集就太小了有一种选择,可以做的一件事是将两组数据合并在一起
这样就有21万张照片,把这21万张照片随机分配到训练、开发和测试集中
为了说明观点
假设已经确定开发集和测试集各包含2500个样本
所以训练集有205000个样本这么设立数据集好处在于,训练集、开发集和测试集都来自同一分布,这样更好管理
但坏处在于如果观察开发集
看看这2500个样本其中很多图片都来自网页下载的图片
那并不是真正关心的数据分布,真正要处理的是来自手机的图片所以对于这2500个样本,数学期望值是:2500×200k/210k=2381
有2381张图来自网页下载但平均而言,只有119张图来自手机上传
要记住,设立开发集的目的是告诉团队去瞄准的目标
而大部分精力都用在优化来自网页下载的图片
所以不建议使用第一个选项
因为这样设立开发集就是告诉团队针对不同于实际关心的数据分布去优化另外一条路,训练集还是205k张图片
其中来自网页下载的200k张图片,再加上5k张来自手机上传的图片
对于开发集和测试集都是2.5k张手机图
这样将数据分成训练集、开发集和测试集的好处在于,现在瞄准的目标就是想要处理的目标
缺点在于,现在训练集分布和开发集、测试集分布并不一样
但事实证明,这样把数据分成训练、开发和测试集,在长期能够带来更好的系统性能来看另一个样本,假设正在开发一个全新的产品,一个语音激活汽车后视镜
这就是造一个后视镜,把这个小东西换掉,现在就可以和后视镜对话了
只需要说:“亲爱的后视镜,请帮我找找到最近的加油站的导航方向”
然后后视镜就会处理这个请求
那么怎么收集数据去训练这个产品语言识别模块呢?也许有很多来自其他语音识别应用的数据,它们并不是来自语音激活后视镜的数据
对于训练集,可以将拥有的所有语音数据,从其他语音识别问题收集来的数据
比如这些年从各种语音识别数据供应商买来的数据
可以直接买到成 x, y 对的数据,其中x是音频剪辑,y是听写记录
或者研究过智能音箱,语音激活音箱
所以有一些数据,也许做过语音激活键盘的开发之类的
举例来说,也许从这些来源收集了500,000段录音
对于开发集和测试集也许数据集小得多
比如实际上来自语音激活后视镜的数据
因为用户要查询导航信息或试图找到通往各个地方的路线
这个数据集可能会有很多街道地址
“请帮我导航到这个街道地址”,或者“请帮助我导航到这个加油站”
所以这个数据的分布和左边大不一样
但这真的是关心的数据
因为这些数据是产品必须处理好的
所以就应该把它设成开发和测试集在这个样本中,应该这样设立训练集,左边有500,000段语音
然后开发集和测试集,把它简写成 D和 T
可能每个集包含10,000段语音,是从实际的语音激活后视镜收集的或者换种方式
如果觉得不需要将20,000段来自语音激活后视镜的录音全部放进开发和测试集
可以拿一半,把它放在训练集里,那么训练集是51万段语音
包括来自那里的50万段语音,还有来自后视镜的1万段语音
开发集和测试集也许各自有5000段语音那是不是应该把收集到的数据都用掉?
不一定!
2. 数据分布不匹配时的偏差与方差
用猫分类器为例,人类在这个任务上能做到几乎完美
所以贝叶斯错误率或者说贝叶斯最优错误率几乎是0%
所以要进行错误率分析,通常需要看训练误差,也要看看开发集的误差比如说,在这个样本中,训练集误差是1%,开发集误差是10%
如果开发集来自和训练集一样的分布
可能会说,这里存在很大的方差问题
算法不能很好的从训练集出发泛化,处理开发集就突然间效果很差但如果训练数据和开发数据来自不同的分布,就不能再放心下这个结论了
特别是,也许算法在开发集上做得不错,可能因为训练集很容易识别
因为训练集都是高分辨率图片,很清晰的图像
但开发集要难以识别得多
也许软件没有方差问题,这只不过反映了开发集包含更难准确分类的图片问题在于,当看训练误差,再看开发误差,有两件事变了
第一,算法只见过训练集数据,没见过开发集数据
第二,开发集数据来自不同的分布
而且因为同时改变了两件事情
很难确认这增加的9%误差率有多少是因为算法没看到开发集中的数据导致的
有多少是因为开发集数据就是不一样导致的为了分辨清楚两个因素的影响,定义一组新的数据是有意义的
称之为 训练 - 开发集
所以这是一个新的数据子集
应该从训练集里分配出来,但不会用来训练网络
意思是已经设立过这样的训练集、开发集和测试集了
开发集和测试集来自相同的分布
但训练集来自不同分布要做的是随机打散训练集,然后分出一部分训练集作为训练-开发集(training-dev)
就像开发集和测试集来自同一分布,训练集、训练-开发集也来自同一分布但不同的地方是现在只在训练集训练神经网络
不会让神经网络在训练-开发集上跑后向传播
为了进行误差分析
应该做的是看看分类器在训练集上的误差,训练-开发集上的误差,还有开发集上的误差比如说这个样本中
训练误差是1%,训练-开发集上的误差是9%,开发集误差是10%,和以前一样
从这里得到结论,当从训练数据变到训练-开发集数据时,错误率真的上升了很多而训练数据和训练-开发数据的差异在于
神经网络在训练集上面直接做了训练,但没有在训练-开发集上训练
算法存在方差问题
因为训练-开发集的错误率是在和训练集来自同一分布的数据中测得的所以尽管神经网络在训练集中表现良好
但无法泛化到来自相同分布的训练-开发集里
它无法很好地泛化推广到来自同一分布,但以前没见过的数据中
所以在这个样本中确实有一个方差问题来看一个不同的样本
假设训练误差为1%,训练-开发误差为1.5%,开发集错误率10%
现在方差问题就很小了
因为从见过的训练数据转到训练-开发集数据,还没有看到的数据,错误率只上升了一点
但当转到开发集时,错误率就大大上升了
所以这是数据不匹配的问题因为学习算法没有直接在训练-开发集或者开发集训练过
但是这两个数据集来自不同的分布
但不管算法在学习什么,它在训练-开发集上做的很好,但开发集上做的不好
称之为数据不匹配的问题。再来看一个样本
训练误差是10%,训练-开发误差是11%,开发误差为12%
要记住,人类水平对贝叶斯错误率的估计大概是0%
如果得到了这种等级的表现,那就真的存在偏差问题了
存在可避免偏差问题,因为算法做的比人类水平差很多
所以这里的偏差真的很高最后一个例子
如果训练集错误率是10%,训练-开发错误率是11%,开发错误率是20%
那么这其实有两个问题
第一,可避免偏差相当高
因为在训练集上都没有做得很好,而人类能做到接近0%错误率
但算法在训练集上错误率为10%
这里方差似乎很小,但 数据不匹配问题很大
所以对于这个样本,如果有很大的偏差或者可避免偏差问题,还有数据不匹配问题如果说人类水平错误率是4%的话,训练错误率是7%
而训练-开发错误率是10%,开发错误率是12%
这样就大概知道可避免偏差和数据不匹配的问题有多大技术上还可以再加入一个数字,就是测试集表现,写成测试集错误率
不应该在测试集上开发,因为不希望对测试集过拟合但如果看看这个,那么这里的差距就说明对开发集过拟合的程度
所以如果开发集表现和测试集表现有很大差距
那么可能对开发集过拟合了,所以也许需要一个更大的开发集要记住,开发集和测试集来自同一分布,所以这里存在很大差距的话
如果算法在开发集上做的很好,比测试集好得多,那么就可能对开发集过拟合了
如果是这种情况,那么可能要往回退一步,然后收集更多开发集数据这里还有个例子
人类的表现是4%,训练错误率是7%,训练-开发错误率是10%,开发集错误率6%
比如说在处理语音识别任务时发现这样
其中训练数据其实比开发集和测试集难识别得多
所以有时候如果开发测试集分布比应用实际处理的数据要容易得多
那么这些错误率可能真的会下降
所以如果看到这样的有趣的事情,可能需要比这个分析更普适的分析就以语音激活后视镜为例
观察Human level 4%和Training error 7%,Training error 7%和Training-dev error 10%,Training-dev error 10%和Dev/Test dev 6%之间的的差异Human level 4%和Training error 7%
人类的表现和训练错误率衡量了可避免偏差大小Training error 7%和Training-dev error 10%
训练错误率和训练-开发错误率衡量了方差大小Training-dev error 10%和Dev/Test dev 6%
训练-开发错误率和开发集错误率衡量了数据不匹配问题大小当继续进行更多分析时,分析并不一定会指明一条前进道路
但有时候可能洞察到一些特征
比如比较 一般语音识别人类水平错误率 4% 和 人类对后视镜语言数据错误率 6%
对于人类来说,后视镜的语音数据实际上比一般语音识别更难
但看这个差值,就可以了解到偏差和方差,还有数据不匹配这些问题的不同程度
3. 处理数据不匹配问题
处理数据不匹配这个问题没有完全系统的解决方案
通常会亲自做错误分析,尝试了解训练集和开发测试集的具体差异为了避免对测试集过拟合,要做错误分析,应该人工去看开发集而不是测试集
如果正在开发一个语音激活的后视镜应用
可能要听一下来自开发集的样本,尝试弄清楚开发集和训练集到底有什么不同
比如说可能会发现很多开发集样本噪音很多,有很多汽车噪音
这就是开发集和训练集差异之一也许还会发现其他错误
比如它可能经常识别错误街道号码,很多导航请求都有街道地址
所以这个也很重要当了解开发集误差的性质时,开发集可能跟训练集不同或者更难识别
那么尝试把训练数据变得更像开发集一点
比如说,如果发现车辆背景噪音是主要的错误来源
那么可以通过人工数据合成更多的模拟车辆噪声数据
参考:
相关推荐:
深度学习笔记(16) 误差分析(一)
深度学习笔记(15) 人的表现
深度学习笔记(14) 评估指标
深度学习笔记(13) Softmax分类
深度学习笔记(12) Batch归一化网络
谢谢!
- 一个是真正关心的数据分布,来自应用上传的数据
-
数据转换/信号处理中的一种提高数字处理器ADC精度的方法
2020-10-19 12:23:52简介:ADC模块是一个12位、具有流水线结构的模数转换器,用于控制回路中的数据采集。...在实际中,A/D转换模块的各种误差是不可避免的,这里定义具有增益误差和失调误差的ADC模块的转换方程为y=x×ma±b,式 -
一种用于显著误差检测的改进型NT-MT算法 (2012年)
2021-05-13 07:31:46工业过程中数据的可靠性和准确性是控制过程和管理优化重要基础,但是由于测量过程中不可避免的存在着各种误差,测量值就不能准确的反应实际的化工过程。本文讨论了数据校正对工业过程的主要影响,如果有显著误差的存在,... -
剔除粗大误差
2021-04-18 10:45:52一、拉依达法当试验次数较多时,可简单地用3倍标准偏差(3S)作为确定可疑数据取舍的标准。当某一测量数据(xi)与其测量结果的算术平均值(x-‘)之差大于3倍标准偏差时,用公式表示为:?xi -x-‘?>3S则该测量数据应... -
浮点数数据误差eps处理(详细解析)
2018-07-28 20:59:41double的精度足够日常使用,但是浮点数在计算机内部存储的时候存在的误差值是不可避免的,比如说数字5在计算机中存储的数据根据运算方式的不同,结果可能是4.99999999998,也可能是5.0000000001,这在我们需要对... -
SVM解释:四、线性不可分的情况
2018-07-23 08:41:42但是我已经强调过多次,线性可分的情况有相当的局限,所以SVM的终极目标还是要解决数据线性不可分的情况。解决这种线性不可分的情况基本的思路有两种: 加入松弛变量和惩罚因子,找到“最好”超平面,这里的... -
误差及数理统计基础
2018-06-26 08:34:50误差是在取得试验数据中不可避免的,在统计数据中如何处理和描述 -
SCADA系统中遥测误差的检测计算 (2011年)
2021-05-21 10:03:16介绍了数据采集与监视控制系统中遥测误差产生...运用TSQL语言中的查询指令对数据库中凌晨3时至4时的数据进行查询运算,可有效避免电容器组带来的误差影响,准确判断出遥测数据中的不正常信息,且计算速度快、工作量小. -
《算法和数据结构》学习路线指引
2021-07-01 11:16:15本文已收录于专栏 《画解数据结构》 饭不食,水不饮,题必须刷 C语言免费动漫教程,和我一起打卡! 《光天化日学C语言》 LeetCode 太难?先看简单题! 《C语言入门100例》 数据结构难?不存在的! 《画解数据结构》 ... -
数据资料与拟合模型.pptx
2020-10-12 00:12:513.2 数据资料与拟合模型一. 数据资料与数学模型数据资料数据资料 是在实际问题中收集到的观测数值 是... 系统误差偏差来自于系统有规律可避免 随机误差无偏来自随机因素无规律不可免2. 资料与模型 10. 数据资料可以直接 -
你真的分得清系统误差、随机误差和偶然误差吗?(含例题)
2021-11-22 15:40:23数值优化:多图辨析总结误差理论 误差类型、合成、传递、例题1 误差理论的基本概念2 误差的类型2.1 随机误差2.2 系统误差2.3 粗大误差(野差)3 误差的合成4 误差的传递5 误差理论例题 1 误差理论的基本概念 序号 ... -
1.数值算法、误差及误差传播规律
2020-06-23 23:16:45这中间有些问题是可以求出确切解的,但是有些问题是不容易或者根本无法求出确切的解的。数值计算可以用来解决这些数学问题。 我们通常使用下列四个标准来衡量数值算法的优劣: 简单易实现:算法容易在计算机上面... -
计算方法的稳定性 | 误差来源之舍入误差 | 数值计算基本原则
2020-05-20 00:03:18在实际数值计算过程中,由于不可避免地存在和不断产生各种误差,因此计算结果不是绝对精确的。如果误差使得计算结果和实际情况有较大差别或者出现错误的结果,则数值 计算便失去了价值和意义。因此,分析数值计算... -
时间序列预测最大预测误差_预测误差的措施可以通过实验了解它们
2020-10-10 02:52:08时间序列预测最大预测误差入门(Getting Started) Measurement is the first step that leads to control and eventually improvement.测量是导致控制并最终改善的第一步。 H. James Harrington 詹姆斯·哈灵顿 In ... -
数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
2022-01-24 14:37:42目录 数据清理 数据集成 数据规约 数据的变换 1、Min-Max 规范化 [0,1]规划 ...本来这些储备知识,我想在后续的...我们一般看到的数据都是较为干净的数据,也就是结构化的数据,但是有时候在日志信息中,需要我们. -
❤️ 爆肝三万字《数据仓库体系》轻松拿下字节offer ❤️【建议收藏】
2021-09-11 16:18:20尤其适合大学生 和 初级程序员掌握的体系内容,资深程序员也可夯实基础 -
3.2.3 如何解决数据不匹配问题
2018-05-05 15:03:34但有时候我们难以收集到足够的数据,可能一些其他数据要从其他办法来获得,这样就会容易出现不同数据的分布不同的情况。那么我们应该怎么办呢? 假设你在开发一个手机应用,用户会上传他们用手机拍摄的照片,你想... -
【经典永不过时】数据分析网红级别的项目案例分享【超详细】
2021-11-28 16:37:15本周给大家分享的数据分析案例是泰坦尼克号幸存者预测的项目,没记错的话,这应该是很多朋友写在简历上的项目经历。如果你目前正在找工作,自身缺少项目经历并且想要充实项目经历的话,可以考虑一下这个项目!... -
数据分析之数据预处理、分析建模、可视化
2020-08-08 15:03:21数据预处理:数据清洗、数据集成、数据规约、数据变换; 数据分析模型:对比分析、漏斗分析、留存分析、A/B测试、用户行为路径分析、用户分群、用户画像分析等; 数据分析方法:描述统计、假设检验、信度分析、相关... -
【机器学习基础】误差分析
2020-03-18 23:19:08误差是用于衡量模型预测与真实结果的度量,其给出了预测输出与样本真实输出之间的差异。因此,**误差分析**也是机器学习中不可避免的一环。本文将详细讲述误差分析的过程以及模型过拟合、欠拟合等的原理。 -
四、GNSS测量误差来源及其影响
2020-12-22 21:09:30目录4.1总体分析和与卫星有关的误差01总体分析02与卫星有关的误差1)卫星星历误差2) 卫星钟误差3) 相对论效应与地球自转影响4.2与信号传播有关的误差01电离层折射误差02对流层折射误差03多路径效应误差4.3与接收机... -
过拟合与数据不平衡
2017-10-04 17:55:24过拟合与数据不平衡 什么是过拟合? 过拟合就是学习器对训练样本数据的学习的过于彻底,将一些训练样本的噪声或者不属于全体样本的一般特征也学习了,造成在训练样本上效果表现很好而在测试样本上表现效果非常... -
数值计算中的误差
2020-12-01 22:20:36在科学计算中误差不可避免,用数学方法解决实际问题时,通常按照以下过程进行,实际问题(抽象简化)——>数学模型(数值计算)——>问题近似解。 3、误差的类型: 模型误差——实际问题的解与数学模型的解之差; ... -
机器学习:算法中的泛化误差、偏差、方差、噪声的理解(超详细)
2020-08-04 19:58:54摘要:在现实任务中,我们...以前在机器学习中一直使用经验风险(训练误差)来逼近真实风险,但事实上多数情况经验风险并不能够准确逼近真实风险。后来业界就提出了泛化误差的概念(generalization error),在机器学习.