本文是周志华《机器学习》(西瓜书)第3章 线性模型(Linear Models)的学习笔记,涵盖本章所有核心知识点,配有通俗类比与公式推导。
1基本形式
线性模型试图学得一个通过属性的线性组合来进行预测的函数:
📐 公式
f(x)=w1x1+w2x2+⋯+wdxd+b=w⊤x+b
其中 w=(w1,…,wd) 是权重向量,b 是偏置(bias),x 是 d 维样本向量。
📌 核心定义
核心思想:用一条直线(二维)、一个平面(三维)、一个超平面(高维)去拟合数据。简单、可解释性强 —— 每个 wi 直接反映了对应属性 xi 对预测结果的影响大小和方向。
🍉 通俗类比
你可以把线性模型想象成打分卡:每个特征 xi 是一道题得分,权重 wi 是这道题的分值系数,b 是基础分(不管答得怎样都有这个底分),最后的 f(x) 就是总分。模型学习的过程,就是根据历史成绩单反推出每道题应该值多少分。
2线性回归
2.1 最小二乘法
对于回归任务,最经典的策略是最小化均方误差(MSE):
📐 公式
w^∗=argw^min(y−Xw^)⊤(y−Xw^)
对 w^ 求导并令其为 0,得到闭式解:
📐 公式
w^∗=(X⊤X)−1X⊤y
🍉 通俗类比
想象你要用一条直线拟合散点图上的数据点。最小二乘法就是在找让所有点到这条直线的竖直距离平方和最小的那条线。如果所有点都完美在直线上,MSE = 0。
2.2 广义线性模型
把线性模型的预测结果通过单调可微函数 g(⋅) 连接:
📐 公式
y=g−1(w⊤x+b)
g(⋅) 称为**"联系函数"**。它让线性回归可以扩展到更广的场景。
2.3 正则化
当特征数多或存在共线性时,X⊤X 可能不可逆。正则化引入额外约束:
| 类型 |
惩罚项 |
效果 |
| 岭回归 (L2) |
λ∥w∥22 |
收缩系数,但不为零 —— 所有特征都保留 |
| Lasso (L1) |
λ∥w∥1 |
产生稀疏解 —— 部分 wi=0,天然做特征选择 |
| 弹性网 |
λ1∥w∥1+λ2∥w∥22 |
两者兼顾 |
💡 技巧提示
实用技巧:先跑 Lasso 筛掉明显无用的特征,再用岭回归在剩下的特征上精调,实践中非常有效。
3对数几率回归(逻辑回归)
虽然名字带”回归”,但它是分类模型。用 sigmoid 函数把线性输出压缩到 [0,1]:
📐 公式
P(y=1∣x)=σ(w⊤x+b)=1+e−(w⊤x+b)1
重写可得对数几率的线性形式(Logit):
📐 公式
lnP(y=0∣x)P(y=1∣x)=w⊤x+b
🍉 通俗类比
逻辑回归就像裁判打分。裁判给每个选手一个原始分数(w⊤x+b),然后 sigmoid 把这个分数转化成**”晋级的概率”**。如果概率 > 0.5,晋级;概率 < 0.5,淘汰。
极大似然估计求解
目标是最小化交叉熵损失(对数似然的相反数):
📐 公式
ℓ(w)=−i=1∑m[yilny^i+(1−yi)ln(1−y^i)]
用梯度下降或牛顿法迭代求解(没有闭式解)。
⚠️ 注意事项
注意:逻辑回归只解决二分类问题。多分类需要扩展为 Softmax 回归(Multinomial Logistic Regression)。
4线性判别分析 LDA
LDA(Linear Discriminant Analysis)的视角很独特:找到一个投影方向,让同类别投影点尽可能近、异类别投影点尽可能远。
推导
- 类内散度矩阵 Sw=∑k=1K∑x∈Ck(x−μk)(x−μk)⊤
- 类间散度矩阵 Sb=∑k=1Kmk(μk−μ)(μk−μ)⊤
- 最大化广义瑞利商:J=w⊤Swww⊤Sbw
- 等价于广义特征值问题:Sbw=λSww,取最大 d′ 个特征值的特征向量
🍉 通俗类比
LDA 就像一个舞台灯光师:他要找一个最佳照射角度(投影方向),让台上的每个演员群体(类别)各自聚在一起(类内紧凑),同时不同群体之间拉开距离(类间分散)。
💡 技巧提示
LDA 也可以做分类:投影后,新样本离哪个类的均值最接近就分到哪一类。
5多分类学习
很多二分类器不能直接处理多类问题,需要用拆解策略。
| 策略 |
做法 |
分类器数 |
特点 |
| OvO (一对一) |
每对类别训练一个分类器 |
K(K−1)/2 |
每个分类器只涉及两个类,训练快但总数多 |
| OvR (一对其余) |
每个类 vs 其他所有类 |
K |
总数少,但每个分类器用全部数据 |
| MvM (多对多) |
选若干类作为正例,其余为反例 |
可调 |
最灵活,ECOC 是经典实现 |
ECOC(纠错输出码)
为每个类别分配一个编码向量(如 +1/-1),每个分类器只对应编码中的一”位”。预测时计算测试样本编码与各类编码的距离,取最近者。
💡 技巧提示
ECOC 的纠错能力来自编码的冗余性。即使部分分类器出错,只要总错误位数不太多,仍能正确分类 —— 和通信中的纠错码思想一脉相承。
6类别不平衡问题
当正反例数量悬殊时,分类器会偏向多数类。
三类解决策略
| 策略 |
方法 |
说明 |
| 再缩放 |
调整分类阈值 |
若正例少,降低正例判定的阈值:1−y′y′=1−yy×m+m− |
| 欠采样 |
减少多数类样本 |
如 EasyEnsemble(集成学习 + 欠采样) |
| 过采样 |
增加少数类样本 |
如 SMOTE(基于插值合成新样本,不是简单复制!) |
🍉 通俗类比
一个班里只有 3 个左撇子,99 个右撇子。如果模型学成”所有人都是右撇子”,正确率也有 97%。但这毫无意义!再缩放等于告诉模型”左撇子的1票顶右撇子33票”;过采样SMOTE就是根据现有左撇子生成一些”虚构的合理左撇子”来平衡比例。
7本章总结
| 模型 |
任务类型 |
损失函数 |
能否直接多分类 |
| 线性回归 |
回归 |
MSE |
— |
| 逻辑回归 |
二分类 |
交叉熵 |
Softmax 扩展 |
| LDA |
降维 + 可分类 |
最大化类间/类内比 |
天然支持 |
📌 核心定义
一句话总结:线性模型 = 属性的线性组合 + 联系函数。看似简单,但它是 SVM、神经网络、集成学习等一切后续内容的地基。理解线性模型,后面的路会好走很多。
📝 考试高频考点
- 线性回归的最小二乘闭式解推导条件与不可逆时的处理(正则化)
- 逻辑回归的损失函数(交叉熵 vs MSE,为什么不用MSE?)
- LDA 的优化目标(广义瑞利商)及其与 PCA 的区别
- L1 vs L2 正则化的几何直觉(菱形 vs 圆形约束域 → 稀疏性差异)
- 类别不平衡的三种处理策略及 SMOTE 原理