经典算法详解
详细解析 6 大经典机器学习算法的原理、数学基础、优缺点和适用场景。
线性回归(Linear Regression)
原理
线性回归假设目标变量与特征之间存在线性关系,用线性函数拟合数据:
$$ y = w^T x + b = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b $$
其中 $w$ 是权重向量,$b$ 是偏置项,$x$ 是特征向量。
损失函数
均方误差(Mean Squared Error, MSE):
$$ \text{MSE} = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 $$
其中 $m$ 为样本数,$y_i$ 为真实值,$\hat{y}_i$ 为预测值。
求解方法
- 普通最小二乘法(OLS):通过求解正规方程 $w = (X^T X)^{-1} X^T y$ 得到解析解,适用于特征数不多的场景
- 梯度下降:迭代优化 $w := w - \alpha \frac{\partial \text{MSE}}{\partial w}$,适用于大规模数据
正则化扩展
- Ridge 回归(L2 正则化):$\text{MSE} + \lambda \sum w_j^2$,防止过拟合,缩小权重但不为零
- Lasso 回归(L1 正则化):$\text{MSE} + \lambda \sum |w_j|$,可产生稀疏解,自动特征选择
- ElasticNet(L1 + L2):结合 Lasso 和 Ridge 的优点
优缺点
| 优势 | 劣势 |
|---|---|
| 模型简单,可解释性强 | 无法处理非线性关系 |
| 训练速度快,计算开销小 | 对异常值非常敏感 |
| 特征与目标关系直观可见 | 需满足线性、独立、同方差等假设 |
| 适合作为 Baseline 模型 | 特征多重共线性影响稳定性 |
适用场景
- 房价预测、销售额预测等连续值回归任务
- 探索特征与目标之间的线性关系
- 作为 Baseline 模型对比复杂算法效果
逻辑回归(Logistic Regression)
原理
逻辑回归本质上是线性回归 + Sigmoid 函数映射,将线性输出压缩到 [0, 1] 区间,表示样本属于正类的概率:
$$ \hat{y} = \sigma(w^T x + b) = \frac{1}{1 + e^{-(w^T x + b)}} $$
Sigmoid 函数特性:$S(x) \in (0, 1)$,$S(0) = 0.5$,单调递增。
损失函数
对数损失(Log Loss)/ 交叉熵损失:
$$ \mathcal{L} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] $$
决策边界
决策规则:若 $\hat{y} \geq 0.5$ 则预测为正类,否则为负类。决策边界是线性的:$w^T x + b = 0$。
多分类扩展:Softmax 回归
对于 $K$ 个类别,使用 Softmax 函数输出每个类别的概率:
$$ P(y = k | x) = \frac{e^{w_k^T x + b_k}}{\sum_{j=1}^{K} e^{w_j^T x + b_j}} $$
优缺点
| 优势 | 劣势 |
|---|---|
| 输出概率值,自然可解释 | 决策边界是线性的,难以处理复杂非线性问题 |
| 计算高效,内存占用小 | 对特征工程要求较高 |
| 正则化可有效防止过拟合 | 多重共线性影响参数稳定性 |
| 易于实现和部署 | 对异常值敏感 |
适用场景
- 二分类任务(垃圾邮件检测、信用风险评估)
- 需要概率输出的场景(CTR 预估)
- 作为分类 Baseline 模型
决策树(Decision Tree)
原理
决策树通过递归地选择最优特征对数据进行划分,每个内部节点表示一个特征测试,每个叶节点表示一个类别(分类)或数值(回归)。
决策树生长过程:
- 从根节点开始,选择最优特征划分数据
- 对每个子节点递归执行步骤 1
- 满足停止条件时生成叶节点
划分准则
| 准则 | 公式 | 对应算法 | 特点 |
|---|---|---|---|
| 信息增益 | $\text{Gain}(D, a) = H(D) - H(D|a)$ | ID3 | 偏向取值多的特征 |
| 增益率 | $\text{Gain_ratio} = \frac{\text{Gain}}{\text{IV}(a)}$ | C4.5 | 对取值多的特征做惩罚 |
| 基尼系数 | $\text{Gini}(D) = 1 - \sum p_k^2$ | CART | 计算简单,默认选择二分 |
其中 $H(D) = -\sum p_k \log p_k$ 为信息熵,$\text{IV}(a)$ 为特征 $a$ 的固有值。
剪枝
- 预剪枝:在树生长过程中提前停止,限制最大深度、最小叶节点样本数、最小不纯度下降量
- 后剪枝:先生成完整决策树,再自底向上合并叶节点,用验证集评估剪枝效果
优缺点
| 优势 | 劣势 |
|---|---|
| 可解释性极强,可可视化 | 容易过拟合(需剪枝) |
| 无需特征缩放 | 不稳定——数据微小变化可能导致树结构剧变 |
| 可处理数值型和类别型特征 | 对类别不平衡敏感 |
| 可输出特征重要性 | 决策边界是轴对齐的阶梯状 |
适用场景
- 需要可解释性的任务(医疗诊断、信用审批)
- 特征类型混杂的数据集
- 作为集成学习的基础组件
随机森林(Random Forest)
原理
随机森林 = Bagging + 决策树,通过集成多棵决策树的预测结果来提升泛化性能。
Bagging(Bootstrap Aggregating):
- 从原始数据集中有放回抽样 $m$ 次,生成 $T$ 个 Bootstrap 样本集
- 在每个样本集上训练一棵决策树
- 分类任务投票,回归任务取平均值
随机性来源
- 样本随机性:每棵树使用不同的 Bootstrap 样本(约占原始数据的 63.2%)
- 特征随机性:每棵树分裂时仅随机选择一个特征子集(通常为 $\sqrt{n}$ 或 $\log_2 n$)
Out-of-Bag(OOB)评估
未被 Bootstrap 抽到的样本(约 36.8%)称为 OOB 样本,可直接用作验证集评估模型性能,无需额外划分验证集。
特征重要性评估
- 基于不纯度:特征在所有树中减少的不纯度总和
- 基于排列:随机打乱特征值后模型性能下降程度
优缺点
| 优势 | 劣势 |
|---|---|
| 抗过拟合能力强 | 模型体积大,占用存储空间多 |
| 可处理高维数据(特征数 > 样本数) | 可解释性较单棵决策树大幅降低 |
| 可输出特征重要性排名 | 对极端类别不平衡需额外处理 |
| 对缺失值和异常值鲁棒 | 预测速度较慢(需遍历所有树) |
| 并行化训练效率高 | 在噪声较大的数据上可能过拟合 |
适用场景
- 分类和回归通用任务
- 高维特征数据集(基因表达、文本分类)
- 需要特征重要性分析的任务
- Kaggle 竞赛中的 Baseline 强模型
支持向量机(SVM)
原理
SVM 的核心思想是在特征空间中寻找一个最大间隔超平面来分隔不同类别的样本。
对于线性可分问题,超平面方程为:
$$ w^T x + b = 0 $$
最大化间隔等价于最小化 $\frac{1}{2} |w|^2$,约束条件为 $y_i(w^T x_i + b) \geq 1$。
核技巧(Kernel Trick)
核技巧将数据映射到高维空间,使得原本线性不可分的数据在高维空间中变得线性可分,而无需显式计算映射函数:
| 核函数 | 公式 | 特点 |
|---|---|---|
| 线性核 | $K(x_i, x_j) = x_i^T x_j$ | 等价于无核,适合线性可分数据 |
| 多项式核 | $K(x_i, x_j) = (x_i^T x_j + r)^d$ | 可拟合非线性决策边界 |
| RBF 核(高斯核) | $K(x_i, x_j) = \exp(-\gamma |x_i - x_j|^2)$ | 最常用,只有一个超参数 $\gamma$ |
| Sigmoid 核 | $K(x_i, x_j) = \tanh(\alpha x_i^T x_j + c)$ | 类似神经网络的激活函数 |
软间隔(Soft Margin)
现实数据往往不是完全线性可分的,引入松弛变量 $\xi_i$ 允许部分样本被误分:
$$ \min \frac{1}{2} |w|^2 + C \sum_{i=1}^{m} \xi_i $$
其中超参数 $C$ 控制间隔最大化与误分类惩罚之间的权衡:
- $C$ 越大 → 越严格分类,可能过拟合
- $C$ 越小 → 允许更多误分类,间隔更宽,泛化能力更强
优缺点
| 优势 | 劣势 |
|---|---|
| 核技巧强大,可处理复杂非线性边界 | 大数据集训练速度慢($O(n^2 \sim n^3)$) |
| 对高维数据有效 | 超参数(C、$\gamma$、核函数选择)调优复杂 |
| 理论基础扎实,泛化能力强 | 不直接输出概率(需额外 Platt 缩放) |
| 决策函数仅由支持向量决定,内存效率高 | 对特征尺度敏感,需标准化 |
| 适合小样本、高维场景 | 多分类需 One-vs-One 或 One-vs-Rest 策略 |
适用场景
- 中小规模数据集(样本数 < 10000)
- 高维特征空间(文本分类、图像识别)
- 生物信息学(蛋白质分类、基因表达分析)
- 需要强泛化能力的安全关键应用
K 最近邻(KNN)
原理
KNN 是一种惰性学习(Lazy Learning)算法——训练阶段仅存储所有样本,预测阶段计算新样本与所有训练样本的距离,根据 $k$ 个最近邻居的标签投票决定新样本类别。
距离度量
| 距离度量 | 公式 | 特点 |
|---|---|---|
| 欧氏距离 | $\sqrt{\sum (x_i - y_i)^2}$ | 最常用,适用于连续数值特征 |
| 曼哈顿距离 | $\sum |x_i - y_i|$ | 对异常值更鲁棒 |
| 余弦相似度 | $\frac{x \cdot y}{|x| |y|}$ | 适用于文本等高维稀疏数据 |
| 闵可夫斯基距离 | $(\sum |x_i - y_i|^p)^{1/p}$ | 欧氏距离($p=2$)和曼哈顿距离($p=1$)的推广 |
k 值选择
- 小 k(如 k=1):决策边界复杂,低偏差、高方差,容易过拟合
- 大 k:决策边界平滑,高偏差、低方差,容易欠拟合
- 通常通过交叉验证选择最优 k 值
优缺点
| 优势 | 劣势 |
|---|---|
| 原理简单直观,无需训练 | 预测阶段计算量大(需遍历全部样本) |
| 无需假设数据分布 | 受特征尺度影响大,必须标准化/归一化 |
| 天然支持多分类 | 对维度灾难敏感(高维时距离度量失效) |
| 新样本可增量加入 | 对类别不平衡敏感 |
| 非参数模型,可拟合复杂边界 | 需要合理选择 k 值和距离度量 |
适用场景
- 低维、小规模数据集
- 推荐系统(协同过滤中的 User-based 方法)
- 模式识别(手写数字识别)
- 数据分布不规则、边界复杂的任务
朴素贝叶斯(Naive Bayes)
原理
基于贝叶斯定理和特征条件独立假设:
$$ P(y | x_1, \ldots, x_n) = \frac{P(y) \prod_{i=1}^{n} P(x_i | y)}{P(x_1, \ldots, x_n)} $$
朴素贝叶斯假设给定类别 $y$ 的条件下,各个特征之间相互独立——这在实际中通常不成立,但该假设大大简化了计算,且在实际应用中往往表现良好。
三种变体
| 变体 | 特征分布假设 | 适用特征 | 典型应用 |
|---|---|---|---|
| 高斯朴素贝叶斯 | $P(x_i|y) \sim \mathcal{N}(\mu, \sigma^2)$ | 连续数值特征 | 鸢尾花分类、肿瘤检测 |
| 多项式朴素贝叶斯 | $P(x_i|y) = \frac{N_{yi} + \alpha}{N_y + \alpha n}$ | 计数/频次特征 | 文本分类(词频统计) |
| 伯努利朴素贝叶斯 | $P(x_i|y) = \text{Bernoulli}(p)$ | 二值特征(0/1) | 文本分类(词是否出现) |
其中 $\alpha$ 为拉普拉斯平滑参数,防止零概率问题。
优缺点
| 优势 | 劣势 |
|---|---|
| 计算高效,训练和预测都极快 | 特征独立假设通常不成立 |
| 小样本表现好,对缺失数据不敏感 | 无法学习特征之间的交互关系 |
| 天然支持增量学习 | 若某特征在测试集中未出现,零概率问题需平滑处理 |
| 可处理多分类任务 | 对有强相关特征的数据效果差 |
| 概率校准效果通常较好 | 对数值特征的分布假设可能不准确 |
适用场景
- 文本分类(垃圾邮件过滤、情感分析、新闻分类)
- 实时分类需求(推荐系统召回阶段)
- 小样本、高维稀疏数据
- 需要快速迭代的原型开发
算法对比
| 维度 | 线性回归 | 逻辑回归 | 决策树 | 随机森林 | SVM | KNN | 朴素贝叶斯 |
|---|---|---|---|---|---|---|---|
| 任务类型 | 回归 | 分类(可扩展多分类) | 分类 + 回归 | 分类 + 回归 | 分类 + 回归 | 分类 + 回归 | 分类 |
| 数据要求 | 线性关系、特征独立 | 线性决策边界 | 无需特征缩放 | 无需特征缩放 | 需标准化 | 需标准化/归一化 | 特征条件独立 |
| 可解释性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
| 训练速度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 预测速度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 高维表现 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 抗过拟合 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 对异常值 | 敏感 | 敏感 | 较鲁棒 | 鲁棒 | 较敏感 | 敏感 | 鲁棒 |
| 概率输出 | — | ✅ | ✅(可校准) | ✅(可校准) | ⚠️(需额外处理) | ⚠️(需额外处理) | ✅ 天然概率 |
| 超参数数 | 少 | 少 | 中(剪枝参数) | 中(树数量、深度等) | 多(C、核函数、$\gamma$) | 中(k、距离度量) | 少(平滑参数) |
总结
- 线性回归 / 逻辑回归:简单高效、可解释强,是最常用的 Baseline 模型,适合线性关系明显的数据
- 决策树:可解释性最强,适合需要透明决策逻辑的场景,但单独使用容易过拟合
- 随机森林:集成决策树的优势——抗过拟合能力强、特征重要性可评估,是通用任务的首选之一
- SVM:核技巧使其在处理复杂边界和小样本高维数据时表现优异,但大数据集上训练成本高
- KNN:原理最直观,无需训练过程,但预测阶段计算成本高,受维度灾难影响大
- 朴素贝叶斯:计算效率极高,尤其适合高维稀疏的文本分类任务,尽管特征独立假设通常不成立
没有"最好"的算法,只有最合适的算法。在实际应用中,应结合数据规模、特征类型、任务需求、部署约束和可解释性要求综合选择,并通过交叉验证和对比实验来验证选择。