南上海网站建设,千野网站建设,什么叫互联网,上海微信网站制作哪家专业机器学习 (ML) 模型是非常敏感的软件#xff1b;它们的成功使用需要进行仔细监控以确保它们可以正常工作。当使用所述模型的输出自动做出业务决策时尤其如此。这意味着有缺陷的模型通常会对终端客户的体验产生真正的影响。因此#xff0c;监控输入数据#xff08;和输出它们的成功使用需要进行仔细监控以确保它们可以正常工作。当使用所述模型的输出自动做出业务决策时尤其如此。这意味着有缺陷的模型通常会对终端客户的体验产生真正的影响。因此监控输入数据和输出对于模型实现其真正目标至关重要有助于推动企业进行良好的决策并帮助企业实现其目标。在生产环境中使用机器学习模型时您可以使用以下一些可行的、与框架无关的技巧来制定更强大的监控策略。许多技巧彼此之间有一些重叠——这是因为它们应该被用作综合策略的一部分而不是一次性的解决方法一、平均值并不能说明全部情况背景 您可以监控所使用模型中数值特征的平均值。您这样做是因为您想检测数据问题了解何时特征和标签分布发生变化等。说明 平均值监控并不能告诉您全部情况因为它带有一些不一定符合现实的假设。例如 如果缺少数据大多数数值工具会忽略这些数据并计算剩余非空数据的平均值 它假设数据问题将大到足以显着移动平均值。或者特征变化也可能使平均值移动很多但不会影响更高的百分位数——这通常是做出模型决策的地方。 它假设模型分数的变化与基于它的动作具有线性关系。 简而言之可能存在严重影响数据的问题但特征的平均值可能根本不会移动这就是为什么除了它之外还应该包括其他角度的一些原因。建议 监控数字特征值的百分位数——例如第 99、95、90 和 10、5、1 个百分位数。这样即使平均特征值没有变化您也可以检测尾部示例发生变化的情况。这对于数据分布偏斜或不平衡的情况特别有用。 监控所有特征的缺失值率。这需要单独监控因为很大比例的缺失值是一个大问题——即使非缺失值的平均值没有太大变化。 将监控拆分为子群体以检测仅影响总得分样例子集的问题。二、策略/决策层需要额外的监控背景 该模型用于使用某种策略做出决策拒绝/批准贷款显示/不显示广告片等。 您从技术角度特征值、精度、准确性等监控模型但从中做出什么决策并不明显这是策略/决策层。说明 从技术角度监控模型是不够的因为这并不能让其他利益相关者清楚地了解业务受到的影响。 您还应该监控使用模型做出的决策以确保模型交付预期的业务价值。建议 监控使用模型做出的决策。例如每天有多少人获得风险模型批准的贷款每天有多少人的账户被欺诈在这里监视绝对值和相对值通常很有用。 请注意根据目标受众调整粒度级别如果您的模型多次为给定客户评分那么您的目标受众可能对客户汇总的指标比对单个实体评分更感兴趣。 如果您正在运行实时模型由于训练/服务偏差不匹配而做出了多少错误决策您还应该对此进行监控。三、将监控分解为亚群以获得更好的洞察力背景 您负责维护大量使用的机器学习模型这些模型用于每天对许多单独的样例进行评分。 您通过仪表板监控特征并且您想要调查几个“有趣”的模式但通常需要花费大量时间来追踪这些问题的原因。说明 一种更容易理解数据或模型问题的方法是将监控数据拆分为子群体模型评分的数据子集并分别监控。 这样做的原因是许多数据问题对样例的某些子集具有关键影响但它们在整个数据集的影响可能会“消失”因为当您查看整个数据集的聚合值时它们的绝对影响不足以感受到。建议 与其查看整个数据集的聚合特征/分值不如将其分解为子群体并监控它们。 例如如果您有欺诈模型则可能值得根据每个得分示例中使用的设备类型网络、移动设备等来拆分监控。 还要监控不同人群的原始计数每天对每个样本评分的数量、百分比是多少等四、适当的特征编码使监控更容易背景 模型中使用的特征通常经过预处理或编码以使其能够在某些分类器中使用。这有时是一个问题因为很难以可视化或程序化的方式监控复杂的、精心设计的特征而这些特征在第一眼看起来并不明显。说明 通过仔细编码或解码特征您可以更轻松地进行监控。这是因为大多数监控框架更适合数值和分类值。如果您使用不同类型的特征例如词嵌入、地理位置坐标您可能需要将它们解码例如分别解码为字符串和城市名称以便您可以更轻松地分析报表和在绘图中的展示这些特征。 此外您可能希望监控原始非预处理、非编码值因为这样可以更轻松地与其他团队沟通并在出现问题时进行故障排除。建议 除了特征本身之外还监控输入值即不一定是特征本身而是用于构建特征的信息。当您对它们应用多个数字转换时这很有用。 只要有可能将布尔特征值编码为浮点数1.0、0.0 和 null以便像常规数值变量提取平均值和其他数值属性等一样更容易监控它们并重用为这些变量制作的所有工具。 对于使用 one-hot-encoding 或 target-encoding 等策略编码的分类特征您可能希望将它们解码回其原始值以便您可以监控实际的类而不是编码的类别。五、通过一致性减轻监控的负担背景 你负责维护/运营一个或多个机器学习模型每个模型都有几个特性以不同的方式使用等等。 您有多个仪表板和报告正在生成但是它们所需的工作量太大并且需要大量时间。说明 可以减少负担和通过仪表板和监控报告所需的时间。做到这一点的一种方法是促进一致性和标准化从而最大限度地降低上下文切换成本并使您的团队更加高效/有效。建议 使用单一工具监控一切。如果可能的话使用单一工具/供应商监控所有模型。这使得在多个模型之间共享配置变得更加容易。 一致地排序特征。例如根据特征重要性对特征图进行排序以便您可以快速查看是否存在需要调查的严重问题或仅按字母顺序排列 统一命名如果您需要命名文件、数据集、仪表板、表格等请确保遵循某种模式如team-name-model-name-date以便为整个团队自动化和配置这些更容易。六、监控监控作业元监控背景 您使用辅助例行程序、批处理作业或临时脚本来处理模型日志数据。您可以使用这些例行程序来分析模型特征和分数并输出聚合值。您还可以使用这些工具在特定条件下生成警报。声明 模型监控批处理作业/例行程序只是另一个软件它们通常会不时停止工作有人更改了表的名称脚本中断您的凭据过期等。 如果您指望监视作业/例行程序/脚本来运行并发出问题信号那么缺少警报可能会导致您认为一切正常而实际上监视作业只是没有运行或它们存在一些问题。 您需要自己监控监控作业以防止这种情况元监控。建议 监控作业的执行时间。稳步增加的执行时间可能表明您很快将不得不改变策略。执行时间太短可能表明作业中存在其他问题。 使用心跳式警报。您可以在每个作业/脚本的末尾添加一个步骤以向其他系统发送 ping。当某些事情没有发生时心跳警报就会响起例如如果后端超过 24 小时没有收到 ping。七、批量监控模式背景 您有批处理作业来分析模型日志数据并计算这些数据的聚合每天的平均特征值、平均分数等但实际上需要有人去查看数据以查看是否一切正常。说明 创建被忽略的监控报告很容易因为没有人有时间主动去仪表板/笔记本并查看结果。以下是一些使它们更有用和更有效的方法。建议 让作业在每次运行结束时主动将结果图表、表格等作为消息发送到您的电子邮件。在消息正文中只包含最重要的信息。 这里的想法是拥有足够的信息以便您可以快速查看是否有任何问题。 在消息正文中添加指向完整仪表板/报告数据的链接以便人们可以在需要时查看整个内容。 编写可以默认处理历史数据的代码这样可以更轻松地重用代码进行历史分析和增量例如每日监控。 尽可能使用业务语言以便所有利益相关者不仅仅是技术人员都能理解模型对业务决策的影响。八、训练/服务偏差监控仅限实时模型背景 用于实时推理的模型通常以批量方式对从数据库中检索的历史数据进行训练。 这会产生用于训练的数据路径与用于推理的数据路径不完全匹配的风险通常是 HTTP 调用外部服务以获取特征。这称为训练/服务偏差。说明 训练/服务偏差是部署实时模型时应考虑的主要风险。只要模型在使用中就必须持续监控。 这里不匹配的最常见原因是模型依赖于实时获取特征数据的外部服务的变化。建议 监控批处理/实时流之间的精确匹配率即如果两个流之间存在精确匹配则为 1如果没有精确匹配则为 0并像监控其他特征一样监控此值。这样你就可以看到每个特征有多少偏差。 监控偏差的大小对于批处理和实时数据路径之间不匹配的情况它有多严重这只是一个小差异还是一个大差异 监控计数监控给定日期的每个数据路径中有多少示例。这很重要因为未知的变化可能会导致更多示例被您预期的实时模型评分。九、警报模式仅限实时模型背景 您创建了一些实时警报电子邮件、移动推送通知等以在模型以意想不到的方式表现时提醒您例如奇怪的特征值、缺失的特征、分数太高/太低等等。说明 很容易导致警报过于嘈杂经常发出警报人们不再认真对待它们或根本不敏感警报从不发出即使它们应该发出。 您应该尝试使警报保持相关且易于操作包括足够的信息以便人们快速判断警报是否表明存在实际问题。建议 注意奇怪的时间段如清晨、周末等。由于在这些时间段模型评分的示例可能会少得多警报可能会因为样本量太小而发出。 始终包括用于警报的时间范围和特定数据点以便人们评估它是否是误报 坏“模型 Y 中的特征 X 太高了”。好“过去 15 分钟模型 Y 中的特征 X 的平均值太高预期在 0.4 和 0.5 之间但实际上是 100.0” 如果可能请包含指向完整仪表板的链接或可以查看更完整数据并决定是否应该进一步调查的地方。 如果可能手头有一些故障排除指南以便新的团队成员可以轻松地对警报采取行动。结论这些是我们在 Nubank 监控多个 ML 模型时发现的一些有用的技巧。它们用于各种业务环境信用、欺诈、CX、运营等我们相信它们足够通用也适用于其他公司。原文https://building.nubank.com.br/ml-model-monitoring-9-tips-from-the-trenches/