机器学习框架

本文最后更新于 2026年9月22日 下午

概览

给机器历史样本,让它自动提取规律。

数据 + 答案 → 模型

监督学习

有标签:从输入学习到答案的映射

  • 回归:房价、销量、温度
  • 分类:垃圾邮件、流失预测
  • 线性/逻辑回归、树模型、KNN、SVM

无监督学习

无标签:发现数据自己的结构

  • 聚类:K-Means、DBSCAN
  • 降维:PCA、特征提取
  • 异常检测、生成建模

强化学习

在环境中试错,用奖励塑造策略。

  • Agent / Environment
  • Action / Reward / Policy
  • 游戏、机器人、推荐策略

通用方法:训练与解决问题

  1. 定义目标与指标
  2. 清洗数据与特征
  3. 训练、验证、测试
  4. 处理欠拟合 / 过拟合
  5. 上线监控与重训

机器学习不是算法清单,而是“用数据解决问题”的完整工程方法。

方法

数据、特征、标签、模型

数据如何进入模型

  • 样本:一条记录,一个用户、一套房、一封邮件
  • 特征:描述样本的输入变量
  • 标签:希望模型预测的答案

算法与模型的区别

  • 算法:学习方法,如线性回归、决策树
  • 模型:学习结果,如一组权重、一棵树
  • 同一种算法,在不同数据上会训练出不同模型

机器学习的第一步,不是选算法,而是把问题翻译成“特征 → 标签”的学习任务。

监督学习:有答案的学习

训练数据中既有输入,也有正确答案。模型要学习从输入到标签的映射。

回归 Regression

预测连续数值。

  • 房价、销量、收入、温度
  • 线性回归、决策树回归、随机森林回归、GBDT

分类 Classification

预测离散类别。

  • 是否垃圾邮件、是否流失、猫或狗
  • 逻辑回归、KNN、朴素贝叶斯、SVM、树模型

典型监督学习算法

线性 / 逻辑回归

  • 线性回归:用于预测连续数值。
  • 逻辑回归:用于分类,输出样本属于某一类别的概率。
  • 特点:简单、可解释性强、训练速度快。

决策树

  • 通过一系列判断规则进行预测。
  • 模型结构直观,容易理解和解释。
  • 单棵决策树容易产生过拟合。
  • 是随机森林、GBDT等树模型集成算法的基础。

KNN

  • KNN:K-Nearest Neighbors,K近邻算法。
  • 找到距离待预测样本最近的 K 个邻居。
  • 分类任务通常通过邻居投票得到预测结果。
  • 特点:
    • 思想简单
    • 几乎不需要显式训练
    • 预测速度相对较慢
    • 对特征尺度敏感,通常需要标准化或归一化

朴素贝叶斯

  • 基于贝叶斯定理和特征条件独立假设。
  • 根据概率计算样本属于不同类别的可能性。
  • 常见应用:
    • 垃圾邮件分类
    • 新闻分类
    • 文本分类
    • 情感分析

SVM

  • SVM:Support Vector Machine,支持向量机。
  • 核心思想是寻找能够使类别间隔最大的分类边界,即最大间隔超平面。
  • 可以通过核函数处理非线性分类问题。
  • 在中小规模数据集上通常表现较好。

树模型集成

  • 将多个树模型组合,提高整体预测能力。
  • 常见算法:
    • 随机森林 Random Forest
    • XGBoost
    • LightGBM
    • CatBoost
  • 是处理结构化 / 表格数据时非常常用的一类强基线模型。

模型训练:从业务问题到可用模型

01 定义问题

  • 明确业务目标
  • 明确预测对象
  • 确定成功指标

02 准备数据

  • 清洗缺失值
  • 处理异常值
  • 编码类别特征
  • 构造业务特征

03 划分数据

  • 训练集:用于训练模型
  • 验证集:用于模型选择与调参
  • 测试集:用于最终评估
  • 必要时使用交叉验证

04 训练优化

  • 定义损失函数
  • 使用梯度下降优化模型参数
  • 树模型通过分裂规则进行优化

05 评估调参

  • 评估模型的泛化能力
  • 处理:
    • 欠拟合
    • 过拟合
    • 类别不平衡

06 上线迭代

  • 部署模型
  • 监控数据漂移
  • 回收业务反馈
  • 根据新数据进行周期性重训

损失函数与梯度下降

损失函数

用于衡量预测值与真实值之间的差距。

常见的回归损失函数之一是 MSE(均方误差): \[ MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \] 其中:

  • \(y_i\):真实值
  • \(\hat{y}_i\):预测值
  • \(n\):样本数量
  • \(MSE\) 越小,说明预测结果整体上越接近真实值

梯度下降

  • 梯度下降用于优化模型参数。
  • 核心思想:沿着损失函数下降最快的方向不断更新参数。

参数更新公式: \[ θ:= \theta-\eta\nabla J(\theta) \] 其中:

  • \(\theta\):模型参数
  • \(\eta\):学习率
  • \(J(\theta)\):损失函数
  • \(\nabla J(\theta)\):损失函数关于参数的梯度

核心思想

训练模型 = 定义目标 + 衡量错误 + 不断调整参数

模型评估:不要只看训练集

训练集

  • 用于学习模型参数。
  • 模型会直接利用训练集进行拟合。

验证集

  • 用于选择模型与调参。
  • 常见用途:
    • 选择模型结构
    • 调整超参数
    • 判断是否过拟合

测试集

  • 用于最终评估模型的泛化能力。
  • 一般不应参与训练和调参过程。

回归指标

  • MAE:平均绝对误差
    • 衡量预测值与真实值之间的平均绝对差距。
  • MSE / RMSE
    • 对较大的预测误差惩罚更明显。
    • RMSE 是 MSE 的平方根,与目标变量量纲一致。
  • \(R^2\)
    • 衡量模型能够解释的数据方差比例。
    • 通常越接近 1,拟合效果越好。

分类指标

  • Accuracy
    • 整体预测正确的比例。
  • Precision
    • 被模型预测为正类的样本中,真正为正类的比例。
  • Recall
    • 实际正类样本中,被模型正确识别出来的比例。
  • F1
    • Precision 与 Recall 的调和平均。
  • ROC-AUC
    • 衡量模型区分正负样本的能力。
  • 混淆矩阵
    • 展示 TP、FP、TN、FN,可帮助分析模型具体错在哪里。

欠拟合、过拟合与问题解决

欠拟合:学得太少

  • 表现:
    • 训练误差高
    • 测试误差也高
  • 原因:模型过于简单,无法充分学习数据中的规律。
  • 常见解决方法:
    • 增加特征或特征组合
    • 使用更复杂的模型
    • 减少正则化
    • 延长训练时间

过拟合:记住噪声

  • 表现:
    • 训练误差低
    • 测试误差高
  • 原因:模型不仅学习了有效规律,还记住了训练数据中的噪声和偶然特征。
  • 常见解决方法:
    • 增加训练数据
    • 使用数据增强
    • 降低模型复杂度
    • 对树模型进行剪枝
    • 使用正则化
    • 使用早停
    • 使用交叉验证

模型选择的核心目标

模型选择并不是单纯追求训练集上的最高分,而是要在以下两种能力之间取得平衡:

  • 拟合能力:模型对训练数据的学习能力。
  • 泛化能力:模型对未见数据的预测能力。

最终目标是让模型既能充分学习数据规律,又能在新数据上保持良好表现。

集成学习:让模型组成团队

Bagging:并行投票

  • 对原始数据进行有放回采样,生成多个不同的训练集。
  • 多个模型之间可以并行训练。
  • 最终结果通过多个模型共同决定:
    • 分类任务:投票
    • 回归任务:取平均
  • 代表算法:随机森林(Random Forest)
  • 核心价值:
    • 降低模型方差
    • 提升模型稳定性
    • 缓解过拟合

Boosting:串行纠错

  • 多个模型按照顺序串行训练。
  • 后一个模型会重点学习前一个模型预测错误的部分。
  • 模型不断纠正前面模型的错误,逐步提升整体性能。
  • 代表算法:GBDT
  • 常见扩展:
    • XGBoost
    • LightGBM
    • CatBoost
  • 核心价值:
    • 降低偏差
    • 提升模型预测精度

Bagging 与 Boosting 的区别

  • Bagging:多个模型独立、并行训练,再进行结果汇总。
  • Boosting:多个模型依次训练,后面的模型不断纠正前面的错误。
  • Bagging 更侧重于降低方差。
  • Boosting 更侧重于降低偏差、提升拟合能力。

GBDT 家族:结构化数据强基线

GBDT 通过多棵树串行累加,每一轮都拟合当前模型最需要修正的方向。

XGBoost

  • 使用正则化控制模型复杂度
  • 同时利用一阶梯度 + 二阶梯度
  • 工程优化成熟,训练稳定
  • 适合作为结构化数据任务中的强基线模型

LightGBM

  • 使用直方图算法提高训练速度
  • 采用 Leaf-wise 的树生长策略
  • 对大规模数据训练效率较高
  • 内存占用和计算效率通常较好

CatBoost(Category boost)

  • 对类别特征支持较好
  • 可以直接处理类别变量,减少复杂编码过程
  • 使用排序提升(Ordered Boosting)降低预测偏移
  • 使用对称树结构,推理速度较快

三者对比

  • XGBoost:工程成熟,稳定,适用范围广
  • LightGBM:训练速度快,更适合大规模数据
  • CatBoost:类别特征较多时优势明显

实战经验

对于表格 / 结构化数据,优先建立树模型基线通常是一个非常稳妥的起点。

无监督学习:从无标签数据中发现结构

K-Means 聚类

  • 预先指定聚类数量 \(K\)
  • 随机初始化 \(K\) 个质心
  • 将每个样本分配给距离最近的质心
  • 根据簇内样本重新计算质心
  • 不断重复“分配样本 → 更新质心”,直到结果收敛

常见应用:

  • 用户分群
  • 图像压缩
  • 异常检测

其他聚类方法

  • K-Medoids
    • 与 K-Means 类似
    • 使用真实样本点作为中心
    • 对异常值通常更加鲁棒
  • DBSCAN
    • 基于样本密度进行聚类
    • 不需要预先指定簇数量 \(K\)
    • 可以发现任意形状的簇
    • 可以识别噪声点和异常点
  • 层次聚类
    • 逐步合并或拆分样本
    • 最终形成多层级的聚类结构
    • 通常可以用树状图表示聚类过程

核心思想

无监督学习没有明确标签,目标不是直接预测答案,而是从数据中发现潜在的结构、分组和模式。

PCA 降维:保留信息,压缩维度

高维数据会带来计算成本增加、数据稀疏、距离度量失效以及过拟合等问题。

PCA(Principal Component Analysis,主成分分析)的核心思想是:用少数几个主成分表示原始数据中的主要信息。

PCA 做了什么?

  • 找到数据变化最大的方向
  • 将原始特征重新组合成新的坐标轴
  • 新坐标轴之间彼此正交
  • 按照解释方差大小对主成分排序
  • 选择前 \(K\) 个主成分完成降维

核心思想

PCA 希望找到一个方向,使数据投影到该方向之后的方差尽可能大。

第一个主成分:

\[ w_1=\arg\max_{\|w\|=1}\operatorname{Var}(Xw) \]

后续主成分在与前面主成分正交的条件下,继续寻找方差最大的方向。

解释方差

每个主成分能够解释一部分原始数据的方差。

常用解释方差比衡量某个主成分保留的信息量:

\[ \text{Explained Variance Ratio}_i = \frac{\lambda_i}{\sum_{j=1}^{p}\lambda_j} \]

其中:

  • \(\lambda_i\):第 \(i\) 个主成分对应的特征值
  • \(p\):原始特征维度
  • 特征值越大,说明该主成分包含的信息越多

通常根据累计解释方差比选择保留多少个主成分。

适用场景

  • 高维数据可视化
    • 将高维数据降到二维或三维进行展示
  • 去除冗余特征
    • 减少特征之间的相关性和共线性
  • 降低训练成本
    • 减少后续模型需要处理的特征数量
  • 数据压缩
    • 使用更少的维度保留主要信息

PCA 的代价

  • 降维后得到的是原始特征的线性组合
  • 新特征通常缺少直观的业务含义
  • 因此 PCA 往往会降低模型的可解释性

注意事项

  • PCA 对特征尺度比较敏感
  • 如果不同特征的量纲差异较大,通常需要先进行标准化
  • PCA 是一种线性降维方法
  • PCA 主要保留的是方差信息,不一定直接保留对预测任务最有用的信息

工业界自动化工具地图

AutoML 不只是“一键训练模型”,而是一整套覆盖数据探索、预处理、建模、调参、实验管理和质量检查的工具链。

快速了解数据全貌

  • 首选工具:ydata-profiling
  • 替代方案:Sweetviz
  • 主要用途:
    • 自动生成数据分析报告
    • 查看缺失值、分布、相关性、异常值等
  • 当需要对比两个数据集时,可以考虑 Sweetviz

5 分钟跑出强基线

  • 首选工具:AutoGluon
  • 替代方案:PyCaret
  • 主要用途:
    • 自动尝试多种模型
    • 快速建立机器学习基线
    • 减少手动建模工作量
  • 如果希望在 Jupyter 中进行更强的逐步交互,可以考虑 PyCaret

规范预处理流程

  • 首选工具:Scikit-learn Pipeline
  • 主要用途:
    • 将数据预处理和模型训练组合成统一流程
    • 避免训练集与测试集处理逻辑不一致
    • 减少数据泄漏风险
  • 属于机器学习工程中的核心工具,通常没有真正意义上的替代方案

智能超参数搜索

  • 首选工具:Optuna
  • 替代方案:Ray Tune
  • Optuna:
    • 使用智能搜索策略寻找较优超参数
    • API 简洁,适合单机或一般调参任务
  • Ray Tune:
    • 更适合多机、多卡和分布式调参场景

实验记录与管理

  • 首选工具:MLflow
  • 替代方案:Weights & Biases(W&B)
  • 主要用途:
    • 记录实验参数
    • 保存模型指标
    • 管理模型版本
    • 对比不同实验结果
  • W&B 更适合团队协作以及深度学习实验场景

检测标签错误

  • 首选工具:Cleanlab
  • 替代方案:人工抽检
  • 主要用途:
    • 发现可能被错误标注的数据
    • 提升训练数据质量
  • 当模型效果遇到数据质量瓶颈时,值得重点检查标签质量

处理类别不平衡

  • 首选工具:imbalanced-learn
  • 替代方案:class_weight
  • imbalanced-learn 支持:
    • 过采样
    • 欠采样
    • SMOTE 等方法
  • 如果数据规模较小、任务较简单,可以优先尝试模型自带的 class_weight

实战流程

一个常见的工业实践流程是:

  1. 使用 AutoGluon / PyCaret 快速建立强基线
  2. 使用 Pipeline 规范数据预处理流程
  3. 使用 Optuna 进行超参数优化
  4. 使用 MLflow 管理实验与模型版本
  5. 使用 Cleanlab 检查潜在标签问题
  6. 根据任务需要处理类别不平衡问题

核心思想

工业界机器学习不仅关注“模型选得好不好”,更关注整个流程是否:

  • 自动化
  • 可复现
  • 可追踪
  • 可扩展
  • 易维护

机器学习框架
https://cdro.tech/notes/CS/machine-learning-review/
作者
k9Q6CK42
发布于
2026年9月13日
更新于
2026年9月22日
许可协议