【数理知识】最小二乘法,从线性回归出发,数值举例并用最小二乘法求解回归模型

序号内容
1【数理知识】自由度 degree of freedom 及自由度的计算方法
2【数理知识】刚体 rigid body 及刚体的运动
3【数理知识】刚体基本运动,平动,转动
4【数理知识】向量数乘,内积,外积,matlab代码实现
5【数理知识】协方差,随机变量的的协方差,随机变量分别是单个数字和向量时的协方差
6【数理知识】旋转矩阵的推导过程,基于向量的旋转来实现,同时解决欧式变换的非线性局限

查了下自己的笔记,之前在用 SG 滤波器时提到过最小二乘法,这里放一下文章链接方便自己查阅:【UWB】Savitzky Golay filter SG滤波器原理讲解。

文章目录

  • 1. 线性回归
    • 1. 简单线性回归模型
    • 2. 多元线性回归模型
  • 2. 从线性回归到最小二乘法,数值举例并用最小二乘法求解回归模型
    • 1. 单解释变量,单响应变量
    • 2. 多解释变量,单响应变量
  • Ref

最小二乘法(Least Squared Method)是一种数学优化技术,用于最小化预测值与真实值之间的差异(通常表示为残差平方和的形式)。

最小二乘法的核心思想是:通过最小化预测值和真实值之间的差异的平方和,来找到模型最佳的参数值。

因为最小二乘法就是一门优化技术,单纯的讨论最小二乘法比较枯燥。因此,将最小二乘法应用在回归分析中的线性回归,帮助求解出回归模型的最佳参数,这样的方式可以更好的理解最小二乘法的思想。

回归分析的最初目的是估计模型的参数以便达到对数据的最佳拟合。在很多情况下,特别是在线性回归中,最小二乘法可以为我们提供一个封闭的、解析的解决方案来寻找最佳参数。因此,最小二乘法经常用于拟合直线和多项式得到一组数据点,从而预测或解释变量的行为。


接下来,将先阐述线性回归,并阐述两个简单的线性回归模型。然后举具体的例子,通过最小二乘法的思想求解出最佳模型参数,从而实现对使用最小二乘法求解模型参数的理解。


1. 线性回归

讨论线性回归(Linear Regression)时,同时结合回归分析(Regression Analysis)一起讨论下。

线性回归和回归分析都是统计学中常用的方法,但它们之间存在一些关键的区别:

在定义上,

  • 线性回归:线性回归是一个预测方法,它试图找到一个线性函数(对于简单线性回归)或多个线性函数(对于多元线性回归),这些函数可以最好地描述两个(或更多)变量之间的关系。
  • 回归分析:回归分析是一个更广泛的术语,用于描述一个变量(或多个变量)与一个或多个其他变量之间关系的统计方法。线性回归只是回归分析中的一种形式。

在类型方面,

  • 线性回归:主要关注线性关系。
  • 回归分析:可以包括线性回归、多项式回归、逻辑回归、岭回归等多种类型。

在目的上,

  • 线性回归:预测或解释一个响应变量和一个或多个预测变量之间的关系。
  • 回归分析:探索和建模变量之间的关系,这可能是线性的、非线性的,或者是其他的关系。

在应用上,

  • 线性回归:当我们认为变量之间存在线性关系时,通常使用线性回归。
  • 回归分析:可以应用于各种关系,包括但不限于线性关系。

简而言之,线性回归是回归分析的一个子集。回归分析包括多种方法,用于模拟和解释变量之间的关系,而线性回归专门关注线性关系。


给一个随机样本( y , x 1 , x 2 , ⋯ y, x_1, x_2, \cdots y,x1,x2,),一个线性回归模型假设
响应变量(通常称为因变量或目标) y y y
解释变量(通常称为自变量或特征) x 1 , x 2 , ⋯ x_1, x_2, \cdots x1,x2,
之间的关系除了受到解释变量的影响之外,还有其它变量的存在。我们加入一个误差项 ϵ \epsilon ϵ (也是一个随机变量)来捕获除了 x 1 , x 2 , ⋯ x_1, x_2, \cdots x1,x2, 之外任何对 y y y 的影响。


不过在本文的分析中,我们主要是为了学习回归模型,故简化掉误差项 ϵ \epsilon ϵ 的影响。

同时,根据解释变量数目的不同,线性回归模型还分为了简单线性回归和多元线性回归。


1. 简单线性回归模型

描述了一个响应变量 y y y 和一个解释变量 x x x 之间的关系。

假设这种关系是线性的,也就是一次函数

y = β 0 + β 1 x \begin{aligned} y &= \beta _0 + \beta_1 x \end{aligned} y=β0+β1x

其中 y y y 是响应变量, x x x 是解释变量, β 0 \beta_0 β0 β 1 \beta_1 β1 是回归系数。


2. 多元线性回归模型

描述了一个响应变量 y y y 和两个或两个以上解释变量 x 1 , x 2 , ⋯ x_1, x_2, \cdots x1,x2, 之间的关系。

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β p x p \begin{aligned} y &= \beta _0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p \end{aligned} y=β0+β1x1+β2x2++βpxp


2. 从线性回归到最小二乘法,数值举例并用最小二乘法求解回归模型

最小二乘法的核心思想是寻找能使预测误差平方和最小化的模型参数。

具体来说,考虑一个简单的线性模型:

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β p x p \begin{aligned} y &= \beta _0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p \end{aligned} y=β0+β1x1+β2x2++βpxp

我们的目标是找到一组 β \beta β 值,使得预测值 y ^ = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β p x p \hat{y} = \beta _0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p y^=β0+β1x1+β2x2++βpxp 与实际值 y y y 之间的差异最小。这种差异可以通过残差平方和(RSS)来衡量:

RSS = ∑ i = 1 n ( y − y ^ i ) 2 \text{RSS} = \sum_{i=1}^{n} (y - \hat{y}_i)^2 RSS=i=1n(yy^i)2

最小二乘法的目标是最小化 RSS。具体来说就是通过寻找能最小化 RSS 的 β \beta β 值来实现。

最小二乘法背后的直观思想是尽量找到一个模型,使得预测值尽量接近观测值。这种方法是在基于误差平方损失的情况下得出的。

接下来通过举具体的数值例子,观察最小二乘法的作用。


1. 单解释变量,单响应变量

这种单解释变量单响应变量的回归模型,可以用公式表征为

y = β 0 + β 1 x y = \beta_0 + \beta_1 x y=β0+β1x


假设一个简单线性回归模型 y = β 0 + β 1 x y = \beta_0 + \beta_1 x y=β0+β1x,在实验中得到了四个数据点( x , y x,y x,y):( 1 , 6 1,6 1,6)( 2 , 5 2,5 2,5)( 3 , 7 3,7 3,7)( 4 , 10 4,10 4,10),找到最佳的匹配参数 β 0 , β 1 \beta_0, \beta_1 β0,β1

分别将数据点代入到此线性回归模型中有
β 0 + β 1 1 = 6 β 0 + β 1 2 = 5 β 0 + β 1 3 = 7 β 0 + β 1 4 = 10 \begin{aligned} \beta_0 + \beta_1 1 &= 6 \\ \beta_0 + \beta_1 2 &= 5 \\ \beta_0 + \beta_1 3 &= 7 \\ \beta_0 + \beta_1 4 &= 10 \end{aligned} β0+β11β0+β12β0+β13β0+β14=6=5=7=10

最小二乘法采用的方法就是尽量使等号两边差的平方最小,也就是找出如下函数的最小值:
S ( β 0 , β 1 ) = [ 6 − ( β 0 + β 1 1 ) ] 2 + [ 5 − ( β 0 + β 1 2 ) ] 2 + [ 7 − ( β 0 + β 1 3 ) ] 2 + [ 10 − ( β 0 + β 1 4 ) ] 2 \begin{aligned} S(\beta_0, \beta_1) &= [6 - (\beta_0 + \beta_1 1)]^2 \\ &+ [5 - (\beta_0 + \beta_1 2)]^2 \\ &+ [7 - (\beta_0 + \beta_1 3)]^2 \\ &+ [10 - (\beta_0 + \beta_1 4)]^2 \end{aligned} S(β0,β1)=[6(β0+β11)]2+[5(β0+β12)]2+[7(β0+β13)]2+[10(β0+β14)]2

% 初始化符号变量
syms beta_0 beta_1 real% 定义你的公式
f = (6 - (beta_0 + beta_1 * 1))^2 ... + (5 - (beta_0 + beta_1 * 2))^2 ... + (7 - (beta_0 + beta_1 * 3))^2 ... + (10 - (beta_0 + beta_1 * 4))^2;% 展开公式
f_expanded = expand(f);% 你可以尝试进一步简化它,但是否能简化到所需的形式是不确定的
f_simplified = simplify(f_expanded);% 输出结果
disp(f_expanded);
disp(f_simplified);
>>
4*beta_0^2 + 20*beta_0*beta_1 - 56*beta_0 + 30*beta_1^2 - 154*beta_1 + 2104*beta_0^2 + 20*beta_0*beta_1 - 56*beta_0 + 30*beta_1^2 - 154*beta_1 + 210

最小值可以通过对 S ( β 0 , β 1 ) S(\beta_0, \beta_1) S(β0,β1) 分别求 β 0 \beta_0 β0 β 1 \beta_1 β1 的偏导数,并令其等于零得到。

∂ S ( β 0 , β 1 ) ∂ β 0 = 8 β 0 + 20 β 1 − 56 = 0 ∂ S ( β 0 , β 1 ) ∂ β 1 = 20 β 0 + 60 β 1 − 154 = 0 \begin{aligned} \frac{\partial S(\beta_0, \beta_1)}{\partial \beta_0} &= 8 \beta_0 + 20 \beta_1 - 56 = 0 \\ \frac{\partial S(\beta_0, \beta_1)}{\partial \beta_1} &= 20 \beta_0 + 60 \beta_1 - 154 = 0 \end{aligned} β0S(β0,β1)β1S(β0,β1)=8β0+20β156=0=20β0+60β1154=0

% 对 b0 求偏导数
df_dbeta_0 = diff(f, beta_0);% 对 b1 求偏导数
df_dbeta_1 = diff(f, beta_1);disp(df_dbeta_0)disp(df_dbeta_1)
>> 
8*beta_0 + 20*beta_1 - 56
20*beta_0 + 60*beta_1 - 154

通过求解上述二元一次方程可以得到

β 0 = 3.5 β 1 = 1.4 \begin{aligned} \beta_0 &= 3.5 \\ \beta_1 &= 1.4 \end{aligned} β0β1=3.5=1.4

% 设置偏导数等于零并求解
solutions = solve([df_dbeta_0 == 0, df_dbeta_1 == 0], [beta_0, beta_1]);% 输出解
disp(solutions.beta_0);disp(solutions.beta_1);
>>
7/27/5

因此最佳回归模型为 y = 3.5 + 1.4 x y = 3.5 + 1.4 x y=3.5+1.4x

x = [1  2  3  4]';
y = [6  5  7  10]';plot_x = linspace(1,4,50);
plot_y = 3.5 + 1.4 * plot_x;scatter(x(1), y(1)); hold on;
scatter(x(2), y(2));
scatter(x(3), y(3));
scatter(x(4), y(4));
plot(plot_x, plot_y);
xlabel("$x$", "Interpreter","latex", "FontSize",16);
ylabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;

在这里插入图片描述


2. 多解释变量,单响应变量

这种多解释变量单响应变量的回归模型,可以用公式表征为

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β p x p y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p y=β0+β1x1+β2x2++βpxp


同样基于上述回归模型,我们这里取解释变量的个数为 p = 2 p = 2 p=2,那么有 y = β 0 + β 1 x 1 + β 2 x 2 y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 y=β0+β1x1+β2x2,在实验中得到了四个数据点( x 1 , x 2 , y x_1, x_2, y x1,x2,y):( 1 , 3 , 6 1,3,6 1,3,6)( 2 , 4 , 5 2,4,5 2,4,5)( 3 , 5 , 7 3,5,7 3,5,7)( 4 , 8 , 10 4,8,10 4,8,10),找到最佳的匹配参数 β 0 , β 1 , β 2 \beta_0, \beta_1, \beta_2 β0,β1,β2

分别将数据点代入到此线性回归模型中有
β 0 + β 1 1 + β 2 3 = 6 β 0 + β 1 2 + β 2 4 = 5 β 0 + β 1 3 + β 2 5 = 7 β 0 + β 1 4 + β 2 8 = 10 \begin{aligned} \beta_0 + \beta_1 1 + \beta_2 3 &= 6 \\ \beta_0 + \beta_1 2 + \beta_2 4&= 5 \\ \beta_0 + \beta_1 3 + \beta_2 5&= 7 \\ \beta_0 + \beta_1 4 + \beta_2 8&= 10 \end{aligned} β0+β11+β23β0+β12+β24β0+β13+β25β0+β14+β28=6=5=7=10

得到差的函数有

S ( β 0 , β 1 , β 2 ) = [ 6 − ( β 0 + β 1 1 + β 2 3 ) ] 2 + [ 5 − ( β 0 + β 1 2 + β 2 4 ) ] 2 + [ 7 − ( β 0 + β 1 3 + β 2 5 ) ] 2 + [ 10 − ( β 0 + β 1 4 + β 2 8 ) ] 2 \begin{aligned} S(\beta_0, \beta_1, \beta_2) &= [6 - (\beta_0 + \beta_1 1 + \beta_2 3)]^2 \\ &+ [5 - (\beta_0 + \beta_1 2 + \beta_2 4)]^2 \\ &+ [7 - (\beta_0 + \beta_1 3 + \beta_2 5)]^2 \\ &+ [10 - (\beta_0 + \beta_1 4 + \beta_2 8)]^2 \end{aligned} S(β0,β1,β2)=[6(β0+β11+β23)]2+[5(β0+β12+β24)]2+[7(β0+β13+β25)]2+[10(β0+β14+β28)]2

syms beta_0 beta_1 beta_2 realf = (6 - (beta_0 + beta_1 * 1 + beta_2 * 3))^2 ...+ (5 - (beta_0 + beta_1 * 2 + beta_2 * 4))^2 ...+ (7 - (beta_0 + beta_1 * 3 + beta_2 * 5))^2 ... + (10 - (beta_0 + beta_1 * 4 + beta_2 * 8))^2;f_expanded = expand(f);disp(f_expanded);
>> 
4*beta_0^2 + 20*beta_0*beta_1 + 40*beta_0*beta_2 - 56*beta_0 + 30*beta_1^2 + 116*beta_1*beta_2 - 154*beta_1 + 114*beta_2^2 - 306*beta_2 + 210

分别求偏导数,并令其等于零
∂ S ( β 0 , β 1 , β 2 ) ∂ β 0 = 8 β 0 + 20 β 1 + 40 β 2 − 56 = 0 ∂ S ( β 0 , β 1 , β 2 ) ∂ β 1 = 20 β 0 + 60 β 1 + 116 β 2 − 154 = 0 ∂ S ( β 0 , β 1 , β 2 ) ∂ β 2 = 40 β 0 + 116 β 1 + 228 β 2 − 306 = 0 \begin{aligned} \frac{\partial S(\beta_0, \beta_1, \beta_2)}{\partial \beta_0} &= 8 \beta_0 + 20 \beta_1 + 40 \beta_2 - 56 = 0 \\ \frac{\partial S(\beta_0, \beta_1, \beta_2)}{\partial \beta_1} &= 20 \beta_0 + 60 \beta_1 + 116 \beta_2 - 154 = 0 \\ \frac{\partial S(\beta_0, \beta_1, \beta_2)}{\partial \beta_2} &= 40 \beta_0 + 116 \beta_1 + 228 \beta_2 - 306 = 0 \end{aligned} β0S(β0,β1,β2)β1S(β0,β1,β2)β2S(β0,β1,β2)=8β0+20β1+40β256=0=20β0+60β1+116β2154=0=40β0+116β1+228β2306=0

df_dbeta_0 = diff(f, beta_0);
df_dbeta_1 = diff(f, beta_1);
df_dbeta_2 = diff(f, beta_2);disp(df_dbeta_0)
disp(df_dbeta_1)
disp(df_dbeta_2)
>> 
8*beta_0 + 20*beta_1 + 40*beta_2 - 56
20*beta_0 + 60*beta_1 + 116*beta_2 - 154
40*beta_0 + 116*beta_1 + 228*beta_2 - 306

求解上述三元一次方程可以得到

β 0 = 2 β 1 = − 1 β 2 = 1.5 \begin{aligned} \beta_0 &= 2 \\ \beta_1 &= -1 \\ \beta_2 &= 1.5 \end{aligned} β0β1β2=2=1=1.5

solutions = solve([df_dbeta_0 == 0, df_dbeta_1 == 0, df_dbeta_2 == 0], [beta_0, beta_1, beta_2]);disp(solutions.beta_0);
disp(solutions.beta_1);
disp(solutions.beta_2);
>>
2
-1
3/2

因此最佳回归模型为 y = 2 − x 1 + 1.5 x 2 y = 2 - x_1 + 1.5 x_2 y=2x1+1.5x2

x_1 = [1  2  3  4]';
x_2 = [3  4  5  8]';
y = [6  5  7  10]';plot_x_1 = linspace(1,4,50);
plot_x_2 = linspace(3,8,50);
plot_y = 2 - 1 * plot_x_1 + 1.5 * plot_x_2;figure()
subplot(2,2,1)
scatter3(x_1(1), x_2(1), y(1)); hold on;
scatter3(x_1(2), x_2(2), y(2));
scatter3(x_1(3), x_2(3), y(3));
scatter3(x_1(4), x_2(4), y(4));
plot3(plot_x_1, plot_x_2, plot_y);
xlabel("$x_1$", "Interpreter","latex", "FontSize",16);
ylabel("$x_2$", "Interpreter","latex", "FontSize",16);
zlabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;subplot(2,2,2)
scatter(x_1(1), y(1)); hold on;
scatter(x_1(2), y(2));
scatter(x_1(3), y(3));
scatter(x_1(4), y(4));
plot(plot_x_1, plot_y);
xlabel("$x_1$", "Interpreter","latex", "FontSize",16);
ylabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;subplot(2,2,3)
scatter(x_2(1), y(1)); hold on;
scatter(x_2(2), y(2));
scatter(x_2(3), y(3));
scatter(x_2(4), y(4));
plot(plot_x_2, plot_y);
xlabel("$x_2$", "Interpreter","latex", "FontSize",16);
ylabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;subplot(2,2,4)
scatter(x_1(1), x_2(1)); hold on;
scatter(x_1(2), x_2(2));
scatter(x_1(3), x_2(3));
scatter(x_1(4), x_2(4));
plot(plot_x_1, plot_x_2);
xlabel("$x_1$", "Interpreter","latex", "FontSize",16);
ylabel("$x_2$", "Interpreter","latex", "FontSize",16);
grid on;

在这里插入图片描述


Ref

  1. 回归分析 - WikiPedia
  2. 线性回归 - WikiPedia
  3. 什么是线性回归?
  4. 最小二乘法 - WikiPedia

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/61524.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

160. 相交链表 题解

题目描述:160. 相交链表 - 力扣(LeetCode) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 注:本题中链表相交是“Y”型的&am…

【学习日记】【FreeRTOS】调度器函数实现详解

写在前面 本文主要是对于 FreeRTOS 中调度器函数实现的详细解释,代码大部分参考了野火 FreeRTOS 教程配套源码,作了一小部分修改。 一、MSP 和 PSP Cortex-M有两种栈空间,主堆栈和进程堆栈。 MSP 用于系统级别和中断处理的堆栈 MSP 用于保…

Linux系统调试课:Linux Kernel Printk

🚀返回专栏总目录 文章目录 0、printk 说明1、printk 日志等级设置2、屏蔽等级日志控制机制3、printk打印常用方式4、printk打印格式0、printk 说明 在开发Linux device Driver或者跟踪调试内核行为的时候经常要通过Log API来trace整个过程,Kernel API printk()是整个Kern…

idea 加入 .so文件

背景 做项目的时候,遇到需要查看native 方法 涉及到c源码的查看,因此需要加载.so文件去查看。 操作 idea-file-project structure 找到lib,把你的.so文件添加进来就可以啦 然后你就可以查看对应的源码了。

利用ChatGPT绘制思维导图——以新能源汽车竞品分析报告为例

随着人们对环境保护的日益关注和传统燃油汽车的限制,全球范围内对新能源汽车的需求不断增长。新能源汽车市场的激烈竞争使得了解各个竞品的特点和优劣成为关键。然而,针对这一领域的详尽竞品分析却常常需要大量时间和精力。 在此背景下,人工智…

Windows下运行Tomcat服务时报GC Overhead Limit Exceeded

根本原因是在新建Tomcat作为Windows服务时,系统默认设置的堆内存太小了,我们打开/bin/service.bat文件,将如下图所示的默认值改大一些就好了 if "%JvmMs%" "" set JvmMs512 if "%JvmMx%" "" set J…

移动端的Flex布局

目录 引入 一、传统布局与flex布局 传统性 flex布局 二、felx的特点 三、flex布局父项的常见属性 四、flex布局子项的常见方向 总结 引入 flex 是 flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器…

【Linux:线程池】

文章目录 1 线程池概念2 第一个版本的线程池3 第二个版本的线程池4 第三个版本的线程池5 STL中的容器以及智能指针的线程安全问题6 其他常见的各种锁7 读者写者问题(了解) 1 线程池概念 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而…

物联网与5G引领智慧城市时代的到来

智慧城市需要依赖于多种技术,这些技术的应用将城市转变为高效、智能、可持续发展的现代化城市。智慧城市是基于信息技术、物联网和大数据等先进技术的融合,旨在提升城市的运行效率、资源利用效率和居民生活质量。以下是智慧城市需要依赖的主要技术&#…

sql高频面试题-连续完成两个指定动作的用户统计

用户行为分析 业务背景 某购物APP最近上线了一个新功能,用户签到后可以跳转到大转盘抽奖,抽奖获得的奖金可以抵消购物的费用,以此来培养用户使用app的习惯。 数据表介绍 现有一张用户行为表action_log,主要字段如下&#xff0c…

Elasticsearch同时使用should和must

问题及解决方法 must和should组合查询,should失效。使用must嵌套查询,将should组成的bool查询包含在其中一个must查询中。 SearchRequest request new SearchRequest(); request.indices("function_log");SearchSourceBuilder sourceBuilde…

MFC第二十九天 CView类的分支(以及其派生类的功能)、MFC六大关键技术

文章目录 CView类的分支CEditViewCHtmlViewMainFrm.h CMainFrame 类的接口CMainView .h CListCtrl与CListView的创建原理 CTreeViewCTreeCtrl类简介CTreeCtrl类的原理以及常用功能 MFC六大关键技术视图和带分割栏的框架开发与消息路由CLeftView.cppCRightView.hCRightView.cppC…