AI 工程基础体系 · 第 5/100 篇。内容覆盖机器学习、深度学习与生成式 AI;模型、数据、评测、权限和成本会作为同一生产系统处理。
监督学习:线性模型、树模型、分类回归、正则化和误差分析
监督学习(supervised learning)是从带标签样本中学习输入与目标之间关系的方法。给定样本:
其中 是特征, 是标签,模型学习一个函数:
表示模型参数。训练过程不是直接“记住答案”,而是最小化损失函数:
第一项衡量预测错误,第二项是正则化项,用于限制模型复杂度。监督学习中最容易混淆的几个问题是:
- 分类和回归是预测目标不同的两类任务;
- 线性模型和树模型是建模输入与输出关系的不同方式;
- 正则化不是某一种模型,而是控制过拟合的一类方法;
- 误差分析不是训练结束后的附加工作,而是判断模型为什么失败、下一步如何改进的主要依据。
一、先确定监督学习问题
1. 分类与回归
当目标 是离散类别时,任务是分类。例如:
- 邮件是否为垃圾邮件;
- 用户是否会流失;
- 图片属于猫、狗还是其他类别;
- 交易是否存在欺诈风险。
二分类通常令:
多分类令:
当目标是连续数值时,任务是回归。例如:
- 预测房价;
- 预测未来销量;
- 估计响应时间;
- 预测用户生命周期价值。
分类器通常输出类别概率,而不仅是类别本身:
再通过阈值转换为决策:
默认阈值 只是一个决策约定,不是自然规律。若漏报代价远高于误报,合理阈值可能低于 。
2. 特征、标签与数据切分
监督学习至少涉及四个对象:
- 特征 :模型可使用的输入;
- 标签 :训练时用于计算损失的目标;
- 样本单位:一行数据究竟代表用户、订单、设备还是时间窗口;
- 预测时点:特征必须在做出预测的时刻已经可获得。
最后一个条件决定了数据泄漏(data leakage)是否发生。例如,要预测用户在本月是否流失,却把“本月结束后是否取消会员”作为特征,模型离线指标会很高,但线上预测时该字段尚不存在。
常见切分方式如下:
原始数据
|
+-- 训练集:拟合参数、选择模型
|
+-- 验证集:选择超参数、阈值、特征方案
|
+-- 测试集:只在最终阶段估计泛化性能
如果样本具有时间顺序,应优先按时间切分,而不是随机打散。随机切分会使未来信息进入训练集,造成时间泄漏。若同一用户有多条记录,还应按用户分组切分,否则同一用户的相似记录可能同时出现在训练集和测试集中。
3. 经验风险与泛化误差
训练集上的平均损失称为经验风险:
真正关心的是从未来数据分布中抽取新样本时的期望损失:
训练损失低而测试损失高,称为过拟合;两者都高,可能是欠拟合、特征不足、标签噪声大或任务本身难以预测。
模型选择本质上是在控制训练误差与模型复杂度之间的平衡。正则化、剪枝、早停、交叉验证都在不同层面解决这个问题。
二、线性模型:用加权组合建立可解释基线
1. 线性回归模型
线性回归假设预测值是特征的加权和:
写成向量形式:
其中:
- 是特征向量;
- 是权重;
- 是截距;
- 是预测的连续数值。
最常用的损失是均方误差(MSE):
平方误差会放大大误差,因此对异常值敏感。
如果把偏置项并入特征,令:
则目标可写为:
对参数求导:
令梯度为零,得到正规方程:
如果 可逆:
这说明线性回归的最小二乘解是在训练数据上,使预测残差平方和最小的参数。实际实现通常不会显式计算矩阵逆,而使用更稳定的 QR 分解、SVD 或其他数值线性代数方法。
2. 线性模型的“线性”到底指什么
线性模型要求模型对参数线性,不一定要求原始特征与目标呈简单直线关系。例如加入多项式特征后:
它对参数 仍然是线性的,因此仍可用线性回归拟合,但对原始变量 已经是曲线关系。
类似地,可以加入:
- 对数特征 ;
- 交互特征 ;
- 分桶后的指示变量;
- 领域定义的统计特征。
线性模型的表达能力取决于特征变换。原始特征不足时,模型即使优化完全,也只能得到系统性偏差。
3. 线性回归的假设与预测边界
经典线性回归的统计推断通常依赖以下条件:
- 条件均值近似线性:
- 误差相互独立;
- 误差方差在不同输入下大致恒定;
- 误差分布在需要构造置信区间时通常还会假设近似正态;
- 特征之间不存在严重多重共线性,或已采用相应处理。
这些假设不是线性回归用于预测的绝对前提。即使误差不服从正态分布,模型仍可能有预测价值;但系数解释、置信区间和显著性检验会受到影响。
多重共线性是指特征之间高度相关。例如同时使用“房屋面积(平方米)”和“房屋面积(平方英尺)”,二者几乎提供相同信息。此时预测可能仍然稳定,但单个系数的数值和符号会非常不稳定。
4. 分类不能直接套用普通线性回归
如果把标签 直接用线性回归预测,可能得到小于 0 或大于 1 的结果:
这不符合概率含义。逻辑回归通过 Sigmoid 函数把线性打分映射到 :
当 时概率为 ; 增大,正类概率接近 1; 减小,正类概率接近 0。
逻辑回归使用二元交叉熵损失:
其中 。
这个损失可以从最大似然推导。假设:
则单个样本的似然为:
所有样本独立时,最大化似然等价于最大化对数似然;取负号后,就得到交叉熵损失。
逻辑回归的决策边界为:
因此它在特征空间中产生线性决策边界。它可以输出概率,但这个概率是否校准良好,还取决于数据、正则化、采样方式和训练过程。
5. 多分类逻辑回归
多分类可以使用 Softmax:
其中 是类别数。所有类别概率之和为 1。对应的损失是多类交叉熵:
Softmax 输出的是互斥类别的概率分布。如果一个样本可以同时属于多个类别,就不应使用单个 Softmax,而应为每个标签使用独立的 Sigmoid,并使用多标签二元交叉熵。
6. 线性模型的优点与失败模式
线性模型通常具有以下性质:
- 参数量与特征维度近似线性增长;
- 在高维稀疏特征上训练和预测效率高;
- 权重方向可以帮助解释特征与预测的关系;
- 在特征工程充分、关系近似线性时具有很强的基线价值。
但它会在以下情况下失效:
- 真实关系依赖复杂交互;
- 决策边界明显非线性;
- 特征尺度、缺失值或类别编码处理不当;
- 训练数据中存在强异常值;
- 目标受未观测变量影响很大。
“系数为正”也不自动意味着因果关系。在线性相关特征、选择偏差或混杂变量存在时,系数只能解释模型中的条件关联。
三、树模型:通过递归划分构造非线性规则
1. 决策树的结构
决策树将特征空间递归划分为多个区域。一个内部节点包含条件,例如:
满足条件的样本进入左子节点,其余样本进入右子节点。叶节点保存预测值:
- 回归树通常保存叶内目标的均值或其他统计量;
- 分类树通常保存叶内类别比例,并据此输出类别概率。
因此,一棵树可以表示为一组“如果……那么……”规则。其预测函数是分段常数函数,而不是全局线性函数。
2. 回归树如何选择切分
设某个节点包含样本集合 。如果使用平方误差,未切分前的节点损失为:
其中:
为什么叶节点使用均值?因为对于任意常数 :
对 求导并令其为零:
得到:
考虑候选切分 ,将节点分为 ,切分收益为:
算法选择使 最大的特征和阈值,然后对左右子节点递归执行相同过程。
例如,某节点目标值为:
不切分时均值为 ,平方误差为:
若按某特征切分为左组 和右组 ,左组均值为 3,右组均值为 10,切分后损失为:
因此该切分将节点内平方误差从 38.75 降低到 2。
3. 分类树的纯度
分类树需要衡量一个节点中类别是否混杂。常见指标有基尼不纯度和熵。
设节点中第 类比例为 。
基尼不纯度为:
熵为:
如果节点中的样本全属于同一类,基尼不纯度和熵都为 0;如果类别均匀混合,纯度最低。
候选切分的加权不纯度为:
选择加权不纯度最小的切分。基尼和熵通常会产生相近但不完全相同的树;没有普遍成立的规则表明某一个指标始终更好。
4. 树模型为什么能表示非线性
假设真实规则是:
线性模型只能用一条直线或超平面近似这个区域;决策树可以先按 切分,再在右侧按 切分,从而构造矩形区域。
树模型天然能够表达:
- 特征阈值;
- 分段关系;
- 特征交互;
- 不同区域中不同的局部规则。
但单棵树通常容易过拟合。若不断切分,叶节点可能只包含一个或少数样本,训练误差接近 0,而新数据上的误差上升。
5. 树模型的复杂度控制
常见控制手段包括:
- 限制最大深度;
- 限制叶节点最小样本数;
- 限制内部节点继续切分所需的最小样本数;
- 限制叶节点数量;
- 使用代价复杂度剪枝;
- 使用随机森林或梯度提升树等集成方法。
代价复杂度剪枝可以形式化为:
其中:
- 是树;
- 是叶节点误差;
- 是叶节点集合;
- 惩罚叶节点数量。
越大,越偏好更小的树。它体现了“再降低一点训练误差,是否值得增加一个规则区域”的权衡。
6. 树模型不等于集成树模型
需要区分三种概念:
- 决策树:单棵树,规则直观,但方差可能较高;
- 随机森林:训练许多具有随机性的树,再平均或投票,通常降低方差;
- 梯度提升树:顺序训练多棵树,每棵树拟合前面模型的残差或负梯度方向,通常具有较强表达能力,但对学习率、树数量和深度较敏感。
树模型通常不要求对数值特征做标准化,因为切分只关心大小顺序。例如把特征从米改成厘米不会改变排序,也不会改变候选划分的相对关系。线性模型、距离模型和神经网络通常更依赖合适的缩放。
树模型也不是“完全不需要数据处理”。缺失值、类别变量、高基数 ID、时间泄漏、异常标签和训练测试分布变化仍然需要单独处理。某个具体库是否原生支持缺失值或类别特征属于实现和版本问题,不能把一个库的能力当作树模型的数学保证。
四、正则化:在拟合误差和复杂度之间做约束
1. 为什么需要正则化
如果模型有足够多的自由度,它可能利用训练数据中的偶然噪声。正则化通过在目标函数中加入复杂度惩罚,使模型不容易使用过大的参数或过于复杂的结构:
控制惩罚强度:
- :不使用该正则化;
- 增大:模型通常更简单,训练误差可能升高;
- 过大:可能导致欠拟合。
正则化不能修复标签错误、严重泄漏或训练测试分布完全不同的问题。它主要处理的是模型复杂度与方差。
2. Ridge:L2 正则化
Ridge 回归的目标为:
通常不惩罚截距 ,因为截距用于调整整体均值,不应被无条件压缩。
忽略截距并写成矩阵形式:
求导:
令梯度为零:
因此:
与普通最小二乘相比, 使矩阵更稳定,并压缩参数幅度。对于高度相关的特征,Ridge 往往将权重分摊到多个相关特征上,而不是任意选择其中一个。
3. Lasso:L1 正则化
Lasso 使用绝对值惩罚:
其中:
L1 惩罚具有产生精确零系数的倾向,因此可以形成稀疏模型,起到部分特征选择作用。
但“被 Lasso 置零”不等价于“该特征在现实中没有作用”。当多个特征高度相关时,Lasso 可能任意保留其中一部分;不同训练样本或轻微数据变化可能导致选择结果改变。
4. Elastic Net
Elastic Net 同时使用 L1 和 L2:
接近 Lasso, 接近 Ridge。它在高维特征、相关特征成组出现的场景中常比单独 Lasso 更稳定。
5. 分类模型中的正则化
逻辑回归也可以使用:
正则化会限制逻辑分数 的幅度,使概率不容易极端地接近 0 或 1。它可能改善泛化,也可能改变概率校准,因此分类模型的阈值和概率质量应在独立验证数据上检查。
6. 树模型中的正则化含义不同
在线性模型中,正则化主要限制参数范数;在树模型中,正则化更多限制结构:
- 树的深度;
- 叶节点数量;
- 叶内样本量;
- 每次切分要求的损失下降;
- 集成模型中的树数量、学习率和采样比例。
因此不能简单地说“树模型不需要正则化”。一棵无限生长的树可以把训练样本逐个分开,正是典型的高方差模型。
7. 正则化参数必须通过验证选择
正则化强度属于超参数,不能用测试集反复调节。可使用交叉验证:
- 将训练数据划分为多个折;
- 对每个候选 ,在部分折上训练;
- 在剩余折上评估;
- 汇总各折结果;
- 选择验证性能合适的 ;
- 最后用完整训练集重训;
- 只评估一次测试集。
预处理也必须在每个训练折内部拟合。例如标准化的均值和方差不能先用全部数据计算,否则验证折的信息已经泄漏到训练过程。
五、一个可运行的分类与回归比较示例
下面示例使用 scikit-learn 的合成数据,比较逻辑回归、决策树和 Ridge 回归。示例依赖 Python、NumPy、scikit-learn,安装方式可按项目环境执行:
python -m pip install numpy scikit-learn
代码:
import numpy as np
from sklearn.datasets import make_classification, make_regression
from sklearn.linear_model import LogisticRegression, Ridge
from sklearn.metrics import (
accuracy_score,
mean_squared_error,
roc_auc_score,
)
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier
# ---------- 分类 ----------
X_cls, y_cls = make_classification(
n_samples=1200,
n_features=10,
n_informative=5,
n_redundant=2,
weights=[0.7, 0.3],
random_state=42,
)
X_train, X_test, y_train, y_test = train_test_split(
X_cls,
y_cls,
test_size=0.25,
stratify=y_cls,
random_state=42,
)
# 标准化只在训练集上拟合,Pipeline 会自动保证这一点
logistic = make_pipeline(
StandardScaler(),
LogisticRegression(C=1.0, max_iter=1000, random_state=42),
)
# 树模型通常不需要标准化
tree = DecisionTreeClassifier(
max_depth=4,
min_samples_leaf=10,
random_state=42,
)
for name, model in [("logistic", logistic), ("tree", tree)]:
model.fit(X_train, y_train)
pred = model.predict(X_test)
prob = model.predict_proba(X_test)[:, 1]
print(
name,
"accuracy=", round(accuracy_score(y_test, pred), 3),
"roc_auc=", round(roc_auc_score(y_test, prob), 3),
)
# ---------- 回归 ----------
X_reg, y_reg = make_regression(
n_samples=1000,
n_features=20,
n_informative=8,
noise=15.0,
random_state=42,
)
X_train, X_test, y_train, y_test = train_test_split(
X_reg,
y_reg,
test_size=0.25,
random_state=42,
)
ridge = make_pipeline(
StandardScaler(),
Ridge(alpha=10.0),
)
ridge.fit(X_train, y_train)
pred = ridge.predict(X_test)
print(
"ridge",
"rmse=", round(np.sqrt(mean_squared_error(y_test, pred)), 3),
)
每一步的含义如下:
make_classification生成带有 informative 和 redundant 特征的二分类数据;stratify=y_cls使训练集和测试集的类别比例大致一致;StandardScaler的均值和标准差只从训练数据估计;LogisticRegression输出类别和概率;DecisionTreeClassifier通过max_depth与min_samples_leaf限制树复杂度;make_regression生成连续目标;Ridge(alpha=10.0)使用 L2 正则化;- 分类同时输出 Accuracy 和 ROC-AUC,是因为类别决策与概率排序回答的是不同问题;
- 回归使用 RMSE,它与目标变量使用相同单位,并且对大误差更敏感。
输出的具体数值取决于库版本和实现细节,不应把某一次合成数据实验的分数当作固定结论。运行时应重点观察:
- 训练集与测试集的差距;
- 逻辑回归与树模型在相同数据上的差异;
- 调整
max_depth、min_samples_leaf或alpha后,验证集误差如何变化; - 模型概率是否可以支持实际阈值决策。
六、评测:指标必须匹配任务和决策代价
1. 回归指标
给定真实值 和预测值 。
均方误差:
均方根误差:
平均绝对误差:
RMSE 更强调大错误,MAE 对异常值相对不敏感。若业务要求“绝大多数预测不能偏离太多”,MAE 或分位数误差可能比 RMSE 更贴切。
平均绝对百分比误差(MAPE):
当 接近 0 时,MAPE 会爆炸;当目标可为负时,百分比解释也可能失真,不能机械使用。
2. 分类指标
混淆矩阵包含:
- TP:实际为正且预测为正;
- TN:实际为负且预测为负;
- FP:实际为负但预测为正;
- FN:实际为正但预测为负。
准确率:
精确率:
召回率:
F1:
在正类仅占 1% 的欺诈检测中,即使模型永远预测负类,准确率也可能达到 99%,但召回率为 0。因此类别不平衡时,必须查看正类指标、PR 曲线、混淆矩阵,不能只看 Accuracy。
ROC-AUC 衡量模型将随机正样本排在随机负样本前面的概率解释;它评价的是排序能力,不直接告诉你在某个业务阈值下会产生多少误报。正类极少时,PR-AUC 往往更能反映正类识别质量,但仍需结合实际基准率解释。
3. 概率、阈值与校准
一个模型可能排序能力很强,但概率不可靠。例如它把样本排序正确,却把所有概率压在 0.99 和 0.01 附近。若系统需要根据风险概率计算预期损失,就必须关注校准。
若所有预测为 0.7 的样本中约 70% 实际为正,则称该概率区间大致校准。可使用可靠性图、Brier score 等方法检查。
阈值选择应基于代价。设:
- 误报代价为 ;
- 漏报代价为 ;
- 预测正类时产生的决策收益和其他成本已纳入。
如果模型概率已校准,最简单的二元代价模型下,预测为正的期望代价为:
预测为负的期望代价为:
选择正类的条件是:
整理得:
这说明阈值与代价有关,而不是固定等于 0.5。真实系统还应纳入人工审核容量、操作延迟、用户体验和合规风险。
七、误差分析:从“分数不好”定位到“哪里、为什么不好”
误差分析的目标不是再列一遍指标,而是把错误转化为可验证的假设。
1. 先区分训练误差、验证误差和测试误差
设:
- 训练误差低,验证误差高:通常是过拟合或泄漏后的虚假拟合;
- 训练误差和验证误差都高:通常是欠拟合、特征不足、标签噪声或任务不可预测;
- 训练和验证都好,线上变差:可能是分布漂移、特征可用性变化、服务逻辑不一致或标签延迟;
- 总体指标好,但关键群体差:平均值掩盖了切片性能问题。
不能仅凭训练集分数判断模型质量,因为训练误差只是优化目标,不是泛化误差。
2. 按样本切片分析
总体误差:
可能掩盖不同群体的差异。对切片 分析:
常见切片包括:
- 新用户与老用户;
- 不同地区、设备或渠道;
- 不同价格区间;
- 不同语言或文本长度;
- 高价值与低价值客户;
- 不同时间段;
- 不同标签来源。
切片时要记录样本量和置信区间。一个只有十个样本的切片出现 100% 错误,不一定说明真实群体风险最高。
3. 按错误类型分析
分类任务可以分别检查:
- FP:哪些负类被误判为正类;
- FN:哪些正类被漏掉;
- 高置信度错误:模型很确信但判断错;
- 边界样本:概率接近阈值;
- 标签冲突:相似输入对应不一致标签。
回归任务可以检查:
- 残差 与预测值的关系;
- 残差与关键特征的关系;
- 高误差样本是否集中在某个区间;
- 是否存在异方差,即目标越大误差绝对值越大;
- 是否有异常值或单位错误。
如果残差随预测值呈扇形扩散,说明误差方差可能随规模变化。此时可以考虑对目标取对数、使用加权损失或采用分位数回归,但必须根据业务目标验证,而不是只追求更好看的残差图。
4. 一个完整的误差分析流程
对测试集保留以下字段:
sample_id, y_true, y_pred, predicted_probability,
threshold, error_type, key_features, data_version
然后执行:
- 计算整体指标;
- 按真实标签和预测标签生成混淆矩阵;
- 按业务切片计算指标;
- 抽取高置信度错误;
- 检查原始输入、标签生成过程和特征时间;
- 判断错误属于数据问题、目标定义问题、特征缺失、模型偏差还是决策阈值问题;
- 对一个具体修改进行离线实验;
- 在固定测试集和新的时间切片上复验。
关键是把“错误原因”区分为可修复和不可修复两类。标签错误可以通过标注流程修复,缺失特征可以通过数据采集修复;但如果输入中没有任何能够预测目标的信息,换模型通常不会解决问题。
5. 统计不确定性与显著性
两个模型的测试集分数不同,不代表差异一定真实。对于分类指标,可以使用 bootstrap 对样本重采样,估计指标差异的置信区间;对于成对预测结果,可以使用适合任务的成对比较方法。
交叉验证的多个折并不是完全独立的实验,因此不能把每折结果简单当作独立样本进行任意显著性检验。更稳妥的做法是:
- 预先确定主指标;
- 固定数据切分和随机种子;
- 报告均值与离散程度;
- 使用重复实验或时间外推验证稳定性;
- 同时报告实际业务收益,而不是只报告统计显著性。
八、常见误解与反例
误解一:模型越复杂,效果一定越好
反例是训练样本很少、特征噪声很大的数据。一棵不受限制的深树可以记住每个训练样本,训练准确率达到 100%,但测试准确率下降。限制深度或叶节点样本数会牺牲部分训练分数,却可能改善泛化。
误解二:线性模型只能解决非常简单的问题
如果原始输入是高维稀疏词袋特征,逻辑回归可能是强基线。它虽然决策边界线性,但词频、交互特征、正则化和良好标签可以使问题在该表示空间中接近线性。
误解三:树模型不需要任何归一化,所以不需要数据处理
树的阈值切分对单调缩放通常不敏感,但树仍然会受到错误单位、缺失机制、泄漏特征、重复样本和类别编码方式影响。无需标准化不等于无需验证特征语义。
误解四:正则化越强越不容易过拟合,因此越大越好
当 过大时,线性模型权重被压缩到接近零,预测接近常数;树的深度过小则无法表示必要的交互。这是欠拟合。正则化只能通过验证数据选择,而不能凭直觉无限增加。
误解五:AUC 高就可以直接上线
AUC 只描述整体排序。若业务每天只能审核 100 条样本,必须考察排名前 100 条的精确率;若漏报代价高,必须考察指定召回率下的误报量;若输出概率用于计费,还必须考察校准。
误解六:特征重要性就是因果影响
树的 impurity importance 可能偏向取值种类多的特征,相关特征之间也会分摊或争夺重要性。线性系数同样不等于因果效应。重要性分析应结合置换重要性、局部解释、稳定性检查和因果设计。
九、深度学习与生成式 AI 中这些概念如何延续
深度神经网络仍然是监督学习模型,只是:
- 线性层提供参数化映射;
- 激活函数引入非线性;
- 多层组合学习特征表示;
- 交叉熵、均方误差等仍然是损失;
- 权重衰减、Dropout、数据增强和早停承担正则化作用;
- 验证集、测试集和误差分析仍然不可省略。
一个神经网络层可以写成:
若没有激活函数,多个线性层的复合仍可化为一个线性变换;非线性激活是深层表达能力的重要来源。
生成式 AI 也使用类似的监督目标。例如语言模型可在给定上下文 时预测下一个 token ,使用条件概率:
并最小化负对数似然:
但生成式系统的生产评测不只有 token 级损失,还要考虑事实性、拒答行为、提示注入、隐私泄漏、延迟、推理成本和权限边界。模型预测本身正确,不代表系统允许它访问或输出相关数据。
十、生产系统中的数据、权限、成本和故障边界
监督学习模型上线后,系统不再只有一个 predict 函数,而是包含:
数据采集
-> 特征生成
-> 模型推理
-> 阈值/业务规则
-> 结果存储或动作执行
-> 反馈与标签回流
每一段都可能造成与模型无关的失败:
- 特征生成超时导致默认值;
- 线上特征与训练特征定义不一致;
- 标签延迟导致近期评测虚高;
- 模型版本与特征版本不匹配;
- 类别映射变化导致预测含义改变;
- 访问控制过宽导致训练数据或推理结果泄漏;
- 高复杂度模型增加 CPU、内存、GPU 或网络成本;
- 重试造成重复执行下游动作。
权限应按数据和动作分别控制。例如训练任务不应默认读取所有生产用户信息,推理服务不应因为需要读取特征而获得写入业务数据库的权限。日志中也不应直接记录身份证号、完整提示词或敏感标签。
成本属于模型选择的一部分。一个离线指标略高但推理成本、延迟和维护复杂度显著增加的模型,未必优于简单线性模型或浅层树。应至少记录:
- 单次推理延迟和尾延迟;
- 每批或每请求资源消耗;
- 特征计算成本;
- 模型加载和扩缩容成本;
- 重新训练与回滚成本;
- 人工审核或错误动作成本。
发布前应验证模型、特征、阈值和权限配置的组合,而不是只验证模型文件。回滚也必须恢复到相容的特征版本和决策规则,否则“模型回滚成功”仍可能产生错误预测。
十一、建立可复现的实验闭环
一个可审计的监督学习实验至少应固定:
- 数据快照或数据版本;
- 样本筛选规则;
- 训练、验证、测试切分;
- 特征生成代码;
- 模型和超参数;
- 随机种子;
- 指标、阈值和校准方法;
- 训练时间与资源消耗;
- 误差分析切片;
- 模型版本和发布环境。
实验流程可以概括为:
线性模型提供可解释、低成本的基线;树模型提供非线性和交互能力;正则化控制模型复杂度;分类与回归指标反映不同目标;误差分析则把指标差异转化为数据和系统改进方向。只有将这些部分放入同一条数据、模型、评测、权限和成本链路中,监督学习模型才不仅是在测试集上得分,而是能够在真实生产环境中稳定地产生有效决策。
系列导航与关联阅读
- 系列入口:AI 工程完整学习路线:从机器学习与 Transformer 到 RAG、Agent 和生产治理
- 上一篇:机器学习数据工程:采集、清洗、切分、特征、泄漏和版本治理
- 下一篇:无监督学习:聚类、降维、异常检测、表示与评估边界
- 延伸:机器学习完整基础:任务、特征、模型、损失、泛化和实验流程
- 延伸:机器学习评测:指标、交叉验证、阈值、校准、偏差和统计显著性
官方资料
本文依据研究论文、标准组织与主流框架官方文档重新梳理;正文、示例与工程清单由 WR BLOG 编写。

评论
0 条讨论