引言
1990 年代,新泽西州默里山的 AT&T 贝尔实验室里,上演着一场奇特的学术对决。同一栋楼里,Vladimir Vapnik 坚信支持向量机才是机器学习的正道,而走廊另一头的 Yann LeCun 则在默默研发神经网络。据说两人经常在走廊里争论不休——Vapnik 激昂地阐述 SVM 的数学之美,LeCun 则用实际应用来反驳。这场"走廊辩论"持续了整个 90 年代,而历史最终证明,两人都是对的。
那个年代,研究者们发展出了一批经典的机器学习算法。它们虽然不像现代深度学习那样"端到端"地自动学习特征,但数学基础扎实、可解释性强,至今仍是许多场景的首选。
SVM:支持向量机
核心思想
SVM 的目标是找到一个最优超平面来分隔不同类别的数据点。
│ ○ ○
│ ○ ○
──────┼───────── ← 超平面(分类边界)
│ ● ●
│ ● ●
│
支持向量:最靠近超平面的数据点
它们决定了超平面的位置「最优」的定义:使两类数据到超平面的最小距离(间隔 Margin)最大化。
核技巧(Kernel Trick)——Vapnik 的天才灵感
Vapnik 最初在俄罗斯开发了 SVM 的理论基础(统计学习理论),后来移居美国加入 AT&T 贝尔实验室。在那里,他想出了一个绝妙的技巧:当数据在原始空间中无法线性分离时,不需要真的去计算高维映射——只需要在原始空间中用核函数计算出等价的内积就行了。
原始空间(不可分): 高维空间(可分):
x₂ φ(x)
│ ○ ● │ ○ ○
│ ● ○ ← 无法用直线分开 │ ● ● ○ ← 可以用超平面分开
└──────── x₁ └──────────
核函数:K(x, x') = φ(x)·φ(x')
常用核函数:
线性核:K(x,x') = x·x'
多项式核:K(x,x') = (x·x'+c)^d
RBF 核:K(x,x') = exp(-γ||x-x'||²)这个技巧的精妙之处在于:你甚至不需要知道高维空间长什么样——核函数帮你处理了一切。
数学形式
决策函数:f(x) = w·x + b
优化目标:最大化间隔 = 2/||w||
等价于:最小化 ½||w||²
约束:yᵢ(w·xᵢ + b) ≥ 1,对所有训练样本
yᵢ ∈ {+1, -1} 是类别标签SVM 的特点
| 优点 | 缺点 |
|---|---|
| 数学理论扎实 | 大规模数据训练慢 |
| 高维数据表现好 | 核函数选择需要经验 |
| 不易过拟合(间隔最大化) | 难以处理多分类问题 |
| 少量样本也能工作 | 结果不易解释(非线性核时) |
决策树
核心思想——最贴近人类直觉的算法
如果说 SVM 是数学家的最爱,那么决策树就是最符合人类直觉的算法。它的逻辑就像医生问诊:"发烧吗?""咳嗽吗?""喉咙痛吗?"——通过一系列是/否问题逐步缩小范围,最终得出结论。
年龄 > 30?
/ \
是 否
│ │
收入 > 5万? 学生?
/ \ / \
是 否 是 否
│ │ │ │
贷款 拒绝 拒绝 贷款分裂准则
每个节点如何选择最佳分裂特征?
| 准则 | 公式思想 | 说明 |
|---|---|---|
| 信息增益(ID3) | 选择使信息熵减少最多的特征 | 偏向多值特征 |
| 信息增益率(C4.5) | 对信息增益归一化 | 纠正 ID3 的偏好 |
| 基尼不纯度(CART) | 选择使基尼系数降低最多的特征 | CART 默认使用 |
信息熵:H(S) = -Σ pᵢ log₂(pᵢ)
度量数据集的「纯度」——越纯,熵越低
基尼不纯度:Gini(S) = 1 - Σ pᵢ²
随机抽取两个样本类别不同的概率决策树的特点
| 优点 | 缺点 |
|---|---|
| 直观易懂 | 容易过拟合 |
| 不需要特征缩放 | 对训练数据的小变化敏感 |
| 能处理数值和类别特征 | 倾向于偏向多值特征 |
| 可以可视化 | 预测精度通常不如集成方法 |
随机森林
Leo Breiman 的集成洞察
2001 年,统计学家 Leo Breiman 发表了随机森林论文。他的核心洞察可以用一句中国老话概括:三个臭皮匠,顶个诸葛亮。 单棵决策树容易过拟合、不稳定,但如果你建很多棵不同的树,让它们投票决定,错误就会被平均掉。
核心思想
训练数据(有放回抽样)
│
├── 样本子集 1 → 决策树 1 → 预测 1
├── 样本子集 2 → 决策树 2 → 预测 2
├── 样本子集 3 → 决策树 3 → 预测 3
│ ...
└── 样本子集 n → 决策树 n → 预测 n
│
投票/平均
│
最终预测两个关键的「随机」
- Bagging(Bootstrap Aggregating):每棵树使用有放回抽样的训练子集
- 特征随机:每个节点分裂时只考虑随机选取的一部分特征
为什么随机森林有效?
单个决策树:方差高(容易过拟合)
多个决策树:方差被平均掉
条件:每棵树要有「多样性」(不太相关)
方法:通过随机采样和随机特征选择保证多样性随机森林的特点
| 优点 | 缺点 |
|---|---|
| 准确性高 | 模型大(多棵树) |
| 不易过拟合 | 可解释性不如单棵树 |
| 能评估特征重要性 | 训练和预测比单棵树慢 |
| 参数少,容易调优 | - |
朴素贝叶斯
核心思想
基于贝叶斯定理,假设所有特征条件独立(这就是"朴素"的来源)。虽然这个假设在现实中几乎永远不成立,但朴素贝叶斯在实践中却出人意料地好用——尤其是在文本分类任务上。
贝叶斯定理:
P(类别|特征) = P(特征|类别) × P(类别) / P(特征)
朴素假设(特征条件独立):
P(x₁,x₂,...,xₙ|类别) ≈ P(x₁|类别) × P(x₂|类别) × ... × P(xₙ|类别)
预测:
类别* = argmax P(类别) × ∏ P(xᵢ|类别)应用示例:垃圾邮件分类
邮件包含词汇:{免费, 中奖, 点击}
P(垃圾|免费,中奖,点击) ∝ P(垃圾) × P(免费|垃圾) × P(中奖|垃圾) × P(点击|垃圾)
P(正常|免费,中奖,点击) ∝ P(正常) × P(免费|正常) × P(中奖|正常) × P(点击|正常)
比较两个概率,取较大者作为预测类别朴素贝叶斯的特点
| 优点 | 缺点 |
|---|---|
| 训练和预测极快 | 特征独立假设通常不成立 |
| 小样本也有效 | 特征间的交互关系被忽略 |
| 天然支持多分类 | 对输入数据的表示方式敏感 |
| 概率输出 | 数值特征需要额外处理 |
算法选择指南
选择算法从来不是一道有标准答案的数学题——它更像一门艺术,需要根据数据特征、问题需求和工程约束来权衡。
数据量小 + 特征少 → 朴素贝叶斯、SVM
数据量中等 → 决策树、随机森林
数据量大 + 高维 → SVM(线性核)、随机森林
需要可解释性 → 决策树
需要最高准确率 → 随机森林、梯度提升树
需要概率输出 → 朴素贝叶斯、逻辑回归本节小结
| 算法 | 核心思想 | 时代影响 |
|---|---|---|
| SVM | 最大间隔超平面 + 核技巧 | 1990s-2000s 最热门的算法之一 |
| 决策树 | 递归分裂,形成树状判断 | 直观可解释的基础算法 |
| 随机森林 | 多棵树投票,降低方差 | 集成学习的代表 |
| 朴素贝叶斯 | 贝叶斯定理 + 特征独立假设 | 文本分类的经典方法 |
思考题
- SVM 的核技巧和神经网络的隐藏层有什么相似之处?它们都是在做什么?
- 随机森林中「随机」的作用是什么?如果去掉随机性会怎样?
- 在深度学习时代,这些经典算法还有用吗?在什么场景下你会选择它们而非深度学习?
延伸阅读
- Vapnik, V. (1995). The Nature of Statistical Learning Theory — 统计学习理论的奠基之作
- Breiman, L. (2001). "Random Forests" — 随机森林原始论文
- Quinlan, J.R. (1993). C4.5: Programs for Machine Learning — 决策树经典著作