1 资料搜索

​最小二乘法及算法实现​

​最小二乘法理论数学​

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

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

2 本人总结

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

2.1 最小二乘法理论知识

2.1.1 概念

       最小二乘法是勒让德在19世纪的时候提出,对应的公式为

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

,其中

最小二乘算法从理论到实践_数据_02

对应的是目标函数,

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

对应我们已知的真值,L对应误差值。进行数据拟合的过程中,就是要实现L误差值最小化。

2.1.2 公式推导

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

我们假设函数

最小二乘算法从理论到实践_数据_04

将其转化为矩阵的方式

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

其中

最小二乘算法从理论到实践_拟合_06

为m X 1的向量,A为n X 1的列向量,X为m X n维向量根据2.1.1中的方程,我们可以得到损失函数

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

,其中Y为我们已知的函数值,这里多出的

最小二乘算法从理论到实践_拟合_08

主要为了后面求导数后系数为1。因此,

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

经过整理后可以得到,

最小二乘算法从理论到实践_拟合_10

2.1.3 局限性

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

(1) 数据量比较大情况下:这步

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

矩阵求逆的运算比较耗时,建议超过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阶函数情况下,拟合结果')

实现效果

最小二乘算法从理论到实践_数据_12

 

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

最小二乘算法从理论到实践_拟合_13

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

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

最小二乘算法从理论到实践_拟合_14

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