最小二乘法是通过数值拟合曲线函数的统计方法,其中最小的是拟合误差最小的。可以根据拟合函数进行预测或预测。广泛应用于数字信号处理、机器学习等领域。本文W君将和大家一起学习通过最小二乘法进行线性回归的方法。

让我们用最简单的一元线性回归模型的例子来理解最小二乘法。生活中我们知道人的身高和脚的大小成正比。这里我们假设身高和脚的大小是一项线性关系。那么,我们如何建立这样的一元线性模型呢?如果下表是我们的统计,我们从人群中随机抽取几个身高不同的人,分别测量他们的身高和脚长。

如下图所示,在坐标系中表示此数据接近直线。

那么如何拟合这条直线呢?早在1805年,勒让德就提出了最小平方方法。方法是根据已知的M个样本特征值列出大象函数E,并找到最佳解决方案,以便最大限度地减少实际值和预期值。其中,大象函数也称为损失函数,可以表示回归模型的估计值与实际值的不一致,值越小,离实际情况越近。它由几个预测值和实际差异的平方和组成,所以我们称它为最小平方。

样例特征值:

大象函数:

这里假设拟合函数如下:

此时,我们的目标函数是:

然后通过最小二乘最小化大象函数,求出当前0和1的值,得到拟合曲线。

那么问题来了吗?如何使目标函数最小,求0和1这两个参数?这里我们有两种解决它的方法:代数法和矩阵法。

代数法

我先做高能预警。代数方法公式看起来很复杂,可能看起来有点枯燥。w君认为,这里仍然需要列出一次。大家只要理解就行了。大卫亚设,《Northern Exposure》(美国电视剧)代数法的解法是先对0和1分别求偏导数,然后分别做0,得到0和1的方程,再解方程。

损失函数通过推导0得到方程。

损失函数通过推导1得到方程。

mp;index=7" width="320" height="59"/>


根据上面两个方程组成一个二元一次方程组,求解θ0和θ1:



类似的,对于n元一次方程也需要对每个参数进行求导,得出一个n元一次方程组,并求解出这n个θ参数。


看到这里一大堆公式是不是已经头大了?确实W君也觉得让人头大,那么,还有没有更加简洁的方法呀?这就是下面我们要学习的矩阵法了。


矩阵法


矩阵解法要比代数法简洁很多,也是大家比较习惯使用的方法。这里我们用n元一次函数作为拟合函数来求导矩阵法的公式,推导过程同样是痛苦的,但是大家最后记住公式就好,我们来看公式推导过程。


拟合函数:



其矩阵表示如下:



所以,损失函数:



在利用矩阵的迹公式得出:



令上面的公式为0,得出:


(敲黑板,这个公式我们一定要记住!!!)


这里的θ就是我们需要求的参数,不过这里的是向量形式。


C++实现矩阵法


下面我们用矩阵法求解本文开头的例子,我们使用表格中的身高和脚长作为样本数据,再利用开源库Eigen来实现矩阵运算。关于Eigen的安装和使用可以参考W君的这篇文章《快速入门矩阵运算——开源库Eigen》。这里用到了转置函数transpose()和求逆函数inverse()。


我们来看一下求解代码,代码中利用了矩阵法求θ向量的公式。

#include <iostream> #include "eigen_3_3_7/Eigen/Eigen" int main() { Eigen::MatrixXf X(8,2); Eigen::VectorXf Y(8); Eigen::VectorXf result; X << 155, 1, 159, 1, 163, 1, 169, 1, 175, 1, 179, 1, 184, 1, 188, 1; Y << 18.1, 19.7, 21.2, 24.2, 26.1, 27.8, 30.3, 32.4; result = ()*X).inverse() * X.transpose() * Y; std::cout << "------ X ------" << std::endl << X << std::endl; std::cout << "------ Y ------" << std::endl << Y << std::endl; std::cout << "------ result ------" << std::endl << result << std::endl; }

程序计算结果如下,θ向量两个参数分别为0.425896和-48.0662。所以,我们拟合出的曲线就是 y=0.425896x - 48.0062了 ,是不是很简单快捷?



最后,我们可以用Excel验算下我们的结果,如下图,拟合出的曲线和我们代码求出来的是一致的。



关于如何使用Excel进行曲线拟合,W君后续计划将会在Excel技巧里再为大家详细介绍,敬请关注。

1.《【excel怎么曲线求导】实例分析,如何使用最小二乘法进行线性回归?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《【excel怎么曲线求导】实例分析,如何使用最小二乘法进行线性回归?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/2516105.html