• 线性拟合之最小二乘方法和最小距离方法


    线性拟合即给定一组输入样本,求一个M阶多项式 的参数向量,使得拟合误差最小。这个M阶多项式虽然是关于x的非线性(当时)函数,但是是关于待求参数向量的线性函数,所以叫“线性”拟合。而拟合误差根据具体应用可以选用不同的标准,最常见、也是教科书上提供的一种误差标准叫做最小化方差,由这个标准导出的就是最小二乘法(Lease Square, LS);还有一种误差标准在轨迹点的拟合上用的比较多,应用于直线拟合情况,它的目标是最小化点到直线的距离和,本质上这也是一种最小二乘法。


    最小化方差

    我们将要拟合的多项式简写为,其中向量

    因此,可以写出目标函数

    这是一个关于的二次函数,通过对其求导数令结果等于0,即可求解。

    得到

    注意到是个数,它的转置是它本身,因此上式等价于

    如果我们定义两个记号,上式可进一步简化,记号定义如下:

    则上式可进一步简化为:

    最后解得

    对于直线拟合即M=1的情形,给出如下结论:


    最小化点到直线的距离和

    对于直线拟合问题,上面的最小化方差方法有几个缺点。第一,它假定了y的系数不为0,即直线不能垂直于x轴。第二,经过试验验证,当输入样本近似分布于一条垂直于x轴的直线附近时,拟合结果往往很不稳定。特别的,第三,对于轨迹点拟合问题,最小化方差没有很好的物理解释,而最小化点到直线的距离则可以很好的解释结果,而且也不存在第一点和第二点中的问题。

    对于以上第三点的说明,考虑这样一个问题,假设输入样本为一系列的经纬度数据,x表示经度(或维度)值,y表示维度(或经度)值。现在要拟合出一条直线来近似求出轨迹点的前进方向。此时,用最小化点到直线的距离拟合出的结果似乎更能说明问题,而且当轨迹点垂直于x轴时,拟合结果也更稳定。下面具体说明求解过程。

    设直线方程为,此时的优化目标为(为了使得目标函数连续可导,转化为最小化距离的平方和):

    不失一般性,假设,则上式无约束优化问题变为带等式约束的优化问题:

    利用拉格朗日方法求解,拉格朗日函数为:

    根据拉格朗日方法,需要先对a、b、c参数求导,令导数等于0:

     由(13)式可得:

    ,则,其中,带入拉格朗日函数得:

    因此,

    利用与前面类似的技巧,记

    上式可简化为:

    推出:

    可以看出,是矩阵A的特征向量,而是对应的特征值。我们只需要求出A的特征向量,即得到参数a和b的值,然后带入(14)式即可求得c。

    A是2X2的矩阵,我们知道它有两个特征值和两个特征向量,因此此问题有两个解。因为A是实对称矩阵,他的两个特征向量是正交的,这说明有两条互相垂直的直行分别对应原问题的两个局部极值点。其中,较小特征值对应的特征向量即为最优解。

    值得注意的是,拉格朗日方法中,要求,因此,在求出矩阵A的特征向量之后,还需要对特征向量归一化。由于我们的目的是求出直线参数a、b和c,其实归不归一化求出来的结果是一样的。

  • 相关阅读:
    phaser3入门教程-从零开始开发一个打砖块游戏
    Python操作PDF-文本和图片提取(使用PyPDF2和PyMuPDF)
    从零开始手把手教你使用javascript+canvas开发一个塔防游戏01地图创建
    Python实现超级玛丽游戏系列教程02玛丽走跑
    Python实现超级玛丽游戏系列教程01玛丽登场
    通过游戏学javascript系列第一节Canvas游戏开发基础
    mvc模式jsp+servel+dbutils oracle基本增删改查demo
    mvc模式jsp+servel+jdbc oracle基本增删改查demo
    N个任务掌握java系列之统计一篇文章中单词出现的次数
    mysq数据库管理工具navicat基本使用方法
  • 原文地址:https://www.cnblogs.com/kane1990/p/4712884.html
Copyright © 2020-2023  润新知