1. 机器学习中的损失函数
机器学习中的损失函数
损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:
其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的值。下面主要列出几种常见的损失函数。
一、log对数损失函数(逻辑回归)
有些人可能觉得逻辑回归的损失函数就是平方损失,其实并不是。平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到,而逻辑回归得到的并不是平方损失。在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等等。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即max F(y, f(x)) —-> min -F(y, f(x)))。从损失函数的视角来看,它就成了log损失函数了。
log损失函数的标准形式:
L(Y,P(Y|X))=?logP(Y|X)L(Y,P(Y|X))=?log?P(Y|X)刚刚说到,取对数是为了方便计算极大似然估计,因为在MLE中,直接求导比较困难,所以通常都是先取对数再求导找极值点。损失函数L(Y, P(Y|X))表达的是样本X在分类Y的情况下,使概率P(Y|X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。因为log函数是单调递增的,所以logP(Y|X)也会达到最大值,因此在前面加上负号之后,最大化P(Y|X)就等价于最小化虚链L了。
逻辑回归的P(Y=y|x)表达式如下:P(Y=y|x)=11+exp(?yf(x))P(Y=y|x)=11+exp(?yf(x))
将它带入到上式,通过推导可以得到logistic的损失函数表达式,如下:
L(y,P(Y=y|x))=log(1+exp(?yf(x)))L(y,P(Y=y|x))=log?(1+exp(?yf(x)))
逻辑回归最后得到的目标式子如下:
如果是二分类的话模誉仿,则m值等于2,如果是多分类,m就是相应的类别总个数。这里需要解释一下:之所以有人认为逻辑回归是平方损失,是因为在使用梯度旦纤下降来求最优解的时候,它的迭代式子与平方损失求导后的式子非常相似,从而给人一种直观上的错觉。
这里有个pdf可以参考一下:Lecture 6: logistic regression.pdf.
二、平方损失函数(最小二乘法, Ordinary Least Squares )
最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(为什么假设成高斯分布呢?其实这里隐藏了一个小知识点,就是中心极限定理,可以参考【central limit theorem】),最后通过极大似然估计(MLE)可以推导出最小二乘式子。最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。换言之,OLS是基于距离的,而这个距离就是我们用的最多的欧几里得距离。为什么它会选择使用欧式距离作为误差度量呢(即Mean squared error, MSE),主要有以下几个原因:
简单,计算方便;
欧氏距离是一种很好的相似性度量标准;
在不同的表示域变换后特征性质不变。
平方损失(Square loss)的标准形式如下:
(Y,f(X))=(Y?f(X))2L(Y,f(X))=(Y?f(X))2
当样本个数为n时,此时的损失函数变为:
Y-f(X)表示的是残差,整个式子表示的是残差的平方和,而我们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和(resial sum of squares,RSS)。
而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,公式如下:
MSE=1n∑i=1n(Yi~?Yi)2MSE=1n∑i=1n(Yi~?Yi)2
上面提到了线性回归,这里额外补充一句,我们通常说的线性有两种情况,一种是因变量y是自变量x的线性函数,一种是因变量y是参数的线性函数。在机器学习中,通常指的都是后一种情况。
三、指数损失函数(Adaboost)
学过Adaboost算法的人都知道,它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。在Adaboost中,经过m此迭代之后,可以得到:
Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数 和G:
而指数损失函数(exp-loss)的标准形式如下
可以看出,Adaboost的目标式子就是指数损失,在给定n个样本的情况下,Adaboost的损失函数为:
关于Adaboost的推导,可以参考Wikipedia:AdaBoost或者《统计学习方法》P145.
四、Hinge损失函数(SVM)
在机器学习算法中,hinge损失函数和SVM是息息相关的。在线性支持向量机中,最优化问题可以等价于下列式子:
下面来对式子做个变形,令:
于是,原式就变成了:
如若取,式子就可以表示成:
可以看出,该式子与下式非常相似:
前半部分中的就是hinge损失函数,而后面相当于L2正则项。
Hinge 损失函数的标准形式
可以看出,当|y|>=1时,L(y)=0。
更多内容,参考Hinge-loss。
补充一下:在libsvm中一共有4中核函数可以选择,对应的是-t参数分别是:
0-线性核;
1-多项式核;
2-RBF核;
3-sigmoid核。
五、其它损失函数
除了以上这几种损失函数,常用的还有:
0-1损失函数
绝对值损失函数
下面来看看几种损失函数的可视化图像,对着图看看横坐标,看看纵坐标,再看看每条线都表示什么损失函数,多看几次好好消化消化。
OK,暂时先写到这里,休息下。最后,需要记住的是:参数越多,模型越复杂,而越复杂的模型越容易过拟合。过拟合就是说模型在训练数据上的效果远远好于在测试集上的性能。此时可以考虑正则化,通过设置正则项前面的hyper parameter,来权衡损失函数和正则项,减小参数规模,达到模型简化的目的,从而使模型具有更好的泛化能力。
2. 二维网格数值插值技术
大部分油气藏的数据是散乱分布的,因此称为散乱数据。散乱数据指的是在二维平面上或三维空间中,无规则的、随机分布的数据。利用散乱数据建模就要对散乱数据进行插值或拟合。
设在二维平面上有n个点 (xi,yi) (i =1,…,n),并有Zi =f(xi,yi)。插值问题就是要构造一个连续的函数F (x,y),使其在 (xk,yk) (后=1,…,n) 点的函数值为Zk,即Zk =f(xk,yk) (k=1 ,…,n)。
早在20世纪60年代,散乱数据的插值问题就已引起人们的注意。近50年来,已经有多种算法被提了出来。但是,由于应用问题千差万别,数据量大小不同,对连续性的要求也不同等等,没有一种算法适用于所有的场合。而且大多数算法只能适用于具有中、小规模数据量的散乱点插值问题。大规模散乱数据 (例如,10000个点以上) 的插值问题还正在研究之中。
据散乱数据的复杂程度,其可分为单自变量、双自变量及多自变量3种类型。下面将主要讨论双自变量散乱数据的插值问题。
(一) 插值的一般概念
插值的概念最早可追溯到 “控制论之父” 诺伯特·维纳的不朽着作 《平稳时间序列的外推、插值和光滑及其工程应用》 (Wiener,1949)。随着计算机技术的发展,插值的概念已广泛地应用于数据处理、自动控制、数值分析、地球物理及数学地质等领域。
1. 插值方法
计算机插值方法一般可分为两大类:拟合函数方法和加权平均方法。它们的原理都是来自手工方法。Crain (1970) 把这两种方法得到的曲面分别称为数学曲面和数值曲面。Alfeld & Barnhill (1984) 分别称它们为分片方法和点方法,而Cuyt (1987) 则把这两种方法分别称为系数问题和数值问题。
利用拟合函数方法进行插值,就是利用二元多项式来表示一个插值曲面,插值问题化为确定这个二元多项式的系数的问题。一般来说,往往可通过求解一个线性代数方程组来获取这些系数。这个方程组的系数可由观测数据来确定,它们代表了观测数据的影响,而其方程的次数则表示了控制多项式拟合程度。方程次数越高,拟合的程度就越高。当这个多项式的系数确定以后,将空间某一点处的坐标代入该多项式,即可求得该点处的值。
这个方法的特点是可以制服畸变的原始数据或带有噪声的原始数据。所以,用一个函数进行拟合是一个光滑的过程,一些局部的细节可能消失。所得的插值曲面的复杂程度取决于多项式的次数,即所求解的线性方程的数目。
加权平均插值方法把求插值的问题化为求取观测数据的加权平均。每个观测数据点对应的加权系数恰恰反映了该数据点对插值点的影响大小。为了求取一个插值,必须要计算出一组加权系数。
加权平均方法的一个主要优点是,可以获取在观测数据点附近变量的小尺度趋势。而利用一个适当次数的多项式是无法获取曲面的这种局部细节的。
从原则上讲,这两种方法的差别就在于:加权平均方法强调了曲面的局部细节,而拟合函数方法则概括了曲面的整体性质。从计算时间上看,前者花费的时间比后者要多得多。
2. 插值效果评判
从理论上讲,一个插值方法的效果如何应通过插值结果和客观存在的原始曲面的比较,按以下3条标准来进行判断:
(1) 原始曲面和插值结果之间差异的最大值为最小。
(2) 原始曲面和插值结果之差的平方和为最小。
(3) 在每个观测数据点处,插值结果本身的数值及其1阶到k阶导数和原始曲面的相等。
由于原始曲面本身是未知的,所以在以上3个标准中,第一个和第二个标准是无法检验的,仅有第三个标准是在一定的模型假设之下可以进行检验。在一些实际应用中,当原始曲面可用解析函数来表达时,仅利用第三个标准来检验插值的效果也是可行的。然而,在地质建模中,观测数据点往往不够多,且还有一定的观测误差,不可能断定原始曲面是否可用解析函数表达。这时,插值技术的合理性必须从直观的几何和人们的经验等方面进行评价。
利用计算机进行插值所遇到的困难,主要来自观测数据点数目不足和观测误差。如果观测数据充分多且精确,那么几乎所有的插值方法都会给出良好的效果。另一方面,对于圆形或狭长的隆起,凹陷和鞍点等变量的空间变化几何特征,在数据点分布较稀的情况下,用任何插值方法都是难以推断出它们的存在的。所以,插值方法需要考虑曲面的局部斜率的影响。
下面主要介绍加权平均方法和拟合函数方法中最常用的插值算法。这些算法能解决大部分油气藏建模问题。
(二) 与距离成反比的加权法
距离成反比加权插值方法是基于如下的模型:每个数据点都有局部影响,这个影响随着数据点和插值点距离的增加而减弱,且在一定的范围以外,可以忽略不计;这个影响是以该数据点为中心;而在任一点处的插值恰是各数据点影响之和。
1. 与距离成反比加权插值公式
这一方法首先是由气象学及地质学工作者提出来的,后来由于D. Shepard的工作被称为Shepard方法。其基本思想是将插值函数F (x,y)定义为各数据点函数值f i的加权平均,即:
油气田开发地质学
在 (xk,yk) 点处函数值可写成:
油气田开发地质学
式中: 表示由第i个(xi,yi)点到插值点(xk,yk)的距离;Wi(xk,yk)——权函数;μ——功率因素,通过改变值来调整权函数与距离的关系,与距离成反比加权和与距离成平方反比加权分别是μ=1和μ=2时的特殊情形。
与距离成反比加权插值方法是最早使用的计算机插值方法,至今仍被广泛地应用着。在大多数商业性的等值线图绘制软件包中被用来形成网格化数据。这种方法较为直观:一个数据点对于插值点的影响模型化为与这两点之间的距离成反比。
2. 与距离成反比加权插值改进
距离成反比加权算法中的功率因素μ应该取为μ≥0,否则表明距离越远的点作用越突出,这违背了普通常识。考虑以下最极端的情况是:
油气田开发地质学
假设有n个数据点,一个插值点 (xk,yk) 位于第i个数据点附近,相应的权函数可写成:
油气田开发地质学
式中:dj (xk,yk),di (xk,yk)——插值点 (xk,yk)到各数据点的距离。
当插值点 (xk,yk) 和第i个数据点很靠近时,可以认为其他数据点对WD的影响是一个常数,即C为常数。当该插值点和第i个数据点的距离趋于零时,对于不同的μ,WD会有不同的性质。首先看WD对D的导数,有:
油气田开发地质学
然后再有:
油气田开发地质学
可见,当μ=1时,随着D趋于0,W′D近似为不随D变化的常数,这可用图6-8中左端的图形来表示。
当μ>1时,随着D趋于零,W′D趋于零。这说明在该数据点附近,加权系数的变化为零,即可用图6-8中间的图形来表示。
当μ<1时,随着D趋于零,W′D趋于无穷大。这说明加权系数在该数据点附近还有一个尖点,如图6-8右端的图形所示。
图6-8 与距离反比加权的权数随参数μ的变化
(1)功率因素μ越小时,近距离点和远距离点的作用越接近,生成的平面网格数据越平滑。随着μ增大,平面网格数据的光滑性越差。同时,μ直接影响网格数据的极值和均值,μ越小网格数据的均值越接近原始数据的均值,但极值相差越大。因此,当要求插值结果尽可能接近原始数据的均值时,功率因素不能选择过大。例如对于开发早期的油气藏,因为仅有少数探井控制,此时网格化得到的各类物性参数应该在总体上符合井点的统计结果,均值是比极值更有价值的参数,因而通常将功率因素取为1。相反,μ取值越大,网格数据越能恢复原始数据的极值,但也容易使均值误差增大。原因是当μ取较大的值时,近距离点的作用越突出,原始数据点分布的不均匀性使得部分点在网格节点上发挥了更大的作用,而另外一些点的作用则受到屏蔽。因此,当要求突出数据的局部特征,体现储层的非均质性特征时,功率因素应选择得大些,一般取为2。
(2) 利用与距离成反比加权法进行插值时,当增加、删除或改变一个点时,权函数Wi (xk,yk) 均需重新计算,因而该方法是一个全局插值算法。
为了克服Shepard方法的上述缺陷,Franke及Nielson提出了MQS (Modified QuadraticShepard) 方法,它仍然是一个与距离成反比的加权方法。对它的改进如下:
插值点 (xk,yk) 到已知数据点的距离di作适当修改,使其只能在局部范围内起作用,以改变Shepard方法的全局插值性质。这时重新定义距离函数:
油气田开发地质学
式中:rw为一个常数。而
油气田开发地质学
因此,当 (xk,yk) 点与某一点的距离大于rw时,权值就为零。
(3) 与距离成反比加权法的权函数Wi(xk,yk)始终满足Wi(xk,yk)≤1/n,因此插值结果不会大于或小于原始数据的最大值、最小值。当已知数据点过少时 (这种情况在早期地质研究中是最为常见),使用具有外推能力的曲面样条或趋势面分析,得到的结果往往背离实际。其原因是这两种方法在远点不具有控制能力,它将沿趋势无限发展下去。特别是在仅有少数井资料可用的情况下,与距离成反比加权法应是优先选择的方法。
但是,隐含在原始数据中的尖峰会被淹没而无法显示出来。因为距离成反比加权进行插值时,每个数据点所发挥的作用基本上是中心对称的,因此对山脊和山谷等非各向同性的几何形状的显示不利。为了克服这种状况,需要考虑变量的局部变化趋势,为此需要对梯度进行估计。
当已知数据点用与距离成反比加权方法形成数据插值曲面时,该曲面被称数据曲面。与距离成反比加权方法也可用于各个数据点处的切平面,把任一点处的插值值取成各切平面在该点处取值的一个加权平均,所形成的曲面称为与距离成反比加权梯度插值曲面,简称梯度曲面。如果在数据点以外的一个点是变量的局部高点,那么梯度曲面在该点的值容易大于变量的真实值,即呈现 “过估计” 的状态。如果数据曲面在该点的值小于变量的真实值,则呈现 “欠估计” 的状态。因此,数据曲面可以通过和梯度曲面的相互结合来克服本身的缺陷。
可以用数据曲面和梯度曲面之差乘以一个系数作为一个修正量,对数据曲面进行修正,这样,可以用下述的曲面来代替单纯的数据曲面:
油气田开发地质学
式中:L (x,y) ——距离反比加权插值;Wi——和第i个数据点的距离反比加权系数;τi——曲面在该点处的粗糙度指数;Si(x,y)——第i个数据点 (xi,yi) 处的切平面在点(x,y) 处的值;H(Wi,τi)——混合函数。
如此得到的曲面称为混合曲面。它通过所有的数据点,具有连续的坡度,其变化在空间的分布更均匀。数据曲面和梯度曲面是混合曲面的两种极端情况。由于数据曲面和梯度曲面之差在各数据点处为零,还因为混合函数的变化范围为0~1,且当混合函数等于0或1时,其一阶导数为零,故混合曲面和梯度曲面相切于各数据点处,且其高阶导数在各数据点处亦为零。
(4) 与距离成反比加权法仅考虑了插值点与数据点之间距离的影响,没有考虑到各数据点之间的关系,物性参数分布的趋势性没有得到充分的体现。为此,Franke及Nielson进行了改进。
用节点函数Qi (x,y) 代替fi,Qi (x,y) 是一个插值于 (xi,yi) 点的二次多项式,即有Qi (xi,yi) =f,i=1,…,n。Qi可由下式表示:
Qi(x,y)=fi+a1(x-xi)+a2(y-yi)+a3(x-xi)2+a4(x-xi)(y-yi)+a5(y-yi)2
式中:a1,a2,…,a5是按下式最小二乘法得出的优化解:
油气田开发地质学
式中:fi,fj分别为 (xi,yi)和 (xj,yj)点的函数值,而ρj可按下式选取:
油气田开发地质学
其中rq为一常数,而
油气田开发地质学
求出Qi (x,y) 后,插值函数可表示为:
油气田开发地质学
上述方法消除了Shepard方法中的一些缺陷,因而在散乱点插值中得到广泛的应用。但是,为了求得Qi (x,y) (i=1,…,n),需要多次求解线性方程组,计算量大,因此,一般只用于中、小规模散乱点的插值运算。
(三) 多项式趋势面法
由计算机产生的曲面一般不会总是和原始的观测数据一致。如果两者的差别在给定的尺度之下不是很明显,那么产生的曲面可被认为是插值曲面,否则就被认为是近似曲面。如果观测数据含有明显的观测误差,近似曲面就显得更合理。这时,和插值曲面相比,近似曲面由于数据的各种误差所产生的扰动不太容易看得清,但是近似曲面空间变化的一些主要性质还是能清晰地被体现出来的。
近似曲面和每个数据点之间的差称为残差,可视为每一个数据点上的一种误差表示。然而,计算出来的这种残差是意味着对未知的观测误差的一种度量,还是意味着一种允许的插值误差,或者意味两者都是,这要依变量的空间性质和观测数据的获取方法而定。
确定近似曲面的方法可分为3种。第一种方法是以残余的平方和最小为条件,确定多项式的系数,以获取曲面。第二种方法是利用观测数据误差的附加信息,并满足最小曲率的原则以确定曲面。最后一种方法是利用观测误差和插值误差的附加信息,以满足最小平方差或最小曲率为条件确定曲面。以下主要讨论多项式构造趋势面法。
多项式构造趋势面是目前最常用的方法,一次多项式表示的趋势面是空间的一个平面,二次趋势面是抛物面,椭球面或双曲面,三次及三次以上的趋势面是形态复杂的空间曲面,随着趋势面的次数增高,曲面的形态就越复杂。
如果有一组总共n个观测数据,其观测点的平面坐标为 (xi,yi),地质变量的观测值为fi(xi,yi)。对于这组观测数据的多项式趋势面方程表示成如下形式:
油气田开发地质学
式中: ——第i个观测点的趋势值;a1,a2,…,a5——待定系数,它们的个数m与所选用趋势面方程的多项式次数n存在下列关系式:
m=[n(n+3)+2]/2
为使趋势面最大限度地逼近原始观测数据,可采用最小二乘法使每个观测点的观测值与趋势值之差 (残差) 的平方和最小,即:
油气田开发地质学
得到需求解的m阶正规方程组。当系数矩阵满秩时,趋势面方程也就被唯一确定了。
由于趋势面分析不具有过点性,使得局部井点上误差可能很大。同时参数场在三维空间中的分布过于复杂,无论从理论上还是实验中都无法确证某类参数场能较好地符合某确定次数的曲面,多项式次数过高,会导致趋势面发生频繁振动,多项式次数过低,得到的趋势面又过于光滑,丧失许多细节。再者,趋势面方程在外推过程中容易使参数场发生畸变,产生无意义的结果。因而现代地质建模研究中已经很少将趋势面分析单独作为插值方法使用。但对于下列两种情况趋势面分析仍然能达到较为理想的效果,一是对小范围内具有显着趋势性分布的数据点;二是数据点分布过于密集,而且可能存在若干异常数据点时,趋势面分析会自动削弱异常数据点的影响。为提高趋势面分析的精度,可采用残差来校正趋势面分析的结果。具体过程如下:
(1) 由趋势面分析得到任一网格节点 (xk,yk)处的趋势值
油气田开发地质学
(2)计算n个已知点 (xi,yi)处的残差△fi(xi,yi)=fi(xi,yi)
油气田开发地质学
(3) 调用某种插值方法将残差分配到每个网格节点上,对网格节点 (xk,yk) 有△fk(xk,yk);
(4) 网格节点 (xk,yk)经校正后的最终结果为
油气田开发地质学
yk)。特别地,如果残差分配的插值算法也是趋势面分析,就形成所谓的多级趋势面分析。此时,网格节点上的值是多次趋势面分析的结果,多级趋势面分析在不断减少观测点插值误差的同时,整张参数场曲面仍然保持其连续性和光滑性,原因是该算法同样符合线性迭加原理。
(四) 径向基函数插值法
径向基函数的名字来源于这样一种情况,即基函数是由单个变量的函数构成的。一个点 (x,y) 的这种基函数的形式往往是hk(x,y)=h(dk),这里的dk表示由点 (x,y) 至第k个数据点的距离。一般说来,这种方法不具有多项式精度,但只要稍加改进,即可获得具有多项式精度的插值公式:
油气田开发地质学
式中:qk(x,y)是一个多项式基,其阶次小于m。
上式中的系数ak和bk应满足下面的联立方程组:
油气田开发地质学
油气田开发地质学
第一式中的n个方程式满足了插值要求,而第二式中的m个方程式则保证了多项式精度。两式中共有m+n个未知数,同时存在m+n个方程式,联立求解,即可得出待定系数。
下面,介绍两种主要的径向基函数插值法。
1. Multiquadric方法
Multiquadric方法是由R. L. Hardy在1971年提出来的。它是最早被提出并且应用得最为成功的一种径向基函数插值法。它采用的插值函数,即 (x,y)处的值F (x,y):
油气田开发地质学
式中: 为基函数;ei——非负常数;ai——加权系数,满足如下方程组:
MVa=Vz
式中:Va=(a1,a2,…,an)T,Vz=[f(x1,y1),f(x2,y2),…,f(xn,yn)]T,f(xi,yi)是(xi,yi)处的数据点的值。
油气田开发地质学
由于M和Vz都不依赖于插值点的坐标 (x,y),所以ai也不依赖于 (x,y)。然而,基函数C(X-Xi)则是以Xi为参数的 (x,y)的函数。所以说,插值曲面F(x,y)是n个基函数C(X-Xi)所构成的n个空间曲面配置而成的。
Arther提出了如下形式的基函数:C(d)=1-d2/e2,其中d是数据点到插值点之间距离,而e则是一个常数。显然,基函数C(d)是d的一个衰减函数。当d=0时,C(d)取得最大值1,而当d≤e时,有0≤C(d)≤1。这时,基函数呈现为椭圆抛物面,而加权系数ai(i=1,2,…,n)所满足的线性代数方程组的矩阵M应作相应的改动,其对角线元素应改成1。Hardy(1971)引入如下的基函数:C(d)=(d2+e2)1/2,该基函数呈现为椭圆双曲面。Hardy还建议将e2取成0.815乘以数据点间距离的平均值。
2. 薄板样条法
样条 (Spline)本来是绘图员用来绘制光滑曲线的工具,是一种用木材或金属等弹性材料做成的细条。在绘图时,沿着通过图纸各已知点的样条,便可绘出一条光滑曲线。数学上所说的样条 (多项式样条) 实质上是分段多项式曲线的光滑连接。当函数为分段的m次多项式,在分段点上有直至m-1阶连续导数,那么该函数则称为m次样条函数,简称为样条。一般来说,研究和应用得比较多的是三次样条。零次和一次样条函数分别是台阶状函数和折线状函数。以上所述的是关于一维样条函数,对于二维样条函数也可作为类似的考虑。
样条函数的主要功能是进行插值,其主要优点在于,能在插值多项式的次数尽可能低的条件下,使插值曲线或插值曲面取得较高的光滑度,且只需要利用函数本身的值,而不需要提供函数的各阶导数的值。
三次样条曲面包含有三种不同的类型:双三次样条、伪三次样条及薄片样条。这些样条曲面以m和s为其两个参数,使得希氏空间Hs中元素的m阶导数的范数所构成的一个泛函达到最小。此外,这个泛函具有旋转不变性。
对于薄片样条曲面,m=2,s=0。这一方法是由R.L. Harder及R. N. Desmarais在1972年提出来的,后来由J. Duchon及J. Meinguet等人予以发展。薄板样条法得名于如下事实,即用此方法求出的散乱点的插值函数使下面这一泛函表达式具有最小值:
油气田开发地质学
在这里,I(F)表示受限于插值点的无限弹性薄板的弯曲能量。因此,这一方法的实质从力学观点看是使插值函数所代表的弹性薄板受限于插值点,并且具有最小的弯曲能量。这是一个泛函求极值的问题。这一变分问题的解即为我们所需要的插值函数,具有径向基函数插值法的一般形式。
R.L. Harder及R. N. Desmarais提出解析形式如下:
油气田开发地质学
且有 其中t(x,y)和ti(xi,yi)是二维空间中的点,而fi是ti处的观测值。还有,K(ti,t) 这里,ri代表点t和ti之间的距离,
由解析表达式及其约束条件,可给出用以确定系数的线性代数方程组:
油气田开发地质学
其中,K=[kij]n×n,kij=K(ti,tj),kii=0,FT[f1,f2,…,fn],αT=[b,a1,a2],AT[λ1,λ2,…,λn],且有:
油气田开发地质学
求解上述n+3阶方程组则得到待定系数b,a1,a2,λi,然后可插值出平面任一位置的函数值F(x,y)。
上述方程与Enriguez等人给出的方程相类似,其微小的差异就是基函数中的自然对数(In) 变成了常用对数 (lg)。
在构造薄片样条曲面的过程中,Franke (1982)提出了以r2lgr作为基函数,Sandwell(1987)则提出了以双调和格林函数r2(lgr-1)作为基函数。另外,Ayeni (1979)也对不同的基函数进行了讨论。
使用平面上n个已知点进行曲面样条插值时,实质上是求解一个n+3阶线性方程组以确定n+3个系数。为了保证解的存在性和唯一性,系数矩阵应该是满秩的。对下列3种情况必须避免:
(1) 在给定的n个已知点中存在着距离过近的两点 (xi,yi) 与 (xj,yj) 极端的情形是同一个数据点的重复输入,此时系数矩阵的第i行与第j行对应各元素非常接近,导致线性方程组的系数矩阵是奇异的。因此在数据预处理过程中必须消除沉余数据。
(2) 给定的已知数据点过少,此时系数矩阵的后3行线性相关,矩阵是不满秩的。
(3) n个已知点数据分布在一条直线上,显然由这样的n个点不能唯一决定一张曲面,系数矩阵表现为不满秩。
针对情况 (1),通常在做曲面样条插值时,首先对数据进行预处理,通过给定一个适当的距离下限rmin来滤掉那些相距过近的点,研究发现rmin=(△x+△y)/8是一个较合理选择 (△x和△y分别表示x和y方向的步长)。情况 (2) 和 (3) 实际上意味着不能进行曲面样条插值,除非通过数据均整来改变数据分布状态。
曲面样条插值方法是一种严格的过点插值法,即由生成的样条曲面必定通过给定的n个已知数据点,这样井点数据的控制作用自然得到体现。同时,曲面样条方法充分考虑了数据间的相对位置,其插值精度很高,在外推过程中,总是沿数据点的分布趋势外推,因此曲面样条法是具有一定外推能力的插值方法。同时曲面样条方程得到的是一张连续光滑的曲面。
曲面样条插值方法特别适合于地层层面的生成和地层厚度的插值。如果从曲面样条法严格的过点性、良好的光滑性及外推性看,适用于那些光滑、趋势性明显、变化连续的储层物性参数诸如油气饱和度的插值。
曲面样条法插值的精度很大程度上取决于数据点分布的均匀程度,稀疏区域主要由邻近区域的外推得到,其插值结果可能偏差较大。同时,曲面样条法的严格过点性使得它不能分别对待不同精度点的数据,因此它不具备数据的校正能力。
3. 回归直线方程的计算方法
要确定回归直线方程①,只要确定a与回归系数b。回归直线的求法通常是最小二乘法:离差作为表示xi对应的回归直线纵坐标y与观察值yi的差,其几何意义可用点与其在回归直线竖直方向上的投影间的距离来描述。数学表达:Yi-y^=Yi-a-bXi.总离差不能用n个离差之和来表示,通常是用离差的平方和即(Yi-a-bXi)^2计算。即作为总离差,并使之达到最小,这样回归直线就是所有直线中除去最小值的那一条。这种使“离差平方和最小”的方法,叫做最小二乘法。用最小二乘法求回归直线方程中的a,b有图一和图二所示的公式进行参考。其中,
(3)广义极小残差法算法扩展阅读
回归直线方程指在一组具有相关关系的变量的数据(x与Y)间,一条最好地反映x与y之间的关系直线。
离差作为表示Xi对应的回归直线纵坐标y与观察值Yi的差,其几何意义可用点与其在回归直线竖直方向上的投影间的距离来描述。数学表达:Yi-y^=Yi-a-bXi.
总离差不能用n个离差之和来表示,通常是用离差的平方和,即(Yi-a-bXi)^2计算。
4. 《R语言实战》自学笔记71-主成分和因子分析
主成分分析
主成分分析((Principal Component Analysis,PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分(原来变量的线性组合)。整体思想就是化繁为简,抓住问题关键,也就是降维思想。
主成分分析法是通过恰当的数学变换,使新变量——主成分成为原变量的线性组合,并选取少数几个在变差总信息量中比例较大的主成分来分析事物的一种方法。主成分在变差信息量中的比例越大,它在综合评价中的作用就越大。
因子分析
探索性因子分析法(Exploratory Factor Analysis,EFA)是一系列用来发现一组变量的潜在结构的方法。它通过寻找一组更小的、潜在的或隐藏的结构来解释已观测到的、显式的变量间的关系。
PCA与EFA模型间的区别
参见图14-1。主成分(PC1和PC2)是观测变量(X1到X5)的线性组合。形成线性组合的权重都是通过最大化各主成分所解释的方差来获得,同时还要保证个主成分间不相关。相反,因子(F1和F2)被当做是观测变量的结构基础或“原因”,而不是它们的线性组合。
R的基础安装包提供了PCA和EFA的函数,分别为princomp()和factanal()。
最常见的分析步骤
(1)数据预处理。PCA和EFA都根据观测变量间的相关性来推导结果。用户可以输入原始数据矩阵或者相关系数矩阵到principal()和fa()函数中。若输入初始数据,相关系数矩阵将会被自动计算,在计算前请确保数据中没有缺失伍世拿值。
(2)选择因子模型。判断是PCA(数据降维)还是EFA(发现潜在结构)更符合你的研究目标。如果选择EFA方法,你还需要选择一种估计因子模型的方法(如最大似然估计)。
(3)判断要选择的主成分/因子数目。
(4)选择主成分/因子。
(5)旋转主成分/因子。
(6)解释结果。
(7)计算主成分或因子得分。
PCA的目标是用一组较少的不相关变量代替大量相关变量,同时尽可能保留初始变量的信息,这些推导所得的变量称为主成分,它们是观测变量的线性组合。如第一主成分为:
它是k个观测变量的加权组合,对初始变量集的方差解释性最大。第二主成分也是初始变量的线性组合,对方差的解释性排第二,同时与第一主成分正交(不相关)。后面每一个主成分都最大化它对方差的解释程度,同时与之前所有的主成分都正交。理论上来说,你可以选取与变量数相同的主成分,但从实用的角度来看,我们都希望能用较少的腔搭主成分来近似全变量集。
主成分与原始变量之间的关系
(1)主成分保留了原始变量绝大多数信息。
(2)主成分的个数大大少于原始变量的数目。
(3)各个主成分之间互不相关。
(4)每个主成分都是原始变量的线性组合。
数据集USJudgeRatings包含了律师对美国高等法院法官的评分。数据框包含43个返州观测,12个变量。
用来判断PCA中需要多少个主成分的准则:
根据先验经验和理论知识判断主成分数;
根据要解释变量方差的积累值的阈值来判断需要的主成分数;
通过检查变量间k × k的相关系数矩阵来判断保留的主成分数。
最常见的是基于特征值的方法。每个主成分都与相关系数矩阵的特征值相关联,第一主成分与最大的特征值相关联,第二主成分与第二大的特征值相关联,依此类推。
Kaiser-Harris准则建议保留特征值大于1的主成分,特征值小于1的成分所解释的方差比包含在单个变量中的方差更少。Cattell碎石检验则绘制了特征值与主成分数的图形。这类图形可以清晰地展示图形弯曲状况,在图形变化最大处之上的主成分都可保留。最后,你还可以进行模拟,依据与初始矩阵相同大小的随机数据矩阵来判断要提取的特征值。若基于真实数据的某个特征值大于一组随机数据矩阵相应的平均特征值,那么该主成分可以保留。该方法称作平行分析。
图形解读:线段和x符号组成的图(蓝色线):特征值曲线;
红色虚线:根据100个随机数据矩阵推导出来的平均特征值曲线;
绿色实线:特征值准则线(即:y=1的水平线)
判别标准:特征值大于平均特征值,且大于y=1的特征值准则线,被认为是可保留的主成分。根据判别标准,保留1个主成分即可。
fa.parallel函数学习
fa.parallel(data,n.obs=,fa=”pc”/”both”,n.iter=100,show.legend=T/F)
data:原始数据数据框;
n.obs:当data是相关系数矩阵时,给出原始数据(非原始变量)个数,data是原始数据矩阵时忽略此参数;
fa:“pc”为仅计算主成分,“fa”为因子分析,“both”为计算主成分及因子;
n.iter:模拟平行分析次数;
show.legend:显示图例。
principal(r, nfactors = , rotate = , scores = )
r:相关系数矩阵或原始数据矩阵;
nfactors:设定主成分数(默认为1);
rotate:指定旋转的方法,默认最大方差旋转(varimax)。
scores:设定是否需要计算主成分得分(默认不需要)。
PC1栏包含了成分载荷,指观测变量与主成分的相关系数。如果提取不止一个主成分,那么还将会有PC2、PC3等栏。成分载荷(component loadings)可用来解释主成分的含义,解释主成分与各变量的相关程度。
h2栏为成分公因子方差,即主成分对每个变量的方差解释度。
u2栏为成分唯一性,即方差无法被主成分解释的部分(1-h2)。
SS loadings包含了与主成分相关联的特征值,其含义是与特定主成分相关联的标准化后的方差值,即可以通过它来看90%的方差可以被多少个成分解释,从而选出主成分(即可使用nfactors=原始变量个数来把所有特征值查出,当然也可以直接通过eigen函数对它的相关矩阵进行查特征值)。
Proportion Var表示每个主成分对整个数据集的解释程度。
Cumulative Var表示各主成分解释程度之和。
Proportion Explained及Cumulative Proportion分别为按现有总解释方差百分比划分主成分及其累积百分比。
结果解读:第一主成分(PC1)与每个变量都高度相关,也就是说,它是一个可用来进行一般性评价的维度。ORAL变量99.1%的方差都可以被PC1来解释,仅仅有0.91%的方差不能被PC1解释。第一主成分解释了11个变量92%的方差。
结果解读:通过碎石图可以判定选择的主成分个数为2个。
结果解读:从结果Proportion Var: 0.58和0.22可以判定,第一主成分解释了身体测量指标58%的方差,而第二主成分解释了22%,两者总共解释了81%的方差。对于高度变量,两者则共解释了其88%的方差。
旋转是一系列将成分载荷阵变得更容易解释的数学方法,它们尽可能地对成分去噪。旋转方法有两种:使选择的成分保持不相关(正交旋转),和让它们变得相关(斜交旋转)。旋转方法也会依据去噪定义的不同而不同。最流行的正交旋转是方差极大旋转,它试图对载荷阵的列进行去噪,使得每个成分只是由一组有限的变量来解释(即载荷阵每列只有少数几个很大的载荷,其他都是很小的载荷)。 结果列表中列的名字都从PC变成了RC,以表示成分被旋转。
当scores = TRUE时,主成分得分存储在principal()函数返回对象的scores元素中。
如果你的目标是寻求可解释观测变量的潜在隐含变量,可使用因子分析。
EFA的目标是通过发掘隐藏在数据下的一组较少的、更为基本的无法观测的变量,来解释一
组可观测变量的相关性。这些虚拟的、无法观测的变量称作因子。(每个因子被认为可解释多个
观测变量间共有的方差,因此准确来说,它们应该称作公共因子。)
其中 是第i个可观测变量(i = 1…k), 是公共因子(j = 1…p),并且p<k。 是 变量独有的部分(无法被公共因子解释)。 可认为是每个因子对复合而成的可观测变量的贡献值。
碎石检验的前两个特征值(三角形)都在拐角处之上,并且大于基于100次模拟数据矩阵的特征值均值。对于EFA,Kaiser-Harris准则的特征值数大于0,而不是1。
结果解读:PCA结果建议提取一个或者两个成分,EFA建议提取两个因子。
fa(r, nfactors=, n.obs=, rotate=, scores=, fm=)
r是相关系数矩阵或者原始数据矩阵;
nfactors设定提取的因子数(默认为1);
n.obs是观测数(输入相关系数矩阵时需要填写);
rotate设定旋转的方法(默认互变异数最小法);
scores设定是否计算因子得分(默认不计算);
fm设定因子化方法(默认极小残差法)。
与PCA不同,提取公共因子的方法很多,包括最大似然法(ml)、主轴迭代法(pa)、加权最小二乘法(wls)、广义加权最小二乘法(gls)和最小残差法(minres)。统计学家青睐使用最大似然法,因为它有良好的统计性质。
结果解读:两个因子的Proportion Var分别为0.46和0.14,两个因子解释了六个心理学测试60%的方差。
结果解读:阅读和词汇在第一因子上载荷较大,画图、积木图案和迷宫在第二因子上载荷较大,非语言的普通智力测量在两个因子上载荷较为平均,这表明存在一个语言智力因子和一个非语言智力因子。
正交旋转和斜交旋转的不同之处。
对于正交旋转,因子分析的重点在于因子结构矩阵(变量与因子的相关系数),而对于斜交旋转,因子分析会考虑三个矩阵:因子结构矩阵、因子模式矩阵和因子关联矩阵。
因子模式矩阵即标准化的回归系数矩阵。它列出了因子预测变量的权重。因子关联矩阵即因子相关系数矩阵。
图形解读:词汇和阅读在第一个因子(PA1)上载荷较大,而积木图案、画图和迷宫在第二个因子(PA2)上载荷较大。普通智力测验在两个因子上较为平均。
与可精确计算的主成分得分不同,因子得分只是估计得到的。它的估计方法有多种,fa()函数使用的是回归方法。
R包含了其他许多对因子分析非常有用的软件包。FactoMineR包不仅提供了PCA和EFA方法,还包含潜变量模型。它有许多此处我们并没考虑的参数选项,比如数值型变量和类别型变量的使用方法。FAiR包使用遗传算法来估计因子分析模型,它增强了模型参数估计能力,能够处理不等式的约束条件,GPArotation包则提供了许多因子旋转方法。最后,还有nFactors包,它提供了用来判断因子数目的许多复杂方法。
主成分分析
1.数据导入
数据结构:对10株玉米进行了生物学性状考察,考察指标有株高,穗位,茎粗,穗长,秃顶,穗粗,穗行数,行粒数。
结果解读:选择2个主成分即可保留样本大量信息。
3.提取主成分
结果解读:主成分1可解释44%的方差,主成分2解释了26%的方差,合计解释了70%的方差。
4.获取主成分得分
5.主成分方程
PC1 = 0.27 株高 - 0.04 穗位 + 0.29 茎粗 - 0.01 穗长 - 0.21 秃顶 - 0.13 穗粗 + 0.16 穗行数 + 0.24 行粒数
PC2 = -0.01 株高 + 0.36 穗位 - 0.10 茎粗 + 0.41 穗长 - 0.08 秃顶 + 0.43 穗粗 - 0.15 穗行数 + 0.01 行粒数
图形解读:此图反映了变量与主成分的关系,三个蓝点对应的RC2值较高,点上的标号2,4,6对应变量名穗位,穗长,穗粗,说明第2主成分主要解释了这些变量,与这些变量相关性强;黑点分别对应株高,茎粗,穗行数,行粒数,说明第一主成分与这些变量相关性强,第一主成分主要解释的也是这些变量,而5号点秃顶对于两个主成分均没有显示好的相关性。
因子分析
图解:可以看到需要提取4个因子。
2.提取因子
结果解读:因子1到4解释了80%的方差。
3.获取因子得分
图解:可以看出,因子1和因子2的相关系数为0.4,行粒数,株高,茎粗,秃顶在因子1的载荷较大,穗长,穗位在因子2上的载荷较大;因子3只有穗行数相关,因子4只有穗粗相关。
参考资料: