zoukankan      html  css  js  c++  java
  • 最小二乘法的本质原理

    最小二乘法的本质原理

      转自:http://blog.sina.com.cn/s/blog_5e6614220101ks63.html

        本文主要以最简单的二元线性函数为基础,阐述最小二乘法的原理,事实上,最小二乘法可以更广泛地应用于非线性方程中,但本文以介绍为主,希望能以最简单的形式,使读者能够掌握最小二乘法的意义。

    在物理实验数据统计时,我们会记录一些数据,记做数据x和数据y。但是,在记录数据后,我们依然不知道x和y 的具体关系。例如,测算男人手掌面积和身高的关系,我们会得到两组数据,如图,

    最小二乘法原理及极值点判定

                   图1数据点分布

    这并不是一条严格意义上的直线,但这些数据对于实验研究员来说,可以作为某种依据,从而判断出两种数据之间的关系。根据两个量的许多组观测数据来确定它们的函数曲线,这就是实验数据处理中的曲线拟合问题。

    事实上,我们更关注的是如何才能找到这么一条漂亮的曲线。那么,找到这条曲线的方法称作“最小二乘法”。

    曲线拟合中最基本和最常用的是直线拟合。设x和y之间的函数关系由直线方程

      y=ax+b给出。

    式中有两个待定参数,b代表截距,a代表斜率。下面的问题在于,如何找到“最合适”的a和b使得尽可能多的数据落在或者更加靠近这条拟合出来的直线上。即数据对这条直线的逼近程度最佳。当然,当我们将直线拟合出来之后,就可以反过来进行预测了。所以说最小二乘法是很有用的一种测算方法。

    实际上,我们并不关心x和y到底是多少,因为x和y是给定的,当然x和y与其本质的内在关系之间肯定存在误差。我们关心的是方程中的a和b,也就是说,在这个待定的方程中,a和b才是所求的变量,它们可以描述出x和y的关系。 所以我们接下来的任务就是找到一组最好的a和b。

    我们对a和b的要求就是,使得所有x和y相对拟合直线的误差总和最小。也就是说,我们要考虑的是,要使这些数据点距离拟合直线的和最小,距离最短,这样就可以使得尽可能多的数据成为有效点。

    接下来我们的工作就是,最小化误差了。

    最小二成法就此登场。

    最小二乘法名字的缘由有两个,一是我们要将误差最小化,二是我们将误差最小化的方法是使误差的平方和最小化。误差最小化的原因前已述及,用误差平方和最小化来约束误差的原因是要规避负数对计算的影响。

    接下来我们要做的就是使误差的平方和最小了。

    对试验数据最小二乘法原理及极值点判定,使得最小二乘法原理及极值点判定最小,根据二元函数取极值,可知,须最小二乘法原理及极值点判定成立,

    则  最小二乘法原理及极值点判定

     

    联立得最小二乘法原理及极值点判定

          最小二乘法原理及极值点判定  

     

    接下来求解a和b,就可以了。

    问题又来了,以上求极值的方法只能保证所求的点是驻点(临界点),我们知道,多元函数的驻点可以分为三类,即极小点、极大点和鞍点。

     

    最小二乘法原理及极值点判定

                 图2鞍点

    最小二乘法原理及极值点判定 

                 图3极小点

    我们至此还不能说明这就是我们要找的最优解,因为驻点有可能是极小点也有可能是鞍点或者是极大点。所以我们接下来要证明所求是满足要求的极小点。

     

    极值点的判定

     

    设函数最小二乘法原理及极值点判定,假设a不为零,则

    最小二乘法原理及极值点判定

      最小二乘法原理及极值点判定

      最小二乘法原理及极值点判定

    这样,我们就把原式改写成了平方和/差的形式了。但我们还不知道到底是平方和还是平方差,这取决于平方项的系数。

    下面分三种情况讨论:

    若4ac-b^2<0,则二次项系数一正一负,临界点是鞍点。

    若4ac-b^2=0,则只有一个平方项,这就意味着函数临界点只受到一个方向的约束,另一个方向发生了退化,不起作用了,如图,

    最小二乘法原理及极值点判定

          图4 退化后的极值点

    若4ac-b^2>0,这时会有两个平方项的系数都是正,此时w必能取到极值。当a>0时取极大值;当a<0时取取极小值。

    由于通常情况下,我们求解释不可能有如此规范的方程形式,所以我们要引入二阶导数,再用以上方法判断临界点的类型。

    (1) 二元函数的极值一定在临界点和不可导取得。对于不可导点,难以判断是否是极值点;对于驻点可用极值的充分条件判定。

    (2)二元函数取得极值的必要条件: 设最小二乘法原理及极值点判定在点最小二乘法原理及极值点判定处可微分且在点最小二乘法原理及极值点判定处有极值,则最小二乘法原理及极值点判定最小二乘法原理及极值点判定,即最小二乘法原理及极值点判定是驻点。

    (3) 二元函数取得极值的充分条件:设最小二乘法原理及极值点判定最小二乘法原理及极值点判定的某个领域内有连续上二阶偏导数,且最小二乘法原理及极值点判定最小二乘法原理及极值点判定,令最小二乘法原理及极值点判定最小二乘法原理及极值点判定最小二乘法原理及极值点判定,则

    最小二乘法原理及极值点判定且 A<0时,f最小二乘法原理及极值点判定为极大值;

    最小二乘法原理及极值点判定且A>0,f最小二乘法原理及极值点判定为极小值;

    最小二乘法原理及极值点判定时,最小二乘法原理及极值点判定是鞍点;

    当B2-AC = 0时,函数z = f (x, y)在点最小二乘法原理及极值点判定可能有极值,也可能没有极值,这里不做讨论了。

    最后,我们将原始方法和二阶导方法做一个联系,事实上,二阶导的方法是原始方法的进化版本。

    最小二乘法原理及极值点判定求导,得

     

    最小二乘法原理及极值点判定

    最小二乘法原理及极值点判定

    最小二乘法原理及极值点判定
    最小二乘法原理及极值点判定

    最小二乘法原理及极值点判定
        将求二阶导方法中的A、B、C与原始方法中的a、b、c建立联系,得

    A=2a

    B=b

    C=2c

    从而得到AC=4ac-b^2,可见两种方法等效。

  • 相关阅读:
    C语言-define 与do{}while(0)
    Altium Designer 15 --- PCB 3D View
    算法工程师
    VS2015安装失败
    C++11新标准学习
    Sophus VS2010编译不支持?C++11语法的缘故。那有没有不带C++11特性的Sophus版本呢?
    如何学习C++? C++ Primer第三版中文版
    C++智能指针shared_ptr
    C++创建自己的库文件(dll文件创建和编译)
    ARKit对安卓的提示 ARKit与Google Tango
  • 原文地址:https://www.cnblogs.com/Baron-Lu/p/9878693.html
Copyright © 2011-2022 走看看