欢迎大家提Issue反馈问题或建议,建设推理王国!
Skip to content

线性模型——从简单到强大 ​

兔狲教授的提示:线性模型是机器学习的基石。它们简单、可解释、计算高效,并且在许多实际问题中表现出色。更重要的是,理解线性模型是理解更复杂模型(如神经网络)的关键。从线性回归到支持向量机,从主成分分析到深度学习,线性思维贯穿整个机器学习领域。

词条1:线性回归基础 ​

官方解释 ​

线性回归模型:y=β0+β1x1+⋯+βpxp+ε,其中 ε∼N(0,σ2)。

矩阵形式:y=Xβ+ε,其中:

  • y∈Rn:响应向量
  • X∈Rn×p:设计矩阵(包含截距项)
  • β∈Rp:系数向量
  • ε∈Rn:误差向量

最小二乘估计:β^=arg⁡minβ∥y−Xβ∥2

解析解:如果 XTX 可逆,β^=(XTX)−1XTy

兔狲老师解释 ​

线性回归是'用直线拟合数据'。

小小猪举了个例子:房价预测:

  • y:房价
  • x1:面积
  • x2:卧室数
  • x3:到市中心距离
  • 模型:房价 ≈β0+β1×面积+β2×卧室数+β3×距离
  • 解释:β1 是面积每增加1平米,房价平均增加 β1 元

几何解释:

  • y 是 n 维空间中的点
  • X 的列张成子空间
  • y^=Xβ^ 是 y 在该子空间上的投影
  • 残差 e=y−y^ 垂直于该子空间

模型评估:

  • R2:解释的变异比例,R2=1−SSE/SST
  • 调整 R2:考虑变量数的惩罚
  • 残差分析:检查模型假设

思考题1:动手题 ​

问题:对简单线性回归(p=1):

  1. 推导 β0 和 β1 的公式
  2. 证明:y^i=y¯+β^1(xi−x¯)
  3. 证明:∑iei=0,∑ixiei=0

问题:用矩阵方法求解多元线性回归: X=[[1,1,2],[1,2,3],[1,3,1]],y=[3,5,4] 计算 β^ 和 y^。

思考题2:动脑题 ​

问题:线性回归的假设有哪些?如果违反这些假设怎么办?

思考方向:

  • 线性关系
  • 误差独立同分布
  • 同方差性
  • 无多重共线性
  • 正态性(对推断)

词条2:正则化与稀疏性 ​

官方解释 ​

过拟合:模型在训练集上表现好,在测试集上表现差。

正则化:在损失函数中添加惩罚项,控制模型复杂度。

岭回归(L2正则化):β^ridge=arg⁡minβ∥y−Xβ∥2+λ∥β∥2

LASSO(L1正则化):β^lasso=arg⁡minβ∥y−Xβ∥2+λ∥β∥1

弹性网:结合L1和L2惩罚。

兔狲老师解释 ​

正则化是'防止模型太复杂'。

小海豹举了个例子:多项式回归:

  • 用高阶多项式拟合数据:可能过拟合(穿过每个点)
  • 加入正则化:惩罚大系数,得到更平滑的曲线
  • λ 控制正则化强度:λ=0(无正则化),λ→∞(系数 →0)

LASSO的特性:

  • 产生稀疏解(一些系数恰好为0)
  • 自动特征选择
  • 解路径是分段线性的

岭回归的特性:

  • 收缩系数但不置零
  • 改善条件数(XTX+λI 总是可逆)
  • 有解析解:β^=(XTX+λI)−1XTy

思考题1:动手题 ​

问题:比较岭回归和LASSO:

  1. 对正交设计矩阵(XTX=I),推导两种估计的闭式解
  2. 分析解的性质(收缩、阈值)
  3. 绘制系数路径(系数随 λ 变化)

问题:实现坐标下降法求解LASSO。

思考题2:动脑题 ​

问题:为什么LASSO能产生稀疏解而岭回归不能?从几何角度解释。

思考方向:

  • 损失函数等高线
  • 约束区域的形状(L1球 vs L2球)
  • 角点解的概率

词条3:逻辑回归与分类 ​

官方解释 ​

逻辑回归:用于二分类,P(y=1|x)=σ(βTx)=11+e−βTx

对数几率:log⁡P1−P=βTx,线性关系。

损失函数:交叉熵损失 L(β)=−∑i[yilog⁡pi+(1−yi)log⁡(1−pi)]

最大似然估计:β^=arg⁡maxβ∏ipiyi(1−pi)1−yi

多分类:softmax回归。

兔狲老师解释 ​

逻辑回归是"用S形曲线分类"。

兔狲教授举例说:垃圾邮件分类:

  • x:邮件特征(词频等)
  • y=1:垃圾邮件,y=0:正常邮件
  • P(y=1|x):是垃圾邮件的概率
  • 决策规则:如果 P>0.5,分类为垃圾邮件

Sigmoid函数 σ(z)=11+e−z:

  • 将实数 z 映射到 (0,1)
  • 导数简单:σ′(z)=σ(z)(1−σ(z))
  • 连接线性模型和概率

模型解释:

  • 系数 βj:特征 xj 增加1单位,对数几率增加 βj
  • 优势比:eβj,xj 增加1单位,优势乘以 eβj
  • 特征重要性:|βj| 大小

思考题1:动手题 ​

问题:推导逻辑回归的梯度:

  1. 写出似然函数
  2. 取对数得到对数似然
  3. 对 β 求梯度
  4. 用梯度下降法求解

问题:实现逻辑回归:

  1. 生成合成数据(两个高斯分布)
  2. 用梯度下降训练
  3. 绘制决策边界
  4. 计算准确率

思考题2:动脑题 ​

问题:逻辑回归和线性判别分析(LDA)有什么区别?各有什么优缺点?

思考方向:

  • 生成模型 vs 判别模型
  • 假设不同(LDA假设类条件分布为高斯)
  • 计算复杂度
  • 在实践中的表现

词条4:支持向量机(SVM) ​

官方解释 ​

最大间隔分类器:寻找分离超平面,使到最近点的距离(间隔)最大。

支持向量:距离超平面最近的点,决定超平面位置。

硬间隔SVM(线性可分):min∥w∥2/2,s.t. yi(wTxi+b)≥1

软间隔SVM(允许误分类):min∥w∥2/2+C∑iξi,s.t. yi(wTxi+b)≥1−ξi,ξi≥0

对偶问题:maxα∑iαi−12∑i∑jαiαjyiyjxiTxj,s.t. 0≤αi≤C,∑iαiyi=0

兔狲老师解释 ​

SVM是'找到最宽的道路'。

小小猪的比喻:分类像在两地间修路:

  • 硬间隔:路要完全分开两地,且尽量宽
  • 软间隔:允许一些点进入路中(误分类),但惩罚
  • 支持向量:路边的建筑物,决定路宽
  • C 参数:平衡路宽和误分类的容忍度

核技巧:

  • 将数据映射到高维空间
  • 在高维空间中线性的,在原空间非线性
  • 常用核:多项式核、高斯核(RBF)
  • 计算只需核函数,不需显式映射

SVM特性:

  • 基于间隔最大化,有好的泛化理论
  • 解稀疏(只依赖支持向量)
  • 对高维数据有效
  • 核方法处理非线性

思考题1:动手题 ​

问题:推导SVM对偶问题:

  1. 写出拉格朗日函数
  2. 求对偶函数
  3. 得到对偶问题
  4. 从对偶解恢复原始解

问题:实现线性SVM:

  1. 用二次规划求解器
  2. 可视化决策边界和间隔
  3. 标记支持向量

思考题2:动脑题 ​

问题:为什么SVM对高维数据有效?从统计学习理论角度解释。

思考方向:

  • VC维与间隔的关系
  • 结构风险最小化
  • 大间隔分类器的泛化误差界

词条5:降维与主成分分析(PCA) ​

官方解释 ​

主成分分析:寻找数据方差最大的方向。

第一主成分:w1=arg⁡max∥w∥=1Var(wTX)

求解:对协方差矩阵 Σ=XTX/(n−1) 做特征值分解。 主成分是特征向量,按特征值从大到小排序。

降维:保留前 k 个主成分,用它们表示数据。

重建误差:∥X−XWWT∥2,其中 W 是前 k 个特征向量。

兔狲老师解释 ​

PCA是'旋转坐标轴看数据'。

小海豹举了个例子:学生成绩数据:

  • 原始特征:数学、物理、化学成绩
  • 这些特征相关(数学好的往往物理也好)
  • PCA找到新坐标轴:
    • PC1:综合能力(各科都高)
    • PC2:文理倾向(理科vs文科)
    • PC3:可能噪声或特殊能力
  • 用PC1和PC2就能捕捉大部分信息

PCA应用:

  • 数据可视化:高维数据降到2D/3D
  • 去噪:去掉小特征值对应的成分
  • 特征提取:用于后续机器学习
  • 白化:使特征不相关且方差为1

与线性回归对比:

  • 线性回归:最小化垂直距离(y 方向)
  • PCA:最小化垂直距离(所有方向)
  • 线性回归有响应变量,PCA无监督

思考题1:动手题 ​

问题:对数据矩阵 X(已中心化):

  1. 计算协方差矩阵
  2. 特征值分解
  3. 计算每个主成分的方差解释比例
  4. 选择 k 使累计解释比例 >90%

问题:实现PCA:

  1. 中心化数据
  2. 计算SVD(X=UΣVT)
  3. 主成分是 V 的列
  4. 降维:Z=XV[:,:k]

思考题2:动脑题 ​

问题:PCA和自编码器有什么关系?深度学习中的表示学习如何扩展PCA思想?

思考方向:

  • 线性自编码器等价于PCA
  • 非线性自编码器
  • 变分自编码器(VAE)
  • 对比学习中的表示

词条6:线性模型在深度学习中的角色 ​

官方解释 ​

神经网络:多个线性变换加非线性激活的堆叠。

全连接层:z=Wx+b,然后 a=σ(z)

卷积层:线性滤波操作。

注意力机制:加权线性组合。

残差连接:xl+1=xl+F(xl),其中 F 包含线性变换。

兔狲老师解释 ​

深度学习是'线性模型的堆叠与组合'。

兔狲教授举例说:多层感知机(MLP):

  • 输入层 → 隐藏层:z1=W1x+b1,a1=ReLU(z1)
  • 隐藏层 → 输出层:z2=W2a1+b2,y^=softmax(z2)
  • 每个层都是线性变换+非线性

线性vs非线性:

  • 只有线性:还是线性模型(无论多少层)
  • 加入非线性:可以近似任意函数(通用近似定理)
  • 深度:增加表示能力,减少参数

现代架构中的线性:

  • Transformer:Q,K,V 的线性投影
  • 卷积神经网络:卷积是局部线性操作
  • 图神经网络:邻接矩阵的线性传播
  • 扩散模型:线性噪声调度

思考题1:动手题 ​

问题:分析简单神经网络的线性部分:

  1. 2层网络:输入 x∈Rd,隐藏层 h∈Rm,输出 y∈Rk
  2. 写出所有线性变换的矩阵形式
  3. 计算参数数量
  4. 如果没有非线性,证明整个网络是线性的

问题:实现线性层的前向和反向传播:

  1. 前向:z=Wx+b
  2. 反向:计算 ∂L/∂W,∂L/∂b,∂L/∂x

思考题2:动脑题 ​

问题:为什么深度学习中需要非线性激活函数?如果只有线性变换会怎样?

思考方向:

  • 线性变换的复合还是线性
  • 表示能力的限制
  • 深度带来的优势消失
  • 实际中的激活函数选择

总结:线性的力量 ​

兔狲教授总结道:线性模型是机器学习的基础和起点:

  1. 简单性:易于理解和实现
  2. 可解释性:系数有明确意义
  3. 高效性:计算快速,适合大规模数据
  4. 基准性:作为复杂模型的比较基准
  5. 基础性:复杂模型的核心构件

从线性模型到深度学习:

  • 连续性:神经网络是线性模型的自然扩展
  • 模块性:线性层是神经网络的基本模块
  • 理论性:线性理论为非线性提供直觉
  • 实践性:线性方法在实际中仍然有效

掌握线性思维,你就掌握了:

  • 建模直觉:理解特征与响应的关系
  • 算法理解:从简单到复杂的自然过渡
  • 实践技能:解决实际问题的可靠工具
  • 理论深度:深入理解机器学习的数学基础

小小猪的体会:原来复杂的深度学习建立在简单的线性模型之上!

小海豹的反思:线性模型的可解释性让我理解了机器学习不仅仅是黑箱。

兔狲教授最后的话:不要因为简单而轻视线性模型。在机器学习的世界里,简单往往是深刻的开始,线性往往是理解非线性的钥匙。从线性出发,你就能理解整个机器学习的大厦是如何建造的。