Amazon MLA-C01: 模型评估与选择 — 学习指南

属于 AWS Machine Learning Engineer Associate MLA-C01 — 学习指南. 使用经过验证的答案练习: Amazon 考试中心, 或参加限时模拟考试: ExamRoll.io.

准确的模型评估始于选择与业务目标以及类别/标签特征相匹配的指标。对于二元分类,混淆矩阵——真正例 (TP)、假正例 (FP)、假负例 (FN)、真负例 (TN)——是经典的基础单元,精确率 (TP / (TP+FP))、召回率或灵敏度 (TP / (TP+FN))、特异性 (TN / (TN+FP)) 和准确率 ((TP+TN) / 总数) 均由此派生。精确率和召回率之间存在一种权衡,F1 分数 (2 * 精确率 * 召回率 / (精确率 + 召回率)) 可以捕捉这种权衡,它是调和平均数,强调在假正例和假负例之间取得平衡。当类别不平衡严重时,准确率可能会产生误导;ROC 曲线下面积 (AUC) 衡量模型在不同阈值下的可分离性,并且在许多情况下对不平衡具有鲁棒性,而当正类别占比很低时,精确率-召回率曲线下面积 (AUPRC) 更具参考价值。对于回归问题,均方根误差 (RMSE) 对较大误差进行平方惩罚,因此对异常值很敏感;当希望模型对异常值具有更好的鲁棒性时,应使用平均绝对误差 (MAE)。

阈值选择是一个操作层面的决策:许多算法会生成一个概率分数,需要一个阈值将其转换为类别标签。使用 ROC 和精确率-召回率曲线来定位能够最大化所选目标(如 F1 分数或业务加权成本函数)的阈值。实用的方法是根据混淆矩阵计算每个阈值下的精确率、召回率和 F1 分数,然后选择满足目标精确率或召回率约束的阈值。交叉验证通过减少指标估计的方差来对此进行补充:对于不平衡的分类问题,使用分层 K 折 (stratified K-fold) 可以在各个折 (fold) 之间保持类别比例。在代码中,使用 scikit-learn 的 StratifiedKFold 并设置 n_splits、shuffle=True 以及一个固定的 random_state 可以获得可复现的折;记录每个折的指标,并汇总其均值和标准差,以量化预期的方差。使用 SageMaker 时,您可以将交叉验证的每次运行作为独立的训练任务进行编排,并使用 SageMaker Experiments API 进行跟踪:为每个折调用 CreateExperiment、CreateTrial、CreateTrialComponent,然后调用 LogMetric 和 LogHyperParameter。

偏差-方差权衡指导着模型复杂度和正则化方法的选择。高偏差模型会欠拟合,在训练集和验证集上都会产生高误差;而高方差模型会过拟合,训练误差低但验证误差高。纠正偏差的方法包括:增加模型容量、添加信息量更丰富的特征或降低正则化强度;纠正方差的方法包括:增加正则化 (L1/L2)、降低模型复杂度、使用 dropout 或增加训练数据。使用交叉验证的估计值来检测方差:各折之间指标的巨大差异意味着高方差。在 SageMaker 上进行迭代训练时,应结合使用提前停止(对于 XGBoost,设置超参数 early_stopping_rounds 和 eval_metric=‘auc’ 或 ’error’)和 SageMaker 自动模型调优,使用贝叶斯策略搜索 hyperparameter_space;配置 HyperparameterTuner 时需设置 objective_metric_name、objective_type=‘Maximize’ 或 ‘Minimize’、hyperparameter_ranges、max_jobs 和 max_parallel_jobs。

关键服务与配置

AWS 服务构成了一个紧密集成的工具链,用于跟踪实验、注册模型、检测漂移和实施部署护栏。使用 Amazon SageMaker Experiments 来组织运行;调用 sagemaker.create_experiment、sagemaker.create_trial 和 sagemaker.log_metric 来持久化超参数和指标。使用 SageMaker Model Registry (ModelPackageGroup 和 ModelPackage) 进行集中的模型生命周期管理,并通过模型包属性 ModelPackageApprovalStatus 来控制部署流程,该属性支持 “PendingManualApproval”、“Approved” 和 “Rejected” 等值。通过从 AWS Lambda 或 Step Functions 的人工批准操作中调用 UpdateModelPackage 来更改 approval_status,从而将手动批准集成到 CI/CD 流程中。

对于部署后的监控以及偏差/漂移检测,请使用 SageMaker Model Monitor 和 SageMaker Clarify。通过在 CreateEndpointConfig 或 UpdateEndpointConfig 调用中设置 DataCaptureConfig,在终端节点上启用实时数据捕获;指定 CaptureOptions: [{“CaptureMode”:“Input”}, {“CaptureMode”:“Output”}]、DestinationS3Uri 和 SamplingPercentage 来收集有代表性的负载。使用 Model Monitor 的 DefaultModelMonitor 从参考数据集 GenerateBaseline(生成 baseline_statistics 和 baseline_constraints JSON),然后使用 create_monitoring_schedule 创建一个监控计划,提供 MonitoringScheduleConfig、schedule_expression(cron 或 rate)以及 MonitoringInputs(例如带有 local_path 和 S3InputMode 的 EndpointInput)。对于公平性和偏差问题,可将 SageMaker Clarify 作为 ProcessingJob 使用,并配置 clarify_config 参数 compute_bias 和 compute_data_drift,或者在 Processing 作业中使用 SageMaker Clarify 内置功能,并将结果持久化到 S3 以便在仪表板中展示。

以下几种 AWS 功能通常组合使用,以进行数据聚合、特征准备和异常检测:

设计模式与权衡取舍

当必须最大限度地减少运营开销时,应优先选择托管服务和内置算法功能,而不是构建自定义的 ETL 或自定义监控管道。例如,在训练用于欺诈检测的二元分类器时,XGBoost 是 SageMaker 中一个高效的内置选择,它提供低延迟训练和针对不平衡数据定制的超参数,例如 scale_pos_weight,您应将其设置为 (负样本数 / 正样本数)。在 Estimator 或训练容器中配置 XGBoost 超参数:objective='binary:logistic'eval_metric='aucpr''auc',以及用于终止噪声过大运行的 early_stopping_rounds。这样可以避免构建自定义的过采样管道 (SMOTE),除非需要特定领域的合成采样。

对于特征工程,使用 SageMaker Data Wrangler 应用编码转换(对低基数分类特征使用独热编码,对高基数特征使用序号/标签编码或目标编码),然后将清理后的特征物化到 SageMaker Feature Store 或 S3。Data Wrangler 消除了大量的运营负担,并生成您可以重用的脚本或处理作业。如果您需要以最少的工作量实现自动化模型选择,SageMaker Autopilot 可以自动预处理混合的分类和数值特征,并生成候选模型;但是,Autopilot 抽象了转换过程,对于自定义的特征方案可能不是最优选择。

当指标、构件和血缘关系被记录下来时,模型比较和晋升过程最为稳健。使用 SageMaker Experiments 比较不同的运行,然后在 ModelPackageGroup 中创建一个 ModelPackage。通过将 ModelPackageApprovalStatus 设置为 “Approved” 来晋升模型,并生成一个引用该模型包 ARN 的 EndpointConfig。在需要人工控制的情况下,将模型保持在 “PendingManualApproval” 状态,并使用 Step Functions 或 AWS CodePipeline 连接一个人工审批工作流,该工作流包含一个调用 UpdateModelPackage 将模型状态更改为 “Approved” 的审批操作。

常见陷阱与决策标准

一个常见的陷阱是,当根本问题是数据漂移时,却将生产环境中的 F1 分数下降误认为是模型故障。在部署后数月,F1 分数持续下降的最可能原因是输入分布漂移或标签漂移(概念漂移),而不是突发性错误。为了诊断此问题,请在端点上启用 DataCaptureConfig 以捕获请求和响应负载到 S3,针对基准约束运行 Model Monitor 监控任务,并计算特征分布统计数据和 PSI(群体稳定性指数)。同时,运行 Clarify 数据漂移和偏见检查,以检测影响公平性指标的变化。

另一个常见错误是在处理类别不平衡问题时,不考虑时间泄漏或业务成本就简单地进行重采样。应优先使用算法层面的控制——对于 XGBoost,设置 scale_pos_weight 并将 eval_metric 调整为 aucpr 或自定义目标——然后再考虑可能引入重复样本的采样策略。为了保证可复现性和实验跟踪,请始终使用 SageMaker Experiments API 来记录超参数和指标,并注册带有构件 URI 和来源元数据的模型包,以便模型晋级是可审计的。

实践问题:用例场景

公司:FinSight Inc. — 为在线交易提供欺诈检测服务,数据存储在 Amazon S3 和本地 MySQL 中。需求包括:安全的数据隔离、自动化的异常检测和可视化、生产部署前的手动审批、迭代训练的低启动延迟,以及以最小化运维开销实现集中式模型版本控制。

  1. 数据聚合与安全:使用 AWS Glue 爬取 S3 交易日志并创建 Glue 数据目录表,使用 SSE-KMS 设置存储桶加密,并通过 IAM 策略和 VPC 端点限制访问。对于本地 MySQL,在 VPC 内使用安全的 VPN 或 AWS Direct Connect 建立 AWS Glue JDBC 连接,或者使用 AWS DMS 将所需表复制到 S3 落地(landing zone)。在 Glue Data Catalog 中注册数据集,并为 SageMaker 执行角色授予最小权限访问。

  2. 特征准备与异常检测:使用 Amazon SageMaker Data Wrangler 连接到 Glue 数据目录和 S3 落地,应用转换(缺失值插补、分类变量的标签编码、数值型变量的缩放),并运行 Data Wrangler 的内置分析功能来可视化分布并标记异常。将处理后的特征导出到 SageMaker Feature Store 离线存储用于训练,以及在线存储用于推理时的低延迟查询。

  3. 模型训练与最小化启动延迟:使用 SageMaker Estimator for XGBoost,设置 objective='binary:logistic'eval_metric='aucpr',并设置 scale_pos_weight=(neg_count/pos_count)。为了减少迭代训练作业的启动延迟,将 Data Wrangler 的输出缓存在 S3 中,并重用相同的训练容器镜像和实例类型,而不是每次都重建数据摄取过程;使用启用了 cache_config 的 SageMaker Pipelines,这样输入/超参数未变的重复步骤会跳过基础设施启动过程。

  4. 实验跟踪与模型选择:为每个训练运行配置 SageMaker Experiments (CreateExperiment, CreateTrial, LogMetric)。使用 HyperparameterTuner,配置 objective_metric_name='validation:aucpr'objective_type='Maximize'strategy='Bayesian'max_jobsmax_parallel_jobs 来找到最佳超参数。在 Experiments 中比较模型,并通过在 ModelPackageGroup 中创建一个 ModelPackage,在 SageMaker Model Registry 中注册选定的候选模型。

  5. 手动审批与部署门控:将新创建的模型包状态保持为 ModelPackageApprovalStatus='PendingManualApproval'。使用带有手动审批任务的 AWS Step Functions 工作流或 AWS CodePipeline 审批操作;一旦获得批准,运行 UpdateModelPackage 将审批状态设置为 ‘Approved’,并触发自动创建 EndpointConfig 和运行 UpdateEndpoint 来执行部署。

  6. 监控、偏见与漂移:在实时端点上启用 DataCaptureConfig,并配置 CaptureOptions 的 Input 和 Output、DestinationS3Uri 以及 SamplingPercentage。使用 Model Monitor 的 GenerateBaseline 从训练数据集中生成基准统计数据,并使用 create_monitoring_schedule 安排持续监控。定期将 SageMaker Clarify 作为处理作业运行,以计算偏见和数据漂移指标。如果 F1 分数低于基准约束,使用 Model Monitor 警报触发一个自动化的再训练管道(SageMaker Pipeline),该管道会在 Experiments 中记录新的运行,并生成新的模型包供人工审核。

AWS 基本原理:此方法利用了托管的 SageMaker 功能——Data Wrangler 和 Feature Store 最小化预处理开销,使用带 scale_pos_weight 的 XGBoost 无需复杂重采样即可处理不平衡问题,SageMaker Experiments 和 Model Registry 实现可审计的实验和模型生命周期管理,DataCaptureConfig 加上 Model Monitor 和 Clarify 实现自动化的漂移和公平性检测,以及 Step Functions/CodePipeline 与 Model Registry 的集成为所需的手动审批门提供了支持。这些服务共同最小化了运维负担,同时保持了安全性、可追溯性以及响应模型性能下降的能力。


模型训练与超参数优化 · 所有领域 · 模型部署与推理

练习这些题目 → · 在 ExamRoll.io 上限时练习 →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

通过考试 →

浏览 Amazon →

Related guides

一体化访问

一次订阅。所有考试。

所有计划均可无限制搜索答案、进行模拟测试、获取AI解释以及访问完整的资源库 — 支持20多种语言。

每月
24.87
Just €0.83/day
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

最具价值
12个月
179.87
Just €0.49/daySave 40%
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

✓ 包含免费计划 · ✓ 随时取消 · ✓ 所有计划均解锁完整产品