最小二乘算法从理论到实践

1 资料搜索

最小二乘法及算法实现

最小二乘法理论数学

最小二乘法(least sqaure method)(作者总结很详细)

最小二乘法的本质是什么?

2 本人总结

        首先我们应该清楚为什么会出现最小二乘法呢,主要是我们在数学或者实际求解数学问题的时候,往往会遇到我们会拿到一堆数据。但是我们不知道该数据对应的函数,所以我们这时候需要根据已知数据来求其对应的函数。而在这种问题的需求的情况下,出现了最小二乘法。

2.1 最小二乘法理论知识

2.1.1 概念

       最小二乘法是勒让德在19世纪的时候提出,对应的公式为L = \frac{1}{n}\sum_{i=1}^{n} (f(x_{i}) - y_{i})^{2},其中f(x_{i})对应的是目标函数,y_{i}对应我们已知的真值,L对应误差值。进行数据拟合的过程中,就是要实现L误差值最小化。

2.1.2 公式推导

         最小二乘法的求解方法,就是对公式进行导数求解,下面通过举例来说明求解的过程。

我们假设函数f(x_{1},x_{2},\cdot \cdot \cdot x_{n-1}) = a_{0} + a_{1}x_{1} + a_{2}x_{2} + \cdot \cdot \cdot + a_{n-1}x_{n-1}

将其转化为矩阵的方式f(x) = XA

其中f(x)为m X 1的向量,A为n X 1的列向量,X为m X n维向量

根据2.1.1中的方程,我们可以得到损失函数L=\frac{1}{2}(XA-Y)^{T}(XA-Y),其中Y为我们已知的函数值,这里多出的\frac{1}{2}主要为了后面求导数后系数为1。因此,\frac{\partial L}{\partial a}=X^{T}(XA-Y) = 0

经过整理后可以得到,A=\left (X ^{T}X \right )^{-1}X ^{T}Y

2.1.3 局限性

并不是所有的情况下,都可以行都可以使用最小二乘法,其中包括数据量比较大、矩阵不可逆、目标函数不是线性函数的情况下。

(1) 数据量比较大情况下:这步\left (X ^{T}X \right )^{-1}矩阵求逆的运算比较耗时,建议超过10000个特征的时候不要使用最小二乘法,而使用梯度下降的方法;

(2) 矩阵不可逆的情况下,一个方法是通过将不可逆矩阵根据数据整理,得到可逆矩阵;或者使用梯度下降方法;

(3) 目标函数不是线性函数,一个方法是通过通过降维转化为线性函数;或者使用梯度下降方法;

3.1  matlab实现最小二乘法

clear
clc
x = [2,4,5,6,7.8,7.8,9,12,13.3,17];
y = [-10,-11.9,-4.2,-2,0,2.1,3,5.2,6.4,4.5];

[~,k]=size(x);
for n=1:2
    X = zeros(n+1, k);   %创建方程大小 n+1行,k列
    for col = 1:k        %写入数据
        for row = 1:n+1
            X(row,col)=x(col)^(n + 1- row);
        end
    end
    X = X';                      %转秩操作
    ANSS = (X'*X)\X'*y';         %求解方程(X'*X)\X 与 inv(X'*X)* X'操作相同
    Xtmp = 0:0.1:17;
    Ytmp = ANSS(1) * Xtmp.^n;    %根据求得的系数初始化并构造多项式方程
    for num = 2:1:n+1     
        Ytmp = Ytmp + ANSS(num) * Xtmp.^(n+1-num);
    end
    subplot(1,2,n)       
    plot(x,y,'*')            %打印输入数据的分布
    hold on
    plot(Xtmp,Ytmp)          %打印几何后的函数
end
suptitle('分别为1阶和2阶函数情况下,拟合结果')

实现效果

 

但是当阶数为4阶时,进行数据拟合,得到下面的结果:

根据图形可以看出,在拟合的过程中,出现了过拟合现象。针对过拟合现象我们一般采用这则化的方式,来对数据拟合来施加约束,关于正则化的讲解,我们可以参考下面链接

了解更多关于《计算机视觉与图形学》相关知识,请关注公众号:

下载我们视频中代码和相关讲义,请在公众号回复:计算机视觉课程资料

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值