使用 Amazon SageMaker Canvas 检测制造数据中的异常 |亚马逊网络服务

使用 Amazon SageMaker Canvas 检测制造数据中的异常 |亚马逊网络服务

随着云计算、大数据和机器学习(ML)工具的使用 亚马逊雅典娜 or 亚马逊SageMaker 任何人都可以使用,无需花费太多精力来创建和维护。工业公司越来越多地关注数据分析和数据驱动的决策,以提高整个产品组合(从运营到执行预测性维护或规划)的资源效率。

由于IT变革的速度之快,传统行业的客户面临着技能的困境。一方面,分析师和领域专家对相关数据及其解释有非常深入的了解,但往往缺乏对数据科学工具和高级编程语言(例如 Python)的接触。另一方面,数据科学专家通常缺乏解释机器数据内容并筛选相关内容的经验。这种困境阻碍了创建使用数据生成与业务相关的见解的有效模型。

亚马逊 SageMaker 画布 通过为领域专家提供无代码界面来创建强大的分析和机器学习模型(例如预测、分类或回归模型)来解决这一困境。它还允许您在创建后部署这些模型并与 ML 和 MLOps 专家共享。

在这篇文章中,我们将向您展示如何使用 SageMaker Canvas 来管理和选择数据中的正确特征,然后使用 SageMaker Canvas 的无代码功能进行模型调整来训练用于异常检测的预测模型。

制造业异常检测

在撰写本文时,SageMaker Canvas 专注于典型的业务用例,例如预测、回归和分类。在这篇文章中,我们演示了这些功能如何帮助检测复杂的异常数据点。例如,该用例与查明工业机器的故障或异常操作相关。

异常检测在工业领域非常重要,因为机器(从火车到涡轮机)通常非常可靠,故障间隔时间长达数年。来自这些机器的大多数数据(例如温度传感器读数或状态消息)描述了正常操作,并且对于决策的价值有限。工程师在调查故障的根本原因时寻找异常数据或将其作为未来故障的警告指标,而性能经理则检查异常数据以识别潜在的改进。因此,迈向数据驱动决策的典型第一步依赖于查找相关(异常)数据。

在这篇文章中,我们使用 SageMaker Canvas 来管理和选择数据中的正确特征,然后训练用于异常检测的预测模型,使用 SageMaker Canvas 无代码功能进行模型调整。然后我们将模型部署为 SageMaker 端点。

解决方案概述

对于我们的异常检测用例,我们训练一个预测模型,根据影响特征(例如汽车中应用的速度和最近的扭矩)来预测机器正常运行的特征特征(例如汽车中指示的电机温度) 。为了对新的测量样本进行异常检测,我们将特征特征的模型预测与提供的观察结果进行比较。

以汽车电机为例,领域专家获得正常电机温度、最近电机扭矩、环境温度和其他潜在影响因素的测量值。这些允许您训练模型以根据其他特征预测温度。然后我们可以使用该模型定期预测电机温度。当该数据的预测温度与该数据中的观测温度相似时,电机工作正常;差异将表明存在异常,例如冷却系统故障或电机缺陷。

下图说明了解决方案体系结构。

流程概述:在 SageMaker Canvas 中创建模型、部署模型,然后从 AWS Lambda Funcino 访问模型。

该解决方案包括四个关键步骤:

  1. 领域专家创建初始模型,包括使用 SageMaker Canvas 进行数据分析和功能管理。
  2. 领域专家通过以下方式共享模型 Amazon SageMaker 模型注册表 或者直接将其部署为实时端点。
  3. MLOps 专家创建推理基础设施和代码,将预测的模型输出转换为异常指标。该代码通常在一个 AWS Lambda 功能。
  4. 当应用程序需要异常检测时,它会调用 Lambda 函数,该函数使用模型进行推理并提供响应(无论是否异常)。

先决条件

要跟随这篇文章,您必须满足以下先决条件:

使用 SageMaker 创建模型

模型创建过程遵循在 SageMaker Canvas 中创建回归模型的标准步骤。欲了解更多信息,请参阅 开始使用 Amazon SageMaker Canvas.

首先,领域专家将相关数据加载到 SageMaker Canvas 中,例如测量的时间序列。在这篇文章中,我们使用包含电动机(合成生成的)测量值的 CSV 文件。详情请参阅 将数据导入画布。使用的示例数据可供下载 CSV.

显示 csv 的第一行的图片。此外,还显示了快速预览模型的直方图和基准指标。

使用 SageMaker Canvas 整理数据

加载数据后,领域专家可以使用 SageMaker Canvas 来整理最终模型中使用的数据。为此,专家选择包含相关问题的特征测量值的列。更准确地说,专家选择彼此相关的列,例如通过压力-温度曲线等物理关系,并且该关系的变化是其用例的相关异常。异常检测模型将了解所选列之间的正常关系,并在数据不符合该关系时进行指示,例如在给定电机当前负载的情况下电机温度异常高。

在实践中,领域专家需要选择一组合适的输入列和目标列。输入通常是确定机器行为的数量(数字或分类)的集合,从需求设置到负载、速度或环境温度。输出通常是指示机器操作性能的数值量,例如测量能量耗散的温度或当机器在次优条件下运行时发生变化的另一个性能指标。

为了说明为输入和输出选择哪些数量的概念,让我们考虑几个例子:

  • 对于旋转设备,例如我们在本文中构建的模型,典型输入是转速、扭矩(当前和历史)和环境温度,目标是由此产生的轴承或电机温度,表明旋转的良好运行状况
  • 对于风力涡轮机,典型输入是风速和转子叶片设置的当前和最近历史记录,目标量是产生的功率或转速
  • 对于化学过程,典型的输入是不同成分的百分比和环境温度,目标是产生的热量或最终产品的粘度
  • 对于滑动门等移动设备,典型的输入是电机的功率输入,目标值是移动的速度或完成时间
  • 对于 HVAC 系统,典型输入是实现的温差和负载设置,目标量是测量的能耗

最终,给定设备的正确输入和目标将取决于用例和要检测的异常行为,并且熟悉特定数据集复杂性的领域专家最了解。

在大多数情况下,选择合适的输入和目标数量意味着仅选择正确的列并标记目标列(对于本例, bearing_temperature)。但是,领域专家还可以使用 SageMaker Canvas 的无代码功能来转换列并细化或聚合数据。例如,您可以从不相关的数据中提取或过滤特定日期或时间戳。 SageMaker Canvas 支持此流程,显示所选数量的统计信息,让您了解数量是否存在可能影响模型结果的异常值和分布。

训练、调整和评估模型

领域专家在数据集中选择了合适的列后,他们可以训练模型以了解输入和输出之间的关系。更准确地说,模型将学习预测从输入中选择的目标值。

通常,您可以使用 SageMaker Canvas 模型预览 选项。这可以快速指示预期的模型质量,并允许您研究不同输入对输出指标的影响。例如,在下面的屏幕截图中,模型受以下因素影响最大: motor_speedambient_temperature 预测时的指标 bearing_temperature。这是明智的,因为这些温度密切相关。同时,额外的摩擦或其他能量损失方式也可能会影响这一点。

对于模型质量,模型的 RMSE 是模型学习训练数据中的正常行为以及重现输入和输出测量之间关系的能力的指标。例如,在下面的模型中,模型应该能够预测正确的 motor_bearing 温度在 3.67 摄氏度以内,因此我们可以将实际温度与模型预测的偏差大于例如 7.4 度视为异常。但是,您将使用的实际阈值将取决于部署场景中所需的敏感度。

显示实际和预测电机速度的图表。该关系与一些噪声呈线性关系。

最后,模型评估和调整完成后,您可以开始完整的模型训练,以创建用于推理的模型。

部署模型

尽管 SageMaker Canvas 可以使用模型进行推理,但异常检测的高效部署需要您在 SageMaker Canvas 外部部署模型。更准确地说,我们需要将模型部署为端点。

在这篇文章中,为了简单起见,我们直接将模型部署为 SageMaker Canvas 的端点。有关说明,请参阅 将您的模型部署到端点。请务必记下部署名称并考虑您部署到的实例类型的定价(在本文中,我们使用 ml.m5.large)。然后,SageMaker Canvas 将创建一个模型端点,可以调用该端点来获取预测。

显示模型部署配置的应用程序窗口。显示的设置是机器大小ml.m5.large 和部署名称sample-anomaly-model。

在工业环境中,模型在部署之前需要经过彻底的测试。为此,领域专家不会部署它,而是将模型共享到 SageMaker 模型注册表。在这里,MLOps 运营专家可以接管。通常,该专家将测试模型端点,评估目标应用程序所需的计算设备的大小,并确定最具成本效益的部署,例如无服务器推理或批量推理的部署。这些步骤通常是自动化的(例如,使用 亚马逊 Sagemaker 管道 或者 亚马逊SDK).

显示将模型从 Amazon Sgemaker 共享到模型注册表的按钮的图像。

使用模型进行异常检测

在上一步中,我们在 SageMaker Canvas 中创建了一个模型部署,名为 canvas-sample-anomaly-model。我们可以用它来获得a的预测 bearing_temperature 基于数据集中其他列的值。现在,我们想使用此端点来检测异常。

为了识别异常数据,我们的模型将使用预测模型端点来获取目标指标的预期值,然后将预测值与数据中的实际值进行比较。预测值表示基于训练数据的目标指标的预期值。因此,该值的差异是观察到的实际数据异常的度量。我们可以使用下面的代码:

# We are using pandas dataframes for data handling
import pandas as pd import boto3,json
sm_runtime_client = boto3.client('sagemaker-runtime') # Configuration of the actual model invocation
endpoint_name="canvas-sample-anomaly-model"
# Name of the column in the input data to compare with predictions
TARGET_COL='bearing_temperature' def do_inference(data, endpoint_name): # Example Code provided by Sagemaker Canvas body = data.to_csv(header=False, index=True).encode("utf-8") response = sm_runtime_client.invoke_endpoint(Body = body, EndpointName = endpoint_name, ContentType = "text/csv", Accept = "application/json", ) return json.loads(response["Body"].read()) def input_transformer(input_data, drop_cols = [ TARGET_COL ] ): # Transform the input: Drop the Target column return input_data.drop(drop_cols,axis =1 ) def output_transformer(input_data,response): # Take the initial input data and compare it to the response of the prediction model scored = input_data.copy() scored.loc[ input_data.index,'prediction_'+TARGET_COL ] = pd.DataFrame(
response[ 'predictions' ],
index = input_data.index )['score'] scored.loc[ input_data.index,'error' ] = (
scored[ TARGET_COL ]-scored[ 'prediction_'+TARGET_COL ]
).abs() return scored # Run the inference
raw_input = pd.read_csv(MYFILE) # Read my data for inference
to_score = input_transformer(raw_input) # Prepare the data
predictions = do_inference(to_score, endpoint_name) # create predictions
results = output_transformer(to_score,predictions) # compare predictions & actuals

前面的代码执行以下操作:

  1. 输入数据被过滤为正确的特征(函数“input_transformer“)。
  2. 使用过滤后的数据调用 SageMaker 模型端点(函数“do_inference“),我们根据在 SageMaker Canvas 中打开部署的详细信息页面时提供的示例代码处理输入和输出格式。
  3. 调用的结果与原始输入数据相连接,并将差异存储在错误列中(函数“output_transform“)。

发现异常并评估异常事件

在典型设置中,获取异常的代码在 Lambda 函数中运行。 Lambda 函数可以从应用程序调用,或者 Amazon API网关。主函数返回输入数据每行的异常分数 - 在本例中为异常分数的时间序列。

为了进行测试,我们还可以在 SageMaker 笔记本中运行代码。下图显示了使用示例数据时模型的输入和输出。预测值与实际值之间的偏差峰值(异常得分,如下图所示)表示异常。例如,在图中,我们可以看到三个不同的峰值,其中异常分数(预期温度与实际温度之间的差异)超过 7 摄氏度:第一个峰值是在长时间闲置之后,第二个峰值是在温度急剧下降时。 bearing_temperature,以及最后一个地方 bearing_temperature 相比之下高 motor_speed.

两个时间序列图。顶部显示电机温度和电机速度的时间序列。下图显示了一段时间内的异常得分,其中三个峰值表示异常。

在许多情况下,知道异常分数的时间序列就已经足够了;您可以根据模型敏感性的需要设置何时警告重大异常的阈值。当前分数表明机器存在异常状态,需要进行调查。例如,对于我们的模型,异常分数的绝对值的分布如下图所示。这证实了大多数异常分数低于模型训练期间发现的 (2xRMS=)8 度作为典型误差。该图可以帮助您手动选择阈值,以便将正确百分比的评估样本标记为异常。

异常分数值出现的直方图。曲线从 x=0 减小到 x=15。

如果所需的输出是异常事件,则模型提供的异常分数需要细化才能与业务使用相关。为此,机器学习专家通常会添加后处理以消除异常分数上的噪声或大峰值,例如添加滚动平均值。此外,专家通常会通过类似于提高异常分数的逻辑来评估异常分数 亚马逊CloudWatch 警报,例如监控特定持续时间内违反阈值的情况。有关设置警报的更多信息,请参阅 使用 Amazon CloudWatch 警报。在 Lambda 函数中运行这些评估允许您发送警告,例如,通过向 亚马逊简单通知服务 (Amazon SNS)主题。

清理

使用完该解决方案后,应进行清理以避免不必要的成本:

  1. 在 SageMaker Canvas 中,找到您的模型端点部署并将其删除。
  2. 注销 SageMaker Canvas 以避免因闲置运行而产生费用。

总结

在这篇文章中,我们展示了领域专家如何评估输入数据并使用 SageMaker Canvas 创建 ML 模型,而无需编写代码。然后我们展示了如何使用该模型通过简单的工作流程使用 SageMaker 和 Lambda 执行实时异常检测。这种组合使领域专家能够利用他们的知识创建强大的机器学习模型,而无需额外的数据科学培训,并使 MLOps 专家能够使用这些模型并使其可用于灵活高效的推理。

SageMaker Canvas 提供 2 个月的免费套餐,之后您只需按使用量付费。立即开始尝试并添加机器学习以充分利用您的数据。


关于作者

使用 Amazon SageMaker Canvas 检测制造数据中的异常 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。 赫尔格·奥夫德海德 热衷于让数据在现实世界中可用,特别关注工业应用(例如制造和移动)中的自动化、分析和机器学习。

时间戳记:

更多来自 AWS机器学习