机器学习框架
本文最后更新于 2026年9月22日 下午
概览
给机器历史样本,让它自动提取规律。
数据 + 答案 → 模型
监督学习
有标签:从输入学习到答案的映射
- 回归:房价、销量、温度
- 分类:垃圾邮件、流失预测
- 线性/逻辑回归、树模型、KNN、SVM
无监督学习
无标签:发现数据自己的结构
- 聚类:K-Means、DBSCAN
- 降维:PCA、特征提取
- 异常检测、生成建模
强化学习
在环境中试错,用奖励塑造策略。
- Agent / Environment
- Action / Reward / Policy
- 游戏、机器人、推荐策略
通用方法:训练与解决问题
- 定义目标与指标
- 清洗数据与特征
- 训练、验证、测试
- 处理欠拟合 / 过拟合
- 上线监控与重训
机器学习不是算法清单,而是“用数据解决问题”的完整工程方法。
方法
数据、特征、标签、模型
数据如何进入模型
- 样本:一条记录,一个用户、一套房、一封邮件
- 特征:描述样本的输入变量
- 标签:希望模型预测的答案
算法与模型的区别
- 算法:学习方法,如线性回归、决策树
- 模型:学习结果,如一组权重、一棵树
- 同一种算法,在不同数据上会训练出不同模型
机器学习的第一步,不是选算法,而是把问题翻译成“特征 → 标签”的学习任务。
监督学习:有答案的学习
训练数据中既有输入,也有正确答案。模型要学习从输入到标签的映射。
回归 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
实战流程
一个常见的工业实践流程是:
- 使用 AutoGluon / PyCaret 快速建立强基线
- 使用 Pipeline 规范数据预处理流程
- 使用 Optuna 进行超参数优化
- 使用 MLflow 管理实验与模型版本
- 使用 Cleanlab 检查潜在标签问题
- 根据任务需要处理类别不平衡问题
核心思想
工业界机器学习不仅关注“模型选得好不好”,更关注整个流程是否:
- 自动化
- 可复现
- 可追踪
- 可扩展
- 易维护