线性模型——从简单到强大
兔狲教授的提示:线性模型是机器学习的基石。它们简单、可解释、计算高效,并且在许多实际问题中表现出色。更重要的是,理解线性模型是理解更复杂模型(如神经网络)的关键。从线性回归到支持向量机,从主成分分析到深度学习,线性思维贯穿整个机器学习领域。
词条1:线性回归基础
官方解释
线性回归模型:
矩阵形式:
:响应向量 :设计矩阵(包含截距项) :系数向量 :误差向量
最小二乘估计:
解析解:如果
兔狲老师解释
线性回归是'用直线拟合数据'。
小小猪举了个例子:房价预测:
:房价 :面积 :卧室数 :到市中心距离 - 模型:房价
- 解释:
是面积每增加1平米,房价平均增加 元
几何解释:
是 维空间中的点 的列张成子空间 是 在该子空间上的投影 - 残差
垂直于该子空间
模型评估:
:解释的变异比例, - 调整
:考虑变量数的惩罚 - 残差分析:检查模型假设
思考题1:动手题
问题:对简单线性回归(
- 推导
和 的公式 - 证明:
- 证明:
,
问题:用矩阵方法求解多元线性回归:
思考题2:动脑题
问题:线性回归的假设有哪些?如果违反这些假设怎么办?
思考方向:
- 线性关系
- 误差独立同分布
- 同方差性
- 无多重共线性
- 正态性(对推断)
词条2:正则化与稀疏性
官方解释
过拟合:模型在训练集上表现好,在测试集上表现差。
正则化:在损失函数中添加惩罚项,控制模型复杂度。
岭回归(L2正则化):
LASSO(L1正则化):
弹性网:结合L1和L2惩罚。
兔狲老师解释
正则化是'防止模型太复杂'。
小海豹举了个例子:多项式回归:
- 用高阶多项式拟合数据:可能过拟合(穿过每个点)
- 加入正则化:惩罚大系数,得到更平滑的曲线
控制正则化强度: (无正则化), (系数 )
LASSO的特性:
- 产生稀疏解(一些系数恰好为0)
- 自动特征选择
- 解路径是分段线性的
岭回归的特性:
- 收缩系数但不置零
- 改善条件数(
总是可逆) - 有解析解:
思考题1:动手题
问题:比较岭回归和LASSO:
- 对正交设计矩阵(
),推导两种估计的闭式解 - 分析解的性质(收缩、阈值)
- 绘制系数路径(系数随
变化)
问题:实现坐标下降法求解LASSO。
思考题2:动脑题
问题:为什么LASSO能产生稀疏解而岭回归不能?从几何角度解释。
思考方向:
- 损失函数等高线
- 约束区域的形状(L1球 vs L2球)
- 角点解的概率
词条3:逻辑回归与分类
官方解释
逻辑回归:用于二分类,
对数几率:
损失函数:交叉熵损失
最大似然估计:
多分类:softmax回归。
兔狲老师解释
逻辑回归是"用S形曲线分类"。
兔狲教授举例说:垃圾邮件分类:
:邮件特征(词频等) :垃圾邮件, :正常邮件 :是垃圾邮件的概率 - 决策规则:如果
,分类为垃圾邮件
Sigmoid函数
- 将实数
映射到 - 导数简单:
- 连接线性模型和概率
模型解释:
- 系数
:特征 增加1单位,对数几率增加 - 优势比:
, 增加1单位,优势乘以 - 特征重要性:
大小
思考题1:动手题
问题:推导逻辑回归的梯度:
- 写出似然函数
- 取对数得到对数似然
- 对
求梯度 - 用梯度下降法求解
问题:实现逻辑回归:
- 生成合成数据(两个高斯分布)
- 用梯度下降训练
- 绘制决策边界
- 计算准确率
思考题2:动脑题
问题:逻辑回归和线性判别分析(LDA)有什么区别?各有什么优缺点?
思考方向:
- 生成模型 vs 判别模型
- 假设不同(LDA假设类条件分布为高斯)
- 计算复杂度
- 在实践中的表现
词条4:支持向量机(SVM)
官方解释
最大间隔分类器:寻找分离超平面,使到最近点的距离(间隔)最大。
支持向量:距离超平面最近的点,决定超平面位置。
硬间隔SVM(线性可分):
软间隔SVM(允许误分类):
对偶问题:
兔狲老师解释
SVM是'找到最宽的道路'。
小小猪的比喻:分类像在两地间修路:
- 硬间隔:路要完全分开两地,且尽量宽
- 软间隔:允许一些点进入路中(误分类),但惩罚
- 支持向量:路边的建筑物,决定路宽
参数:平衡路宽和误分类的容忍度
核技巧:
- 将数据映射到高维空间
- 在高维空间中线性的,在原空间非线性
- 常用核:多项式核、高斯核(RBF)
- 计算只需核函数,不需显式映射
SVM特性:
- 基于间隔最大化,有好的泛化理论
- 解稀疏(只依赖支持向量)
- 对高维数据有效
- 核方法处理非线性
思考题1:动手题
问题:推导SVM对偶问题:
- 写出拉格朗日函数
- 求对偶函数
- 得到对偶问题
- 从对偶解恢复原始解
问题:实现线性SVM:
- 用二次规划求解器
- 可视化决策边界和间隔
- 标记支持向量
思考题2:动脑题
问题:为什么SVM对高维数据有效?从统计学习理论角度解释。
思考方向:
- VC维与间隔的关系
- 结构风险最小化
- 大间隔分类器的泛化误差界
词条5:降维与主成分分析(PCA)
官方解释
主成分分析:寻找数据方差最大的方向。
第一主成分:
求解:对协方差矩阵
降维:保留前
重建误差:
兔狲老师解释
PCA是'旋转坐标轴看数据'。
小海豹举了个例子:学生成绩数据:
- 原始特征:数学、物理、化学成绩
- 这些特征相关(数学好的往往物理也好)
- PCA找到新坐标轴:
- PC1:综合能力(各科都高)
- PC2:文理倾向(理科vs文科)
- PC3:可能噪声或特殊能力
- 用PC1和PC2就能捕捉大部分信息
PCA应用:
- 数据可视化:高维数据降到2D/3D
- 去噪:去掉小特征值对应的成分
- 特征提取:用于后续机器学习
- 白化:使特征不相关且方差为1
与线性回归对比:
- 线性回归:最小化垂直距离(
方向) - PCA:最小化垂直距离(所有方向)
- 线性回归有响应变量,PCA无监督
思考题1:动手题
问题:对数据矩阵
- 计算协方差矩阵
- 特征值分解
- 计算每个主成分的方差解释比例
- 选择
使累计解释比例
问题:实现PCA:
- 中心化数据
- 计算SVD(
) - 主成分是
的列 - 降维:
思考题2:动脑题
问题:PCA和自编码器有什么关系?深度学习中的表示学习如何扩展PCA思想?
思考方向:
- 线性自编码器等价于PCA
- 非线性自编码器
- 变分自编码器(VAE)
- 对比学习中的表示
词条6:线性模型在深度学习中的角色
官方解释
神经网络:多个线性变换加非线性激活的堆叠。
全连接层:
卷积层:线性滤波操作。
注意力机制:加权线性组合。
残差连接:
兔狲老师解释
深度学习是'线性模型的堆叠与组合'。
兔狲教授举例说:多层感知机(MLP):
- 输入层
隐藏层: , - 隐藏层
输出层: , - 每个层都是线性变换+非线性
线性vs非线性:
- 只有线性:还是线性模型(无论多少层)
- 加入非线性:可以近似任意函数(通用近似定理)
- 深度:增加表示能力,减少参数
现代架构中的线性:
- Transformer:
的线性投影 - 卷积神经网络:卷积是局部线性操作
- 图神经网络:邻接矩阵的线性传播
- 扩散模型:线性噪声调度
思考题1:动手题
问题:分析简单神经网络的线性部分:
- 2层网络:输入
,隐藏层 ,输出 - 写出所有线性变换的矩阵形式
- 计算参数数量
- 如果没有非线性,证明整个网络是线性的
问题:实现线性层的前向和反向传播:
- 前向:
- 反向:计算
, ,
思考题2:动脑题
问题:为什么深度学习中需要非线性激活函数?如果只有线性变换会怎样?
思考方向:
- 线性变换的复合还是线性
- 表示能力的限制
- 深度带来的优势消失
- 实际中的激活函数选择
总结:线性的力量
兔狲教授总结道:线性模型是机器学习的基础和起点:
- 简单性:易于理解和实现
- 可解释性:系数有明确意义
- 高效性:计算快速,适合大规模数据
- 基准性:作为复杂模型的比较基准
- 基础性:复杂模型的核心构件
从线性模型到深度学习:
- 连续性:神经网络是线性模型的自然扩展
- 模块性:线性层是神经网络的基本模块
- 理论性:线性理论为非线性提供直觉
- 实践性:线性方法在实际中仍然有效
掌握线性思维,你就掌握了:
- 建模直觉:理解特征与响应的关系
- 算法理解:从简单到复杂的自然过渡
- 实践技能:解决实际问题的可靠工具
- 理论深度:深入理解机器学习的数学基础
小小猪的体会:原来复杂的深度学习建立在简单的线性模型之上!
小海豹的反思:线性模型的可解释性让我理解了机器学习不仅仅是黑箱。
兔狲教授最后的话:不要因为简单而轻视线性模型。在机器学习的世界里,简单往往是深刻的开始,线性往往是理解非线性的钥匙。从线性出发,你就能理解整个机器学习的大厦是如何建造的。
