当前位置: 首页 > news >正文

「机器学习笔记9」回归分析:从理论到实践的全面指南

什么是回归分析

回归分析是一种描述变量间关系的统计分析方法,通过建立数学模型来探索数据中的规律性。在现代机器学习中,回归分析扮演着至关重要的角色。

在线教育场景中,我们可以将课程满意度作为因变量Y,而将平台交互性教学资源质量课程设计作为自变量X。通过回归分析,我们能够量化这些因素对学生满意度的具体影响程度。

回归分析本质上是一种预测性建模技术,主要用于预测分析。虽然预测结果多为连续值,但它也可以用于预测离散值甚至二值结果。

线性回归:简单却强大

线性回归是回归分析中最基础的形式,它假设因变量和自变量之间存在线性关系。这种关系的直观表现可以用一条直线来刻画,而线性回归的目的就是找到最能匹配数据的截距和斜率。

image.png

在某些情况下,变量间的线性关系是确定性的,比如当X取值1、2、3、4、5、6时,Y对应取值3、5、7、9、11、13。然而在实际应用中,变量间通常只是近似的线性关系,这就需要我们找到一条能够最好地解释数据的直线。

如何拟合数据

  • 假设只有一个因变量和自变量,每个训练样例表示(𝑥𝑖,𝑦𝑖)
  • y^i\hat{y}_iy^i 表示根据拟合直线和x𝑖 对𝑦𝑖 的预测值 y^i=b1+b2xi\hat{y}_i=b_1+b_2x_iy^i=b1+b2xi
  • 定义 e𝑖=𝑦𝑖−y^ie𝑖_ =𝑦_𝑖− \hat{y}_iei=yiy^i 为误差项

image.png
目标:得到一条直线使得对于所有训练样例的误差项尽可能小

线性回归的基本假设

为了确保线性回归模型的有效性,我们需要满足以下四个基本假设:

  1. 线性关系假设​:自变量与因变量间存在线性关系

  2. 独立性假设​:数据点之间相互独立

  3. 无共线性假设​:自变量之间无高度相关性,相互独立

  4. 正态性假设​:残差独立、等方差,且符合正态分布

这些假设是线性回归模型成立的基础,在实际应用中需要通过各种统计检验来验证这些假设是否得到满足。

损失函数:衡量模型好坏的标准

在回归分析中,损失函数用于量化预测值与真实值之间的差异。常见的损失函数包括:

  • 所有误差项的加和:∑i=1nei=∑i=1n(yi−yi^)\sum_{i=1}^n e_i = \sum_{i=1}^n(y_i-\hat{y_i})i=1nei=i=1n(yiyi^)

  • 所有误差项绝对值的加和:∑i=1n∣ei∣=∑i=1n∣(yi−yi^)∣\sum_{i=1}^n |e_i| = \sum_{i=1}^n|(y_i-\hat{y_i})|i=1nei=i=1n(yiyi^)

然而最常用的是基于误差平方和的损失函数,因为它具有良好的数学性质且便于优化。

min⁡b1,b2∑i=1nei2=∑i=1n(yi−y^i)2=∑i=1n(yi−b1−b2xi)2 \begin{aligned} \min_{b_{1}, b_{2}} \sum_{i=1}^{n} e_{i}^{2} &= \sum_{i=1}^{n} (y_{i} - \hat{y}_{i})^{2} \\ &= \sum_{i=1}^{n} (y_{i} - b_{1} - b_{2} x_{i})^{2} \end{aligned} b1,b2mini=1nei2=i=1n(yiy^i)2=i=1n(yib1b2xi)2

最小二乘法:求解最优参数

最小二乘法是一种凸优化方法,用于求解最优的截距和斜率参数。通过最小化误差平方和,我们可以得到最佳的参数估计值。

具体求解过程中,我们需要计算自变量和因变量的均值,然后通过公式计算斜率参数。这种方法保证了我们得到的解是全局最优解,而非局部最优。

对误差平方和分别求偏导并令其为零:

∂∑i=1nei2∂b1=−2∑i=1n(yi−b1−b2xi)=0(1) \frac{\partial \sum_{i=1}^{n} e_{i}^{2}}{\partial b_{1}} = -2\sum_{i=1}^{n} \left(y_{i}-b_{1}-b_{2} x_{i}\right) = 0 \tag{1} b1i=1nei2=2i=1n(yib1b2xi)=0(1)

∂∑i=1nei2∂b2=−2∑i=1nxi(yi−b1−b2xi)=0(2) \frac{\partial \sum_{i=1}^{n} e_{i}^{2}}{\partial b_{2}} = -2\sum_{i=1}^{n} x_{i}\left(y_{i}-b_{1}-b_{2} x_{i}\right) = 0 \tag{2} b2i=1nei2=2i=1nxi(yib1b2xi)=0(2)

参数估计解

求解上述正规方程组得到回归系数估计量:

b2=∑i=1n(xi−xˉ)(yi−yˉ)∑i=1n(xi−xˉ)2 b_{2} = \frac{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)}{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}} b2=i=1n(xixˉ)2i=1n(xixˉ)(yiyˉ)

b1=yˉ−b2xˉ b_{1} = \bar{y} - b_{2}\bar{x} b1=yˉb2xˉ

其中:

  • b1b_1b1 为截距项估计量
  • b2b_2b2 为斜率项估计量
  • xˉ=1n∑i=1nxi\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_ixˉ=n1i=1nxi 为自变量样本均值
  • yˉ=1n∑i=1nyi\bar{y} = \frac{1}{n}\sum_{i=1}^{n} y_iyˉ=n1i=1nyi 为因变量样本均值
  • nnn 为样本容量

梯度下降法:迭代优化的艺术

除了最小二乘法,梯度下降法提供了另一种参数求解途径。这种方法通过迭代更新参数值,逐步逼近最优解。

梯度下降法的核心思想是沿着损失函数的负梯度方向更新参数。初始化参数值后,重复以下步骤直到收敛:计算梯度,然后按照学习率调整参数值。

算法步骤

  • 初始化 b1,b2b_1, b_2b1,b2 , 可以通过random随机初始化

  • 重复

    • b1=b1−αb_1 = b_1 - \alphab1=b1α
    • b2=b2−αb_2 = b_2 - \alphab2=b2α

简单示例:

import numpy as np
# 生成模拟数据
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1) # 真实关系: y = 4 + 3x + 噪声# 初始化参数 (对应您图片中的 b1, b2,这里我们用 w 和 b)
w = np.random.randn(1) # 权重,可以理解为b1
b = np.zeros(1)        # 偏置,可以理解为b2# 设置超参数
learning_rate = 0.1    # 学习率 α
n_iterations = 1000    # 最大迭代次数# 梯度下降开始
for i in range(n_iterations):# 1. 计算预测值y_pred = w * X + b# 2. 计算损失(MSE),用于监控loss = np.mean((y_pred - y)**2)if i % 100 == 0:print(f"Iteration {i}: Loss = {loss:.4f}")# 3. 计算梯度!(这是图片中缺失的关键步骤)# 损失函数 J 对 w 的偏导数dw = (2 / len(X)) * np.sum((y_pred - y) * X)# 损失函数 J 对 b 的偏导数db = (2 / len(X)) * np.sum(y_pred - y)# 4. 同时更新参数 w 和 b!(对应图片中的更新步骤,但补全了梯度项)w = w - learning_rate * dwb = b - learning_rate * db
# 输出最终结果
print(f"\n训练完成!")
print(f"真实函数: y = 4 + 3 * x")
print(f"学习到的函数: y = {b[0]:.4f} + {w[0]:.4f} * x")

执行结果:
image.png

这种方法特别适用于大规模数据集和在线学习场景,因为它可以逐样本更新模型参数。

多元线性回归:处理复杂关系

当因变量有多个时,我们需要使用多元线性回归。这时矩阵表示法就显得格外重要。

1d665e029ea846b20561f8cb40c33017-image.png

多元线性回归的矩阵表示为:Y=Xβ+ϵ

参数估计的推导(法一)

此时误差项向量 e 定义为真实值 y 与预测值 的差值:

e=[e1e2⋮en]=y−Xβ e = \begin{bmatrix} e_{1} \\ e_{2} \\ \vdots \\ e_{n} \end{bmatrix} = y - X \beta e=e1e2en=y

损失函数定义为所有误差项的平方和(Sum of Squared Errors, SSE),它可以简洁地用向量转置表示为:

∑i=1nei2=e′e \sum_{i=1}^{n} e_{i}^{2} = e'e i=1nei2=ee

(其中 e′e'e 表示向量 eee 的转置)

求解最小二乘估计
为了找到使损失函数最小的参数 β\betaβ,我们对其求导并令导数为零:

∂e′e∂β=−2X′Y+2X′Xβ=0 \frac{\partial e' e}{\partial \beta} = -2 X' Y + 2 X' X \beta = 0 βee=2XY+2X=0

解析解(正规方程)
通过求解上述方程,可以得到参数 β\betaβ 的最优解,即著名的正规方程

β=(X′X)−1X′Y \beta = (X' X)^{-1} X' Y β=(XX)1XY

其中Y是因变量向量,X是自变量矩阵,β是系数向量,ε是误差项。基于这种表示,损失函数可以写为误差平方和的形式。

通过求解正规方程,我们可以得到系数的最优估计:β=(X′X)−1X′Y

参数估计的推导(法二)

1. 问题定义与目标

用一组参数 β0,β1,…,βk\beta_0, \beta_1, \dots, \beta_kβ0,β1,,βk 来拟合因变量 yyy,模型形式如下:

yi=β0+β1xi1+β2xi2+⋯+βkxik+ϵi y_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \dots + \beta_k x_{ik} + \epsilon_i yi=β0+β1xi1+β2xi2++βkxik+ϵi

其中:

  • yiy_iyi 是第 iii 个观测的因变量值。
  • xi1,...,xikx_{i1}, ..., x_{ik}xi1,...,xik 是第 iii 个观测的自变量值。
  • β0\beta_0β0 是截距项。
  • β1,...,βk\beta_1, ..., \beta_kβ1,...,βk 是各自变量的系数。
  • ϵi\epsilon_iϵi 是第 iii 个观测无法被模型解释的随机误差。

模型的预测值为:
y^i=β0+β1xi1+β2xi2+⋯+βkxik \hat{y}_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \dots + \beta_k x_{ik} y^i=β0+β1xi1+β2xi2++βkxik

iii 个观测的残差 eie_iei 为真实值与预测值之差:
ei=yi−y^i=yi−(β0+β1xi1+⋯+βkxik) e_i = y_i - \hat{y}_i = y_i - (\beta_0 + \beta_1 x_{i1} + \dots + \beta_k x_{ik}) ei=yiy^i=yi(β0+β1xi1++βkxik)

2. 目标函数:残差平方和(SSE)

普通最小二乘法的目标是找到一组参数 β\betaβ,使得所有观测的残差平方和最小。残差平方和定义为:

∑i=1nei2=∑i=1n(yi−β0−β1xi1−⋯−βkxik)2 \sum_{i=1}^{n} e_{i}^{2} = \sum_{i=1}^{n} (y_{i} - \beta_{0} - \beta_{1} x_{i1} - \dots - \beta_{k} x_{ik})^{2} i=1nei2=i=1n(yiβ0β1xi1βkxik)2

目标:最小化 SSE(β0,β1,…,βk)\text{SSE}(\beta_0, \beta_1, \dots, \beta_k)SSE(β0,β1,,βk)

3. 求解方法:对参数求偏导并令其为0

为了找到最小值点,我们对目标函数(SSE)分别关于每个参数 βj\beta_jβj 求偏导数,并令其等于零。这会得到一个由 k+1k+1k+1 个方程组成的方程组(正规方程组)。

偏导过程

  • 对截距项 β0\beta_0β0 求偏导
    ∂SSE∂β0=−2∑i=1n(yi−β0−β1xi1−⋯−βkxik)=0\frac{\partial SSE}{\partial \beta_0} = -2 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_{i1} - \dots - \beta_k x_{ik}) = 0β0SSE=2i=1n(yiβ0β1xi1βkxik)=0
    化简得:
    ∑i=1n(yi−β0−β1xi1−⋯−βkxik)=0 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_{i1} - \dots - \beta_k x_{ik}) = 0 i=1n(yiβ0β1xi1βkxik)=0

  • 对第一个系数 β1\beta_1β1 求偏导
    ∂SSE∂β1=−2∑i=1n[(yi−β0−β1xi1−⋯−βkxik)⋅xi1]=0\frac{\partial SSE}{\partial \beta_1} = -2 \sum_{i=1}^{n} [(y_i - \beta_0 - \beta_1 x_{i1} - \dots - \beta_k x_{ik}) \cdot x_{i1}] = 0β1SSE=2i=1n[(yiβ0β1xi1βkxik)xi1]=0
    化简得:
    ∑i=1n[(yi−β0−β1xi1−⋯−βkxik)⋅xi1]=0 \sum_{i=1}^{n} [(y_i - \beta_0 - \beta_1 x_{i1} - \dots - \beta_k x_{ik}) \cdot x_{i1}] = 0 i=1n[(yiβ0β1xi1βkxik)xi1]=0

  • 对第 kkk 个系数 βk\beta_kβk 求偏导
    ∂SSE∂βk=−2∑i=1n[(yi−β0−β1xi1−⋯−βkxik)⋅xik]=0\frac{\partial SSE}{\partial \beta_k} = -2 \sum_{i=1}^{n} [(y_i - \beta_0 - \beta_1 x_{i1} - \dots - \beta_k x_{ik}) \cdot x_{ik}] = 0βkSSE=2i=1n[(yiβ0β1xi1βkxik)xik]=0
    化简得:
    ∑i=1n[(yi−β0−β1xi1−⋯−βkxik)⋅xik]=0 \sum_{i=1}^{n} [(y_i - \beta_0 - \beta_1 x_{i1} - \dots - \beta_k x_{ik}) \cdot x_{ik}] = 0 i=1n[(yiβ0β1xi1βkxik)xik]=0

方程组总结
∑(yi−β0−β1xi1−⋯−βkxik)=0∑(yi−β0−β1xi1−⋯−βkxik)xi1=0⋯∑(yi−β0−β1xi1−⋯−βkxik)xik=0 \begin{array}{l} \sum (y_{i} - \beta_{0} - \beta_{1} x_{i1} - \dots - \beta_{k} x_{ik}) = 0 \\ \sum (y_{i} - \beta_{0} - \beta_{1} x_{i1} - \dots - \beta_{k} x_{ik}) x_{i1} = 0 \\ \cdots \\ \sum (y_{i} - \beta_{0} - \beta_{1} x_{i1} - \dots - \beta_{k} x_{ik}) x_{ik} = 0 \end{array} (yiβ0β1xi1βkxik)=0(yiβ0β1xi1βkxik)xi1=0(yiβ0β1xi1βkxik)xik=0

4. 转化为矩阵形式

为了更简洁地求解,我们将上述方程组用矩阵表示。

定义矩阵和向量:

  • 设计矩阵 XXX:在数据矩阵前加一列1,以包含截距项 β0\beta_0β0
    X=[1x11⋯x1k1x21⋯x2k⋮⋮⋱⋮1xn1⋯xnk]n×(k+1) X = \begin{bmatrix} 1 & x_{11} & \cdots & x_{1k} \\ 1 & x_{21} & \cdots & x_{2k} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n1} & \cdots & x_{nk} \end{bmatrix}_{n \times (k+1)} X=111x11x21xn1x1kx2kxnkn×(k+1)
  • 参数向量 β\betaβ
    β=[β0,β1,…,βk]T\beta = [\beta_0, \beta_1, \dots, \beta_k]^Tβ=[β0,β1,,βk]T
  • 因变量向量 yyy
    y=[y1,y2,…,yn]Ty = [y_1, y_2, \dots, y_n]^Ty=[y1,y2,,yn]T
  • 残差向量 eee
    e=[e1,e2,…,en]T=y−Xβe = [e_1, e_2, \dots, e_n]^T = y - X\betae=[e1,e2,,en]T=y

此时,残差平方和可以写为:
SSE=eTe=(y−Xβ)T(y−Xβ) SSE = e^Te = (y - X\beta)^T(y - X\beta) SSE=eTe=(y)T(y)

对方程组 ∑eixij=0\sum e_i x_{ij} = 0eixij=0(对于所有 jjj,包括 xi0=1x_{i0}=1xi0=1)进行矩阵化,等价于:
XTe=0 X^T e = 0 XTe=0

e=y−Xβe = y - X\betae=y 代入上式:
XT(y−Xβ)=0 X^T (y - X\beta) = 0 XT(y)=0
这被称为正规方程

5. 推导解析解(闭式解)

由正规方程出发:
XTy−XTXβ=0 X^T y - X^T X \beta = 0 XTyXT=0

移项得:
XTXβ=XTy X^T X \beta = X^T y XT=XTy

最后,假设 XTXX^T XXTX 是可逆的(即满秩),我们在等式两边左乘其逆矩阵 (XTX)−1(X^T X)^{-1}(XTX)1,即可得到参数向量 β\betaβ 的最小二乘估计量:

β=(XTX)−1XTy \beta = (X^T X)^{-1} X^T y β=(XTX)1XTy

以“误差平方和”为损失函数的优缺点

  • 用误差平方和作为损失函数有很多优点
    • 损失函数是严格的凸函数,有唯一解
    • 求解过程简单且容易计算
  • 同时也伴随着一些缺点
    • 结果对数据中的“离群点”(outlier)非常敏感
      • 解决方法:提前检测离群点并去除
    • 损失函数对于超过和低于真实值的预测是等价的
      • 但有些真实情况下二者带来的影响是不同的

模型评估:相关系数与决定系数

为了评估回归模型的质量,我们引入两个重要指标:

1. 相关系数r​:衡量因变量和自变量之间的线性相关程度,计算公式基于协方差和标准差。

r=1n−1∑i=1n(xi−xˉsx)(yi−yˉsy) r = \frac{1}{n - 1} \sum_{i = 1}^{n} \left( \frac{x_{i} - \bar{x}}{s_{x}} \right) \left( \frac{y_{i} - \bar{y}}{s_{y}} \right) r=n11i=1n(sxxixˉ)(syyiyˉ)

其中:

  • xˉ\bar{x}xˉ: X 的均值
  • sxs_{x}sx: X 的标准差
  • yˉ\bar{y}yˉ: Y 的均值
  • sys_{y}sy: Y 的标准差

标准差的计算公式:
sx=1n−1∑(xi−xˉ)2 s_x = \sqrt{\frac{1}{n - 1} \sum (x_i - \bar{x})^2} sx=n11(xixˉ)2

2. 决定系数R²​:也称为判定系数拟合优度,计算公式为:

R2=1−∑i(yi−y^i)2∑i(yi−yˉ)2 R^{2} = 1 - \frac{\sum_{i} (y_{i} - \hat{y}_{i})^{2}}{\sum_{i} (y_{i} - \bar{y})^{2}} R2=1i(yiyˉ)2i(yiy^i)2

等价形式
R2=1−∑i(yi−y^i)2/n∑i(yi−yˉ)2/n=1−MSEVAR R^{2} = 1 - \frac{\sum_{i} (y_{i} - \hat{y}_{i})^{2}/n}{\sum_{i} (y_{i} - \bar{y})^{2}/n} = 1 - \frac{MSE}{VAR} R2=1i(yiyˉ)2/ni(yiy^i)2/n=1VARMSE

变量说明

  • yiy_{i}yi:第 iii 个观测的真实值
  • y^i\hat{y}_{i}y^i:第 iii 个观测的预测值
  • yˉ\bar{y}yˉ:因变量 yyy 的均值
  • MSEMSEMSE:均方误差(Mean Squared Error)
  • VARVARVAR:因变量的方差(Variance)

重要性质与注意事项

决定系数的取值范围

  • 理论范围−∞<R2≤1-\infty < R^2 \leq 1<R21
  • 常见范围:在实际应用中通常为 0≤R2≤10 \leq R^2 \leq 10R21
  • 特殊情况R2R^2R2 可能小于 0,这表示模型比直接用均值预测的效果还要差

与相关系数的关系
重要区分R2R^2R2 不是相关系数 rrr 的平方

  • R2R^2R2 衡量的是模型对因变量变异的解释程度
  • rrr 衡量的是两个变量之间的线性相关强度

统计意义解释

核心解释
R2R^2R2 衡量了回归模型对数据的解释程度,具体来说:

yyy 的波动有多少百分比能够被 xxx 的波动所描述

数值含义

  • R2R^2R2 接近 1:表示回归分析中自变量对因变量的解释能力很好
  • R2R^2R2 接近 0:表示自变量对因变量的解释能力很弱

总结R2R^2R2 是一个重要的回归诊断工具,但需要谨慎解读,避免将统计相关性误解为因果关系。

决定系数衡量了模型对数据变动的解释程度,表示y的波动有多少百分比能被x的波动所描述。R²越接近1,表示自变量对因变量的解释越好。

但需要特别注意:​变量相关并不等于存在因果关系。这是一个在解释回归分析结果时经常被忽视的重要原则。

总结

回归分析作为描述变量间关系的统计分析方法,在机器学习中占有重要地位。从简单线性回归到多元线性回归,从最小二乘法到梯度下降法,回归分析提供了丰富的工具箱来处理各种预测问题。

通过相关系数和决定系数,我们可以量化评估模型性能,但同时也要警惕相关性与因果关系的区别。回归分析不仅是一个技术工具,更是一种数据思维的方式,帮助我们从数据中发现规律,做出更科学的决策。

无论是学术研究还是商业应用,掌握回归分析都是数据科学家的必备技能。随着大数据时代的到来,回归分析的价值将会更加凸显。

http://www.dtcms.com/a/465972.html

相关文章:

  • 如何起手做网站项目提高索引量的方法
  • JDBC初识
  • 用已存在的虚拟环境建立一个新项目(配置解释器)
  • 湖南省住房和城乡建设厅门户网站seo排名优化软件价格
  • Linux 系统启动过程详解
  • 死信队列vs延迟队列
  • 给实体店老板做的网站怎么网站排名seo
  • 商务网站建设毕业设计成都网站建设公司排行
  • 基于体素密度的几何重要性剔除(Voxel Density Culling)
  • 卷积神经网络详解
  • Redission
  • 前端框架深度解析:Vue 从入门到实战,掌握渐进式开发核心
  • 从暴力到滑动窗口全解析——力扣8. 字符串转换整数 (atoi)
  • 迅为RK3562开发板Android 系统动态替换开机logo的实现-替换logo
  • 基于Springboot + vue3实现的校园闲置物品交易平台
  • 学校网站 制作wordpress图片时间
  • MySQL分区分表实现方法详解
  • 缠论工具czsc快速使用入门(二)
  • Android 14 Input 事件派发机制深度剖析
  • 苏州做网站外包的公司有哪些许昌做网站团队
  • android 屏幕适配
  • ESP32开发:从Wi-Fi连接到MQTT通信
  • Linux工作队列workqueue的实现
  • 模板建站和开发网站区别wordpress 页面瀑布流
  • [C# starter-kit] 身份验证与授权 Identity JWT
  • C#通讯关键类的API
  • 网站开发说明书天元建设集团有限公司申请破产了吗
  • 分布式单例模式在微服务架构中的关键作用与实践
  • 网站footer模板建设银行甘肃省行网站
  • 网站建设和电商区别wordpress创建角色