监督学习算法:线性模型、树与 SVM

FreeGuideOnline 最新 2026-06-16

监督学习算法:线性模型、树与 SVM

引言

监督学习是机器学习中最核心的分支,模型从已标注的数据中学习输入到输出的映射关系。本教程聚焦三大核心算法家族:线性模型、树模型、支持向量机,帮你建立从简单到复杂的算法心智模型。

1. 线性模型:从回归到分类的基石

线性模型假设输出是输入特征的线性组合。尽管简单,它可解释性强,且通过特征工程、正则化等方法能适应高维场景。

1.1 线性回归

目标:最小化残差平方和
对于特征向量 ( \mathbf{x} = [x_1, x_2, ..., x_d] ),模型预测: [ \hat{y} = w_0 + \sum_{j=1}^d w_j x_j = \mathbf{w}^T \mathbf{x} + b ] 其中 (\mathbf{w}) 为权重向量,(b) 为偏置。
损失函数:均方误差 (MSE)
[ J(\mathbf{w},b) = \frac{1}{2m} \sum_{i=1}^m (\hat{y}^{(i)} - y^{(i)})^2 ] 优化:正规方程(闭式解)或梯度下降。

何时使用:输出为连续值,特征与目标大致线性相关。

1.2 逻辑回归(分类线性模型)

虽是“回归”,却用于二分类。它将线性输出通过 sigmoid 函数映射到 ((0,1)) 概率。 [ P(y=1|\mathbf{x}) = \sigma(\mathbf{w}^T \mathbf{x} + b), \quad \sigma(z)=\frac{1}{1+e^{-z}} ] 损失函数:交叉熵损失
[ J = -\frac{1}{m}\sum_{i=1}^m [y^{(i)}\log \hat{p}^{(i)} + (1-y^{(i)})\log(1-\hat{p}^{(i)})] ] 决策边界:(\mathbf{w}^T \mathbf{x}+b = 0),是线性边界。

多分类:用 softmax 替代 sigmoid,变成多项逻辑回归。

1.3 正则化:防止过拟合

  • L1 正则 (Lasso):倾向于稀疏解,自动特征选择。
    ( J + \lambda |\mathbf{w}|_1 )
  • L2 正则 (Ridge):收缩权重大小,防止过拟合。
    ( J + \lambda |\mathbf{w}|_2^2 )
  • Elastic Net:结合 L1 和 L2。

实践提示:先标准化特征,再应用正则化线性模型。

1.4 线性模型的优缺点速查

优点 缺点
训练速度快,易于解释 对非线性关系表达能力弱
少量样本也能较好泛化(加正则) 对异常值敏感
可输出特征重要性(权重绝对值) 需要特征工程处理非线性交互

2. 树模型:决策树与集成方法

决策树通过递归划分特征空间,形成易于理解的规则。但单棵树容易过拟合,因此诞生了强大的集成模型。

2.1 决策树基础

核心概念:选择最优划分特征,使子节点“纯度”最高。
常用纯度指标:

  • 分类:基尼系数、熵(信息增益)
  • 回归:MSE 降低量

划分过程:自上而下递归,直到满足停止条件(深度、最小样本数等)。
算法代表作:ID3、C4.5、CART。

过拟合对策

  • 预剪枝:限制最大深度、叶节点最少样本数
  • 后剪枝:先生成完整树再剪除冗余分支

2.2 随机森林:并行集成

随机森林通过打包(Bagging)和随机特征子空间生成多棵树,最后投票(分类)或平均(回归)。

  • 每棵树在自助采样数据上训练
  • 每次分裂仅随机考虑部分特征(如 (\sqrt{d}) 个)
  • 降低方差,泛化能力极强
  • 天然输出特征重要性(特征在分裂中带来的纯度增益平均值)

适用场景:高维数据、缺失值容忍、特征交互复杂。

2.3 梯度提升树:串行集成

梯度提升框架顺序训练弱学习器,每棵新树拟合前一棵的残差。

  • GBDT:使用一阶梯度,通常用决策树桩。
  • XGBoost / LightGBM / CatBoost:工业级实现,加入二阶梯度、正则化、并行优化、类别特征处理等。
  • 过拟合控制:学习率(shrinkage)+ 早停 + 行/列采样。

优势:通常是结构化数据竞赛的王者;对异常值鲁棒(相比线性模型)。

2.4 树模型对比与选择

模型 核心思想 对抗过拟合方式 典型场景
决策树 贪婪划分 剪枝、设置深度 需要可解释规则时
随机森林 Bagging + 随机特征 平均多棵树 快速基线,高维数据
GBDT/XGB等 Boosting 残差拟合 学习率、早停、正则化 追求最高预测性能的表格数据

3. 支持向量机:寻找最优分类边界

SVM 的核心是最大化类别间的间隔(Margin),并通过核技巧处理非线性数据。

3.1 线性 SVM(硬间隔与软间隔)

目标:找到超平面 (\mathbf{w}^T\mathbf{x}+b=0),使最近点到平面距离最大。
这等价于约束优化问题(原始形式): [ \min_{\mathbf{w},b} \frac{1}{2}|\mathbf{w}|^2 \quad \text{s.t.} ; y_i(\mathbf{w}^T\mathbf{x}_i + b) \ge 1 ] 软间隔引入松弛变量 (\xi_i) 允许个别点错误分类,控制权衡的参数 (C): [ \min \frac{1}{2}|\mathbf{w}|^2 + C\sum_i \xi_i ]

  • (C) 大:强调正确分类,可能过拟合
  • (C) 小:允许更多误分类,间隔更宽,防止过拟合

3.2 核技巧:低维空间线性不可分的解决之道

当数据非线性可分时,通过映射 (\phi(\mathbf{x})) 到高维空间,然后在高维做线性 SVM。核函数 (K(\mathbf{x}_i, \mathbf{x}_j) = \langle \phi(\mathbf{x}_i), \phi(\mathbf{x}_j) \rangle) 直接计算内积,避免显式高维计算。

  • 多项式核:(K(\mathbf{x}, \mathbf{z}) = (\gamma \mathbf{x}^T\mathbf{z} + r)^d)
  • RBF (高斯) 核:(K(\mathbf{x}, \mathbf{z}) = \exp(-\gamma |\mathbf{x} - \mathbf{z}|^2))
    • (\gamma) 控制单个样本的影响范围:大(\gamma) → 复杂边界,小(\gamma) → 平滑边界。
  • Sigmoid 核等。

3.3 SVM 实战关键点

  • 数据缩放:SVM 对特征尺度敏感,必须标准化到零均值单位方差。
  • 参数选择:通过网格搜索选择 (C) 和 (\gamma)(RBF条件下)。
  • 优缺点
    • 优点:在中小规模数据上表现优异,间隔最大化有理论保证,核方法强大。
    • 缺点:大规模数据训练慢(复杂度 (O(n^2) \sim O(n^3))),对参数和核函数选择敏感,难以直接输出概率(需 Platt scaling 等)。

3.4 三类算法对比总结

维度 线性模型 树模型 (RF/GBDT) SVM
假设 线性假设 无分布假设,自适应性划分 间隔最大化 + 核诱导的假设
可解释性 ★★★★★ (系数直接解释) ★★★☆☆ (可看重要性,树可解释) ★★☆☆☆ (支持向量不易解释)
训练速度 GBDT 慢(但优化后快),RF 中等 一般(样本多时很慢)
预测速度 中等(依赖支持向量数量)
处理非线性 需特征工程(多项式、交互项) 天然处理 通过核函数
异常值影响 敏感(平方损失放大) 鲁棒(树分割基于排序) 有一定影响(软间隔可缓解)
典型应用 大规模线性问题,如广告点击率 表格数据竞赛,推荐系统,风控 手写识别,文本分类(线性SVM),中小规模

4. 从零到实战:动手搭建

4.1 环境准备与伪代码框架

使用 Python 的 scikit-learn 快速体验。

# 统一数据预处理
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

# 线性模型
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier

4.2 模型训练流程模板

  1. 划分训练集和测试集
  2. 特征标准化(对线性和 SVM 必要,树模型可省略)
  3. 定义并训练模型
  4. 评估准确率/精召/F1 或 RMSE

4.3 调参建议

  • 逻辑回归:主要调整正则化强度 C 和正则化类型(L1/L2)。
  • SVM:RBF 核下,Cgamma 是关键。用 GridSearchCV 搜索指数级候选值。
  • 随机森林n_estimators(树数量)先设定足够大(如 300),再调 max_depthmin_samples_split
  • GBDT:优先调整学习率 learning_raten_estimators,配合早停;再调树复杂度参数。

4.4 验证学习效果

尝试用加州房价数据集(回归)和葡萄酒数据集(分类)分别测试线性回归 / 逻辑回归、随机森林、SVM,对比性能与训练时间。你会发现:树模型在结构化数据上常常领先,但 SVM 经过精心调参在小数据集上可能持平或反超。

5. 延伸学习与资源

  • 理论深入:阅读《机器学习》(周志华)西瓜书相关章节,《统计学习方法》李航。
  • 编码实践:尝试从零实现线性回归的梯度下降、决策树的 CART 算法、SVM 的 SMO 优化。
  • 可视化工具:利用 TensorBoard 或 Yellowbrick 库观察特征重要性、决策边界。

掌握这三类算法,你就拥有了处理绝大多数监督学习问题的工具箱。下一步可根据数据特性(图像→CNN,序列→RNN/Transformer)深入学习,但那已是深度学习范畴。先扎根经典,未来方可行远。