万字长文,从零吃透多元线性回归:从数学原理到实战应用(超详细,看这篇就够了)

前言

为什么线性回归是机器学习的基石?
  在房价预测、用户增长分析、广告点击率预测等场景中,我们经常需要建立多个影响因素与目标值之间的关系模型。
  多元线性回归正是解决这类问题的核心工具。本文将带您深入理解这一经典算法,从数学推导到代码实现,揭示其背后的智慧。(文章较长,建议收藏慢慢看)

1、基本概念

  线性回归是机器学习中有监督机器学习下的一种算法。 回归问题主要关注的是因变量(需要预测的值,可以是一个也可以是多个)和一个或多个数值型的自变量(预测变量)之间的关系。

  有监督学习:需要带标签的训练数据

  连续值预测:预测股票价格、销售额等连续数值

  因果分析:量化不同因素对结果的影响程度

  需要预测的值:即目标变量,targety连续值预测变量。

  影响目标变量的因素: X 1 X_1 X1 X n X_n Xn,可以是连续值也可以是离散值。

  因变量和自变量之间的关系:即模型model,是我们要求解的。

以房价预测为例:

在这里插入图片描述

1.1、简单线性回归

  算法说白了就是公式,简单线性回归属于一个算法,它所对应的公式:

   y = w x + b y = wx + b y=wx+b

  这个公式中,y 是目标变量即未来要预测的值,x 是影响 y 的因素,w,b 是公式上的参数即要求的模型。其实 b 就是截距,w 就是斜率嘛! 所以很明显如果模型求出来了,未来影响 y 值的未知数就是一个 x 值,也可以说影响 y 值 的因素只有一个,所以这是就叫简单线性回归的原因。

  同时可以发现从 x 到 y 的计算,x 只是一次方,所以这是算法叫线性回归的原因。 其实,大家上小学时就已经会解这种一元一次方程了。
在这里插入图片描述

1.2、最优解

  Actual value:真实值,一般使用 y 表示。

  Predicted value:预测值,是把已知的 x 带入到公式里面和出来的参数 w,b 计算得到的,一般使用 y ^ \hat{y} y^ 表示。

   Error:误差,预测值和真实值的差距,一般使用 ε \varepsilon ε 表示。

  最优解:尽可能的找到一个模型使得整体的误差最小,整体的误差通常叫做损失 Loss

  Loss:整体的误差,Loss 通过损失函数 Loss function 计算得到。

1.3、多元线性回归

  现实生活中,往往影响结果 y 的因素不止一个,这时 x 就从一个变成了 n 个, x 1 x_1 x1 x n x_n xn 同时简单线性回归的公式也就不在适用了。多元线性回归公式如下:

   y ^ = w 1 x 1 + w 2 x 2 + … … + w n x n + b \hat{y} = w_1x_1 + w_2x_2 + …… + w_nx_n + b y^=w1x1+w2x2+……+wnxn+b

  b是截距,也可以使用 w 0 w_0 w0来表示

   y ^ = w 1 x 1 + w 2 x 2 + … … + w n x n + w 0 \hat{y} = w_1x_1 + w_2x_2 + …… + w_nx_n + w_0 y^=w1x1+w2x2+……+wnxn+w0

   y ^ = w 1 x 1 + w 2 x 2 + … … + w n x n + w 0 ∗ 1 \hat{y} = w_1x_1 + w_2x_2 + …… + w_nx_n + w_0 * 1 y^=w1x1+w2x2+……+wnxn+w01

  使用向量来表示, X ⃗ \vec{X} X 表示所有的变量,是一维向量; W ⃗ \vec{W} W 表示所有的系数(包含 w 0 w_0 w0),是一维向量,根据向量乘法规律,可以这么写:

   y ^ = W T X \hat{y} = W^TX y^=WTX【默认情况下,向量都是列向量】

矩阵相乘计算示例:
在这里插入图片描述

2、正规方程

2.1、最小二乘法矩阵表示

  最小二乘法可以将误差方程转化为有确定解的代数方程组(其方程式数目正好等于未知数的个数),从而可求解出这些未知参数。这个有确定解的代数方程组称为最小二乘法估计的正规方程。公式如下:

θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)1XTy 或者 W = ( X T X ) − 1 X T y W = (X^TX)^{-1}X^Ty W=(XTX)1XTy ,其中的 W 、 θ W、\theta Wθ 即使方程的解!

什么是最小二乘法?

  最小二乘法是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。

  原理:给定一组数据点 ( ( x i , y i ) ) , ( i = 1 , 2 , ⋯   , n ) ((x_i, y_i)),(i = 1,2,\cdots,n) ((xi,yi))(i=1,2,,n),假设我们希望找到一个函数 ( y = f ( x ) ) (y = f(x)) (y=f(x))来拟合这些数据点。最小二乘法的目标是找到一组参数,使得观测值 ( y i ) (y_i) (yi)与预测值 ( f ( x i ) ) (f(x_i)) (f(xi))之间的误差平方和最小。用数学公式表示,就是要最小化 ( S = ∑ i = 1 n ( y i − f ( x i ) ) 2 ) (S = \sum\limits_{i = 1}^{n}(y_i - f(x_i))^2) (S=i=1n(yif(xi))2),其中S表示误差平方和。

  最小二乘法公式如下:

J ( θ ) = 1 2 ∑ i = 0 n ( h θ ( x i ) − y i ) 2 J(\theta) = \frac{1}{2}\sum\limits_{i = 0}^n(h_{\theta}(x_i) - y_i)^2 J(θ)=21i=0n(hθ(xi)yi)2

  增加 1 2 \frac{1}{2} 21是为了求导后消除2产生的系数。

公式使用矩阵表示:

在这里插入图片描述

之所以要使用转置T,是因为矩阵运算规律是:矩阵A的一行乘以矩阵B的一列!

在这里插入图片描述

2.2、多元一次方程举例

1、二元一次方程

image.png

2、三元一次方程

image.png

3、八元一次方程

image.png

# 上面八元一次方程对应的X数据
X = np.array([[  0 ,14 , 8 ,  0 ,  5,  -2,   9,  -3],
 [ -4 , 10 ,  6 ,  4 ,-14 , -2 ,-14  , 8],
 [ -1 , -6  , 5 ,-12 ,  3 , -3 ,  2 , -2],
 [  5 , -2  , 3 , 10  , 5 , 11 ,  4  ,-8],
 [-15 ,-15  ,-8 ,-15 ,  7 , -4, -12 ,  2],
 [ 11 ,-10 , -2 ,  4  , 3 , -9 , -6 ,  7],
 [-14 ,  0 ,  4 , -3  , 5 , 10 , 13 ,  7],
 [ -3 , -7 , -2 , -8  , 0 , -6 , -5 , -9]])
# 对应的y
y = np.array([ 339 ,-114  , 30 , 126, -395 , -87 , 422, -
### 关于ESP8266的全面学习资料 #### ESP8266简介与功能详解 ESP8266是一款专为物联网(IoT)设计的Wi-Fi模块,具备强大的网络连接能力。此款微控制器不仅支持TCP/IP协议栈还提供了一系列用于处理字符串的API接口以及最佳实践指导[^1]。 对于基于ESP8266的应用开发而言,理解其内置函数库至关重要。这些库涵盖了从基本的数据类型定义到复杂的网络编程等多个方面: - **字符串操作**:包括创建、复制、拼接等常见任务; - **内存管理**:动态分配和释放堆空间的方法; - **串口通讯**:通过UART与其他设备交换数据的技术细节; - **网络安全特性**:确保传输过程中的信息安全措施; - **性能调优技巧**:提高应用程序运行效率的方式; - **错误恢复机制**:当遇到意外情况时如何优雅地应对并恢复正常服务; 以上各项内容均能在官方文档中找到详尽描述,并配有实际案例供参考学习。 #### 示例代码展示 为了更好地掌握上述知识点,在这里给出一段简单的Python风格伪代码来说明怎样利用ESP8266发送HTTP请求获取网页内容: ```python import urequests as requests # 导入轻量级http客户端库 def fetch_webpage(url): try: response = requests.get(url) # 发送GET请求至指定URL if response.status_code == 200: # 如果状态码表示成功,则打印页面主体部分 print(response.text) response.close() # 记得关闭连接以节省资源 except Exception as e: print(f"Error occurred while fetching webpage: {e}") ``` 这段代码展示了如何使用`urequests`这个专门为MicroPython环境定制的小型化版本requests库来进行标准HTTP GET请求的操作流程。它能有效地简化原本较为繁琐的过程,让开发者可以更专注于业务逻辑本身而不是底层实现。 另外,还有更多实用的例子可以在开源项目【ESP8266-Demos】里发现,该项目包含了多个不同场景下的具体实施方案,非常适合用来加深理解和练习技能[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值