最小二乘法理论、推导、算法

    xiaoxiao2021-04-15  87

    最小二乘法理论、推导、算法


    author@jason_ql http://blog.csdn.net/lql0716


    1、引言

    求最小二乘的实例:

    假定 x , y有如下数值: y | 1.00 | 0.90 | 0.90 | 0.81 | 0.60 | 0.56 | 0.35 x | 3.60 | 3.70 | 3.80 | 3.90 | 4.00 | 4.10 | 4.20

    解:将这些数值画图可以看出接近一条直线,故用 y=ax+b 表示,故将上面的数值代入表达式有:

    3.6a+b1.00=03.7a+b0.90=03.8a+b0.90=03.9a+b0.81=04.0a+b0.60=04.1a+b0.56=04.2a+b0.35=0

    由于直线只有两个未知数 a , b,理论上只需要两个方程就能求得,但是实际上是不可能的,因为所有点并没有真正的在同一条直线上,即不可能所有的数值都满足

    ax+by0 ,故只需找到一对儿 a b,使得误差平方和 (axi+byi)2=(ax0+by0)2+(ax1+by1)2+......+(axn+byn)2 最小即可。

    误差的平方即二乘方,故成为最小二乘法。

    2、最小二乘法理论(使得平方和最小)

    2.1 数学理论推导

    线性方程组

    a11x1+a12x2+...+a1sxsb1=0,a21x1+a22x2+...+a2sxsb2=0,......an1x1+an2x2+...+ansxsbn=0, (1)

    该方程组可能无解,即任何一组 x1,x2,...,xs (这里为系数)都可能使得

    i=1n(ai1x1+ai2x2+...+aisxsbi)2(2)

    不等于零。所以找到一组 x1,x2,...,xs 使得(2)式最小,称这样的解为最小二乘解,这种问题就叫最小二乘方问题。

    对于(1)式,我们可以用矩阵来表示, 自变量矩阵 A :

    A=a11a21.an1a12a22.an2..........a1sa2s.ans(3)

    函数值 B :

    B=b1b2...bn(4)

    系数 X :

    X=x1x2...xs(5)

    函数值 Y :

    Y=j=1sa1jxjj=1sa2jxj...j=1sanjxj=AX(4)

    故(2)式等价于:

    |YB|2=|AXB|2=i=1n(ai1x1+ai2x2+...+aisxsbi)2

    也就是说,最小二乘法就是找 x1,x2,...,xs 使得 Y B 的距离最短。

    对于(4)式 Y ,可以写为如下形式:

    Y=x1a11a21...an1+x2a12a22...an2+...+xsa1sa2s...ans=x1α1+x2α2+...+xsαs(5)

    其中 αi 为对应的列向量,由 αi 生成的子空间为 L(α1,α2,...,αs) ,那么 Y 就是 L(α1,α2,...,αs) 中的向量,故最小二乘法问题可叙述成:

    X 使得(2)式最小,就是在 L(α1,α2,...,αs) 中找一向量 Y 使得B到它的距离比到子空间 L(α1,α2,...,αs) 中其它向量的距离都短。

    Y=AX=x1α1+x2α2+...+xsαs ,则

    C=BY=BAX

    必须垂直于子空间 L(α1,α2,...,αs) ,故有

    (C,α1)=(C,α2)=...=(C,αs)=0

    由向量内积的定义可知:

    α1C=0,α2C=0,...,αsC=0(6)

    向量的内积:

    α=(a1,a2,...,an) ,

    β=(b1,b2,...,bn) ,

    α β 的内积为: (α,β)=a1b1+a2b2+...+anbn

    由(6)式可得:

    AC=0

    即:

    AC=A(BY)=A(BAX)=0

    从而有:

    ABAAX=0

    AB=AAX

    X=(AA)1AB

    其中 |AA|0

    2.2 常见形式

    2.2.1 理论

    根据2.1节,可以得出以下形式( s+1n ):

    a1x11+a2x12+...+asx1s+by1=0,a1x21+a2x22+...+asx2s+by2=0,......a1xn1+a2xn2+...+asxns+byn=0, (2.2.1)

    这里是常见的方程表示形式 aj 为系数, b 为常数项,xij为自变量, yi 为函数值。一般我们解方程都是根据 aj b 求得yi=a1xi1 a2xi2 ... asxis b,但在解决实际问题时,一般我们都是知道 xij yi ,需要反过来求解 aj b

    根据(2.2.1)式,设:

    X=x11x21.xn1x12x22.xn2..........x1sx2s.xns1111

    a=a1a2...asb

    y=y1y2...yn

    那么:

    Xa=y

    XXa=Xy

    a=(XX)1Xy

    2.2.2 算法

    算法步骤

    1、输入 X y 2、求 a=(XX)1Xy

    参考

    《高等代数》北大三版

    干货分享

    机器学习、深度学习、计算机视觉、自然语言处理及应用案例——干货分享(持续更新……) http://blog.csdn.net/lql0716/article/details/70479493
    转载请注明原文地址: https://ju.6miu.com/read-670890.html

    最新回复(0)