Amazon MLS-C01: 建模 — 监督式与非监督式 (经典 ML) — 学习指南
属于 AWS Machine Learning Specialty MLS-C01 — 学习指南. 使用经过验证的答案练习: Amazon 考试中心, 或参加限时模拟考试: ExamRoll.io.
监督学习问题的模型选择与架构
选择模型首先要考虑数据形态和生产环境的约束。对于具有大量样本和可解释系数的线性信号,正则化的线性回归或逻辑回归(SageMaker LinearLearner 或 scikit-learn ElasticNet)速度快,并且能生成可供检查的系数。当非线性交互作用占主导时,像 XGBoost(SageMaker XGBoost 容器)或 LightGBM 这样的树集成模型可以捕捉异质性,而无需进行复杂的特征缩放;通过调整 eta (learning_rate)、max_depth、subsample、colsample_bytree 以及正则化参数 alpha/lambda 来控制过拟合。SVM 在中小型、经过良好缩放的特征集上可能很有效,但通常需要在 SageMaker 上使用自定义容器或 scikit-learn ScriptMode,因为处理大型数据集成本高昂;切记要对特征进行标准化,并谨慎选择核函数/正则化参数(C, gamma)。对于高维稀疏的分类/文本输入,朴素贝叶斯(Naive Bayes)是一个快速的基线模型;它假设条件独立,在相关性强时效果会变差。对于成千上万的特征或非常大的数据集,应使用降维(PCA)或特征哈希,如果使用基于 GPU 的深度网络,则优先选择在 ml.c5 或 ml.p3 实例上进行分布式训练。使用 SageMaker 端点进行实时推理,或使用 Batch Transform 进行批量预测;当需要维护多个模型时,使用多模型端点(Multi-Model Endpoints)以降低成本。
指标、不平衡、校准和部署权衡
在处理不平衡问题时,准确率(Accuracy)看似诱人但具有误导性;应优先选择对类别敏感的指标,例如精确率(precision)、召回率(recall)、F1 分数、ROC AUC(用于强调类别均衡),以及当正类别稀有时使用的 PR AUC。在生成概率时,使用可靠性图(reliability diagrams)和 Brier 分数检查校准度;可以使用离线实现的 Platt 缩放或保序校准(isotonic calibration)(scikit-learn CalibratedClassifierCV),或者在 SageMaker 训练中通过输出原始分数并应用后处理步骤来进行校准。为了处理类别不平衡,优先选择样本加权(SageMaker LinearLearner 和许多训练脚本都支持)、训练期间的目标性过采样(SMOTE)或欠采样,以及用于神经网络的损失函数重加权或 focal loss。对于欺诈概率的近实时评分,应通过使用具有低推理延迟的实例类型(ml.m5.large 或 CPU 优化实例)来优化模型延迟,保持模型紧凑(进行剪枝或使用蒸馏模型),并使用多模型端点或通过 SageMaker 端点进行 A/B 流量切换来安全地部署更新。使用 SageMaker Model Monitor 监控生产环境中的模型漂移和数据质量,并自动化地将指标记录到 CloudWatch。
特征工程、多重共线性和正则化
多重共线性会放大线性模型中系数估计的方差;可通过方差膨胀因子(VIF)和成对皮尔逊相关性(pairwise Pearson correlation)来检测,并通过移除冗余特征或使用降维(PCA, SVD)来缓解。正则化是一种有原则的解决方法:L2(Ridge)收缩系数,L1(Lasso)为特征选择引入稀疏性,而 ElasticNet 结合了两者——这些方法在 scikit-learn 和 SageMaker LinearLearner 中都可用。对于强偏态的数值特征,应用对数(log)或 Box-Cox 变换来稳定方差并改善线性模型的拟合效果;请记住,树集成模型对单调变换具有鲁棒性,而 SVM 和神经网络则需要标准化的输入(StandardScaler)以实现稳定训练。高基数(High-cardinality)的分类特征可以从目标编码(target encoding)、嵌入(embeddings)或哈希(hashing)中受益;当使用目标编码时,为避免数据泄露,应在交叉验证的折(fold)内计算编码,或使用一个单独的留出集(holdout)。使用 SageMaker Feature Store 来集中化管理并为训练和推理提供一致的特征转换,并通过模型包(model packages)或 Docker 镜像来持久化预处理代码,以确保生产环境的转换与训练时相匹配。
无监督方法、聚类、异常检测和可解释性
聚类和异常检测是用于监督式建模的探索性工具和预处理步骤。K-means (SageMaker k-means) 速度快,但假设簇是球形的,并且需要对特征进行缩放;应谨慎使用轮廓分数或肘部图来选择 k 值,因为惯性可能含糊不清。基于密度的方法 (DBSCAN) 和层次聚类可以捕捉非球形结构,但计算成本更高。对于大规模异常检测,可以考虑使用 SageMaker Random Cut Forest 处理流式传感器数据,并使用 Kinesis/Lambda 管线进行近实时评分;调整树的数量和样本大小以控制敏感度。可解释性工具至关重要:对于树模型,使用模型原生的特征重要性;对于局部解释和全局效应摘要,使用 SHAP 值 (SageMaker Clarify 或 SHAP 包)。注意常见陷阱:随机拆分时间序列数据时出现的时间泄露、在不平衡场景中过度依赖准确率、以及为 Naive Bayes 假设特征独立。对于部署,在需要时将自定义算法打包到 Docker 中,暴露预测和健康检查端点,并通过端点流量拆分来编排金丝雀部署。
实践问题:FleetSight Logistics — 卡车图像的探索性机器学习
场景: FleetSight 每天收集约 100 GB 的卡车图像并存储在 S3 中,使用 SageMaker Studio 进行实验,并使用 SageMaker Ground Truth 进行图像标记。他们需要轻量级的机器学习能力来进行缺陷检测,并计划在未来进行扩展。
挑战: 确定可行的监督/无监督用例,并设计一个低成本的管线,用以在标签有限的情况下训练初始模型,并为警报提供近实时推理。
推荐方法:
- 使用 SageMaker Ground Truth 的主动学习功能来标记一个种子集;将标记好的数据存储在 S3 中,并在 SageMaker Feature Store 中注册特征。
- 从无监督异常检测开始,在图像派生的传感器元数据和简单的图像嵌入上使用 SageMaker Random Cut Forest(在 SageMaker Notebook 中使用 GPU ml.p3.2xlarge 实例,通过预训练的 CNN 提取嵌入)。
- 使用迁移学习,在已标记的子集上训练一个轻量级的监督分类器(使用 SageMaker 内置的 TensorFlow 或 PyTorch 容器);为了快速建立基线,可以提取嵌入并在 CPU 实例上训练一个 XGBoost 模型 (SageMaker XGBoost)。
- 将 XGBoost 模型部署到一个 SageMaker 端点,采用异步推理或多模型端点以实现成本效益;使用 SageMaker Model Monitor 监控输入和预测,并通过 Ground Truth 进行迭代标记。
基本原理: 使用无监督嵌入 + Random Cut Forest 在没有大量标签的情况下寻找候选异常,然后通过迁移学习和 XGBoost 引导监督模型,以实现紧凑、快速的推理;SageMaker 服务提供了一个集成、可扩展的开发和监控工作流。
← 探索性数据分析与可视化 · 所有领域 · 深度学习与计算机视觉 →
练习这些题目 → · 在 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.
通过考试 →