精华内容
下载资源
问答
  • 最小二乘准则

    2020-05-12 21:30:55
    最小二乘准则@原理以及推导 最小二乘准则 最小二乘法的目的是为了寻找能够拟合真实数据分布的数学模型。 定义 通过最小化误差的平方和,寻找数据的最佳函数匹配,从而能够根据最佳函数来预测新变量对应的数值。 证明...

    最小二乘准则@原理以及推导

    最小二乘准则

    最小二乘法的目的是为了寻找能够拟合真实数据分布的数学模型。

    定义

    通过最小化误差的平方和,寻找数据的最佳函数匹配,从而能够根据最佳函数来预测新变量对应的数值。

    证明

    1. 寻找投影方向aa^*

    Ya=bYa = b
    Y = [Y1 Y2 Y3 Y4]
    b = [b1 b2 b3 b4]
    其中Y代表规范化增广向量样本,b代表对应的函数值
    定义误差 e = Y a - b, 平方误差准则函数
    J(a)= e2|e||^2 = Yab2|Y a - b||^2

    2.求使得J(a)最小的aa^*

    j=0\bigtriangledown j = 0,我们可以得到YTYa=YTbY^TYa^*=Y^Tb.
    因此,a=(YTY)1YTb=Y+ba^*=(Y^TY)^{-1}Y^Tb=Y^+b
    Y+Y^+为左逆矩阵

    展开全文
  • 采用加权最小二乘准则的影像仪自动对焦方法
  • 模型拟合一般来说有这么三种:切比雪夫近似准则极小化绝对偏差之和最小二乘准则这几个原则各有各的适用范围。其中最小二乘准则是比较容易计算的。接下来我将简要的介绍最小二乘准则以及举例说明如何用python实现。...

    模型拟合一般来说有这么三种:切比雪夫近似准则

    极小化绝对偏差之和

    最小二乘准则

    这几个原则各有各的适用范围。其中最小二乘准则是比较容易计算的。接下来我将简要的介绍最小二乘准则以及举例说明如何用python实现。

    最小二乘准则

    定义:给定某种函数类型

    个数据点

    ,对整个数据点的极小化绝对偏差

    ,极小化和数为

    拟合直线

    如果我们要拟合的是直线,即

    ,计算过程如下:

    拟合幂函数

    可化为线性拟合的非线性拟合

    用python求解

    我们发现如果要自己计算的话,要用到偏导数,无穷级数的知识。如果数据点很多的话,函数比较复杂的,计算是十分困难的,甚至是不可能的。于是想到可以使用计算机求解。

    通用代码如下:

    # -*- coding: utf-8 -*-

    import numpy as np

    from scipy.optimize import leastsq

    import pylab as pl

    def func(x, p):

    """数据拟合所用的函数: A*sin(2*pi*k*x + theta)"""

    A, k, theta = p

    return A*np.sin(2*np.pi*k*x+theta)

    def residuals(p, y, x):

    """实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数"""

    return y - func(x, p)

    x = np.linspace(0, -2*np.pi, 100)

    A, k, theta = 10, 0.34, np.pi/6 # 真实数据的函数参数

    y0 = func(x, [A, k, theta]) # 真实数据

    y1 = y0 + 2 * np.random.randn(len(x)) # 加入噪声之后的实验数据

    p0 = [7, 0.2, 0] # 第一次猜测的函数拟合参数

    # 调用leastsq进行数据拟合

    # residuals为计算误差的函数

    # p0为拟合参数的初始值

    # args为需要拟合的实验数据

    plsq = leastsq(residuals, p0, args=(y1, x))

    print u"真实参数:", [A, k, theta]

    print u"拟合参数", plsq[0] # 实验数据拟合后的参数

    pl.plot(x, y0, label=u"真实数据")

    pl.plot(x, y1, label=u"带噪声的实验数据")

    pl.plot(x, func(x, plsq[0]), label=u"拟合数据")

    pl.legend()

    pl.show()

    举例

    接着我用我的一篇文章中车辆停止举例为例进行拟合,相关数据在该文章里。相信未来:从简单数学建模开始:05如何进行数学建模——以车辆停止距离模型为例​zhuanlan.zhihu.com

    子模型一:反应距离模型

    import numpy as np

    import pandas as pd

    import matplotlib.pyplot as plt

    from scipy.optimize import leastsq

    %pylab inline

    plt.rcParams['font.sans-serif']=['simhei']

    plt.rcParams['axes.unicode_minus']=False

    dr = np.array([22,28,33,39,44,50,55,61,66,72,77,83,88])

    v = np.array([20., 25., 30., 35., 40., 45., 50., 55., 60., 65., 70., 75., 80.])

    db = np.array([20,28,40.5,52.5,72,92.5,118,148.5,182,220.5,266,318,376])

    d = np.array([42,56,73.5,91.5,116,142.5,173,209.5,248,292.5,343,401,464])

    x = v

    y = dr

    def func(p):

    k = p

    return y - k*x

    r = leastsq(func,[np.sum(dr)/np.sum(v)])

    k = r[0]

    print('k=',k)

    plt.scatter(x,k*x,label = '拟合解')

    plt.plot(x,k*x)

    plt.scatter(x,y,label='观测解')

    plt.plot(x,y)

    plt.xlabel('dr')

    plt.ylabel('v')

    plt.title('最小二乘法则应用')

    plt.legend()

    plt.show()

    这是拟合后的结果,k = 1.1040,之前的结果为k = 1.1016

    子模型二:刹车距离模型

    import numpy as np

    import pandas as pd

    import matplotlib.pyplot as plt

    from scipy.optimize import leastsq

    %pylab inline

    plt.rcParams['font.sans-serif']=['simhei']

    plt.rcParams['axes.unicode_minus']=False

    dr = np.array([22,28,33,39,44,50,55,61,66,72,77,83,88])

    v = np.array([20., 25., 30., 35., 40., 45., 50., 55., 60., 65., 70., 75., 80.])

    db = np.array([20,28,40.5,52.5,72,92.5,118,148.5,182,220.5,266,318,376])

    d = np.array([42,56,73.5,91.5,116,142.5,173,209.5,248,292.5,343,401,464])

    x = v**2

    y = db

    def func(p):

    k = p

    return y - k*x

    r = leastsq(func,[np.sum(db)/np.sum(v**2)])

    k = r[0]

    print('k=',k)

    plt.scatter(x,k*x,label = '拟合解')

    plt.plot(x,k*x)

    plt.scatter(x,y,label='观测解')

    plt.plot(x,y)

    plt.xlabel('dr')

    plt.ylabel('v')

    plt.title('最小二乘法则应用')

    plt.legend()

    plt.show()

    这张图拟合前和拟合后的差距还是挺大的。

    展开全文
  • 模型拟合一般来说有这么三种:切比雪夫近似准则极小化绝对偏差之和最小二乘准则这几个原则各有各的适用范围。其中最小二乘准则是比较容易计算的。接下来我将简要的介绍最小二乘准则以及举例说明如何用python实现。...

    模型拟合一般来说有这么三种:

    1. 切比雪夫近似准则
    2. 极小化绝对偏差之和
    3. 最小二乘准则

    这几个原则各有各的适用范围。其中最小二乘准则是比较容易计算的。接下来我将简要的介绍最小二乘准则以及举例说明如何用python实现。

    最小二乘准则

    定义:给定某种函数类型

    个数据点
    ,对整个数据点的极小化绝对偏差
    ,极小化和数为

    拟合直线

    如果我们要拟合的是直线,即

    ,计算过程如下:

    f911205182dee15232a5562f03377c8e.png

    13659e53d552b1a7427ca0fbbd0e1a51.png

    拟合幂函数

    e61b1d99257bb14ee17d8081210562ca.png

    可化为线性拟合的非线性拟合

    aed8791eafa833f0d8637c1f43ea14f8.png

    d24a5dac053cc94c14d0d07a6788b265.png

    2b0ff836cef41b62854165f4bc571987.png

    用python求解

    我们发现如果要自己计算的话,要用到偏导数,无穷级数的知识。如果数据点很多的话,函数比较复杂的,计算是十分困难的,甚至是不可能的。于是想到可以使用计算机求解。

    通用代码如下:

    # -*- coding: utf-8 -*-
    import numpy as np
    from scipy.optimize import leastsq
    import pylab as pl
    
    def func(x, p):
        """
        数据拟合所用的函数: A*sin(2*pi*k*x + theta)
        """
        A, k, theta = p
        return A*np.sin(2*np.pi*k*x+theta)   
    
    def residuals(p, y, x):
        """
        实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数
        """
        return y - func(x, p)
    
    x = np.linspace(0, -2*np.pi, 100)
    A, k, theta = 10, 0.34, np.pi/6 # 真实数据的函数参数
    y0 = func(x, [A, k, theta]) # 真实数据
    y1 = y0 + 2 * np.random.randn(len(x)) # 加入噪声之后的实验数据    
    
    p0 = [7, 0.2, 0] # 第一次猜测的函数拟合参数
    
    # 调用leastsq进行数据拟合
    # residuals为计算误差的函数
    # p0为拟合参数的初始值
    # args为需要拟合的实验数据
    plsq = leastsq(residuals, p0, args=(y1, x))
    
    print u"真实参数:", [A, k, theta] 
    print u"拟合参数", plsq[0] # 实验数据拟合后的参数
    
    pl.plot(x, y0, label=u"真实数据")
    pl.plot(x, y1, label=u"带噪声的实验数据")
    pl.plot(x, func(x, plsq[0]), label=u"拟合数据")
    pl.legend()
    pl.show()

    举例

    接着我用我的一篇文章中车辆停止举例为例进行拟合,相关数据在该文章里。

    相信未来:从简单数学建模开始:05如何进行数学建模——以车辆停止距离模型为例zhuanlan.zhihu.com

    子模型一:反应距离模型

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from scipy.optimize import leastsq
    %pylab inline
    plt.rcParams['font.sans-serif']=['simhei']
    plt.rcParams['axes.unicode_minus']=False
    
    dr = np.array([22,28,33,39,44,50,55,61,66,72,77,83,88])
    v = np.array([20., 25., 30., 35., 40., 45., 50., 55., 60., 65., 70., 75., 80.])
    db = np.array([20,28,40.5,52.5,72,92.5,118,148.5,182,220.5,266,318,376])
    d = np.array([42,56,73.5,91.5,116,142.5,173,209.5,248,292.5,343,401,464])
    
    x = v
    y = dr
    
    def func(p):
        k = p
        return y - k*x
    
    r = leastsq(func,[np.sum(dr)/np.sum(v)])
    k = r[0]
    print('k=',k)
    
    plt.scatter(x,k*x,label = '拟合解')
    plt.plot(x,k*x)
    plt.scatter(x,y,label='观测解')
    plt.plot(x,y)
    plt.xlabel('dr')
    plt.ylabel('v')
    plt.title('最小二乘法则应用')
    plt.legend()
    plt.show()

    198b401e171b9fa0d37ac4acb1e6e7d7.png

    这是拟合后的结果,k = 1.1040,之前的结果为k = 1.1016

    子模型二:刹车距离模型

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from scipy.optimize import leastsq
    %pylab inline
    plt.rcParams['font.sans-serif']=['simhei']
    plt.rcParams['axes.unicode_minus']=False
    
    dr = np.array([22,28,33,39,44,50,55,61,66,72,77,83,88])
    v = np.array([20., 25., 30., 35., 40., 45., 50., 55., 60., 65., 70., 75., 80.])
    db = np.array([20,28,40.5,52.5,72,92.5,118,148.5,182,220.5,266,318,376])
    d = np.array([42,56,73.5,91.5,116,142.5,173,209.5,248,292.5,343,401,464])
    
    x = v**2
    y = db
    
    def func(p):
        k = p
        return y - k*x
    
    r = leastsq(func,[np.sum(db)/np.sum(v**2)])
    k = r[0]
    print('k=',k)
    
    plt.scatter(x,k*x,label = '拟合解')
    plt.plot(x,k*x)
    plt.scatter(x,y,label='观测解')
    plt.plot(x,y)
    plt.xlabel('dr')
    plt.ylabel('v')
    plt.title('最小二乘法则应用')
    plt.legend()
    plt.show()

    104e32a6ca0466a4a403a0d93feeca5f.png

    这张图拟合前和拟合后的差距还是挺大的。

    展开全文
  • 简单应用最小二乘准则

    千次阅读 2017-07-11 13:07:52
    简单的讨论最小二乘法在拟合直线和幂曲线时的做法,并讨论在拟合幂曲线的时候,遇到解法复杂的情况,可以对幂曲线进行数据变换。但是对幂曲线进行数据变换得到的方程解与原方程的解并不是同一个。

    拟合直线

    假设我们建立了一个模型,该模型的函数关系为 y=Ax+B ,并且我们收集到m个数据点用于估计AB 。我们用y=ax+b 记作 y=Ax+B 的最小二乘估计。这时候运用最小二乘准则,则需要极小化他们的平方和,即:

    S=i=1m[yIf(xi)]2=i=1m(yiaib)2

    得到最优解的必要条件是两个偏导数 S/aS/b 等于零。于是沃恩能够得到方程
    Sa=2i=1m(yiaib)xi=0

    Sb=2i=1m(yiaib)=0

    重写这些方程,并且带入xiyi 的值,使用消去法,我们能够得到参数 ab的值,即:
    a=mxiyixiyimx2i(xi)2

    b=x2iyixiyiyimx2i(xi)2

    由此我们得到了这个函数关系的的斜率和截距, ab的值可以使用计算机非常方便的计算出,我们称用于求 ab的方程为 正规方程

    拟合幂曲线

    现在利用最小二乘准则来对 y=Axn形式的幂曲线进行数据拟合, n在此是一个常量。同样的,我们需要极小化其最小平方和,即:

    S=i=1m[yIf(xi)]2=i=1m[yiaxni]2

    最优化的必要条件依旧是求得偏导数 S/a等于零的点,我们可以给出方程。
    dSda=2i=1mxni[yiaxni]=0

    对该方程进行求解,我们可以得到
    a=xniyix2ni

    这里得记清楚了,n 是一个固定值

    经变换的最小二乘拟合

    在理论上最小二乘准则的应用非常简单,仅仅是计算出函数关系的平方和,再进行极小化,即求其导数为零的点就可以了。但是在实际应用中,存在着许多困难。
    例如我们要研究 f(x)=AeBx的最小二乘拟合,我们会发现,对这个非线性方程组进行求解,是一个及其困难的工作。此外还有许许多多的模型,在求解过程中会产生非常复杂的求解过程。基于这些原因,我们需要进行变换,以求得近似的最小二乘模型。
    我们之前曾探讨过,对曲线进行拟合的时候,可以变换数据,将曲线转变为直线,这样可以非常方便的简化过程的计算。
    对于我们需要拟合的函数关系 f(x)=AxN,我们用aA的估计,用nN的估计,对方程的两边取对数,得:

    lny=lna+nlnx

    经过变换后的方程构成了一条直线,所以应用我们上文所说的,对直线应用最小二乘准则得到的斜率和截距的解,我们能够得到:
    n=5(lnxi)(lnyi)(lnxi)(lnyi)5(lnxi)2(lnxi)2

    lna=(lnxi)2(lnyi)(lnxi)xi5(lnxi)2(lnxi)2

    通过上式两个方程,我们就能够简单求得变换后的幂曲线简单的的未知量。

    两种幂曲线拟合方法的比较

    假设我们得到了一个模型,该模型的函数关系为 y=Ax2,我们获取到该模型的相关数据点

    x 0.5 1.0 1.5 2.0 2.5
    y 0.7 3.4 7.2 12.4 20.1

    我们先使用对其进行数据拟合,将数据代入方程

    a=xniyix2ni

    可以得到最小二乘近似模型 y=3.1869x2
    接着我们采用变换数据的方式来对模型进行拟合,将函数两边取对数,得
    lny=lnai+2lnx

    将数据代入该方程,我们可以得到y=3.1368x2
    两个结果看起来差异并不大,但是因为这是一个指数型的函数,当 x的值越大,差异会变的极其明显。我们可以尝试对数据进行预测,当x=2.25 时,两个方程分别得到 16.133715.8801 。两个预测值有了显著的差异。因此我们可以得到两个事实
    • 对一个方程进行数据变换,得到的结果可以用与数据拟合
    • 变换后的方程和原方程得到的解并不是同一个。因为两个方程的 最小二乘拟合并不是针对同一个模型,两个方程的最优化问题是不同的,所以会出现这种差异。
    展开全文
  • 太久没更新博客了,因为这段时间实在没解决啥技术问题(或者说,遇到了技术问题懒得解决)。...大概就是这么几步,目的是通过最优的斜率和y轴截距取值,让损失函数最小。 具体来说, 先把损失函数(二次方形式的比.
  • 最小二乘滤波算法的基本算法是递归最小二乘算法,这种算法实际上是FIR维纳滤波器的一种时间递归实现,它是严格以最小二乘准则为依据的算法。它的主要优点是收敛速度快,所以在快速信道均衡、实时系统辨识和时间序列...
  • 最小二乘算法的matlab程序,主成分提取准则中的交叉有效性准则的调用函数。
  • 同的准则,来引出最小二乘和加权最小二乘的介绍。  首先回到直线拟合的这个问题中来。一般假设点集N中的点是通过对直线进行采样获得,通常 采样的过程中会有误差的干扰。所以我们直观要求直线经过所有点集N的中心...
  • 除了最小二乘准则下的经典多元线性回归分析(MLR),提取自变量组主成分的主成 分回归分析(PCR)等方法外,还有近年发展起来的偏最小二乘(PLS)回归方法。 偏最小二乘回归提供一种多对多线性回归建模的方法,特别...
  • 基于多次最小二乘方法的方位-多普勒频差联合无源定位方法,杨斌,李立萍,本文提出了一种方位-多普勒频差(DOA-FDOA)联合定位新算法,该算法借助目标航迹约束条件,通过多次应用最小二乘准则,充分利用多普
  • 同时,基于不可分开的局中人获得相同分配值这一分配准则,在最小二乘解的基础上提出对称最小二乘解,并讨论其唯一性条件及相关性质.值得指出的是,当且仅当其可行联盟集合为非奇异时,具有可行联盟的合作对策存在唯一的...
  • 在实际问题中,经常遇到需要研究两组多重相关变量间的相互依赖关系,并研究用一组变量(常称为自变量或预测变量)去预测另一组变量(常称为因变量或响应变量), 除了最小二乘准则下的经典多元线性回归分析(MLR),提取自...
  • 准则 采用一种分类形式后,就要采用准则来衡量分类的...分类器设计准则:FIsher准则、感知机准则最小二乘(最小均方误差)准则 Fisher准则 Fisher线性判别分析LDA(LinearityDistinctionAnalysis)基本思想:对...
  • 非线性最小二乘问题

    2013-09-16 13:53:33
    非线性最小二乘问题原理方法: 由于的fi(x)非线性性,此时按梯度等于 0 得到的是一个非线性方程组,求解困难。常用的 基本思想是用一系列线性最小二乘问题求解该 非线性最小二乘问题:设x(k) 是解的第k次近似, 在x...
  • 最小二乘算法MATLAB代码实现

    万次阅读 2018-11-06 22:00:39
    最小二乘(Least Square)准则:以误差的平方和最小作为最佳准则的误差准则 定义式中, ξ(n)是误差信号的平方和;ej是j时刻的误差信号, dj是j时刻的期望信号,Xj是j时刻的输入信号构成的向量, W表示滤波器的权...
  • 在实际问题中,经常遇到需要研究两组多重相关变量间的相互依赖关系,并研究用一组变量(常称为自变量或预测变量)去预测另一组变量(常称为因变量或响应变量), 除了最小二乘准则下的经典多元线性回归分析(MLR),提取自...
  • 总体最小二乘(TLS)

    千次阅读 2014-11-15 21:15:00
    总体最小二乘是一种推广最小二乘方法,本文的主要内容参考张贤达的《矩阵分析与应用》。 1. 最小二乘法 最小二乘法,大家都很熟悉,用在解决一超定方程。最小“二”乘的“二”体现在准则上——令误差的平方和...
  • 通常我们所说的狭义的最小二乘,是指在线性回归下采用最下二乘准则,进行线性拟合参数求解。 由于是基于线性回归,所以可以很容器求出全局最优解,而不是像梯度下降那样一点点的迭代优化最后达到极值点。 而广义的...
  • 3.本书主要讨论监督学习,监督学习可以概括如下:从给定有限的训练数据出发, 假设数据是独立同分布的,而且假设模型属于某个假设空间,应用某一评价准则,从假设空间中选取一个最优的模型,使它对已给训练数据及...
  • 以误差的平方和最小为准则来估计非线性静态模型参数的一种参数估计...在最小二乘回归中,我们建立了一个回归模型,其中来自回归曲线的不同点的垂直距离的平方和被最小化。我们通常从定义的模型开始,并假设系数的...
  • dlsa分布式最小二乘近似 使用Apache Spark实施 介绍 在这项工作中,我们开发了一种分布式最小二乘近似(DLSA)方法,该方法能够解决分布式系统上的大量回归问题(例如,线性回归,逻辑回归和Cox模型)。 通过使用...
  • 1:当估计量服从正态分布时,最小二乘原理可以用数理统计中的最大似然估计来解释,两种估计准则的估值相同。 2:极大后验估计是从贝叶斯统计出发,结合贝叶斯公式可以推导出广义最小二乘,二者在数值上计算等价。 ...
  • 最优估计 – kalman and lsm kalman Filter 和 least ...线性最小方差估计:将估计量限制为观测值的线性函数,已知观测量Z和和被估计量X一二阶矩(EX,Var{X},EZ,Var{Z},Cov{X,Z}),使估计误差的方差最小,即最小化t...
  • Python之建模数值逼近篇–最小二乘拟合介绍系数ak的确定函数rk(x)r_k(x)rk​(x)的选取理解和区别样例 介绍 曲线拟合问题的提法是,已知一组(二维)数据,即平面上的n个点(xi,yi)(x_{i},y_{i})(xi​,yi​),i=1,2,…,...
  • 1.线性最小二乘法曲线拟合问题的提法是,已知一组(二维)数据,即平面上的个点...拟合准则是使,与的距离 的平方和最小,称为最小二乘准则。1.1.系数的确定记:为求使达到最小,只需利用极值的必要条件,得到关于的线...
  • 李航博士《统计学习方法》第五章第二题,试用平方误差准则生成一个二叉回归树。 输入数据为: x 0 1 2 3 4 5 6 7 8 9y 4,5 4.75 4.91 5.34 5.80 7.
  •  刀切法的提出,是基于点估计准则无偏性。刀切法的作用就是不断地压缩偏差。但需要指出的是缩小偏差并不是一个好的办法,因为偏差趋于0时,均方误差会变得十分大。而且无偏性只有在大量重复时才会表现出与真值的...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 182
精华内容 72
关键字:

最小二乘准则