Random Cut Forest (RCF) 算法 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Random Cut Forest (RCF) 算法

Amazon SageMaker Random Cut Forest (RCF) 是一种自主算法,用于检测数据集中的异常数据点。这些数据点是与良好结构或模式化数据存在偏差的观察数据。异常可以表现为时间序列数据中意外峰值、周期性中断或无法分类的数据点。它们很容易描述,表现为在图中查看时,它们通常很容易与“常规”数据区分。数据集中包括这些异常会显著增加机器学习任务的复杂性,因为“常规”数据通常使用简单模型描述。

对于每个数据点,RCF 关联一个异常分数。低分数值表明该数据点被视为“正常”。高分数值表明数据中存在异常。“低”和“高”的定义取决于应用,但常见做法建议将落在平均分数的三个标准偏差之外的分数视为异常。

异常检测算法在一维时间序列数据上有很多应用,例如流量分析或音量峰值检测,而 RCF 设计用于任意维度的输入。Amazon SageMaker RCF 可以很好地随着特征数、数据集大小和实例数缩放。

RCF 算法的输入/输出接口

Amazon SageMaker Random Cut Forest 支持 traintest 数据通道。可选测试通道用于计算所标记数据的准确度、精度、召回率和 F1 分数指标。训练和测试数据内容类型可为 application/x-recordio-protobuftext/csv 格式。对于测试数据,在使用文本/csv 格式时,内容必须指定为 text/csv;label_size=1,其中每行的第一列表示异常标签:1 表示异常数据点,0 表示普通数据点。您可以使用文件模式或管道模式,针对格式为 recordIO-wrapped-protobufCSV 的数据训练 RCF 模型。

训练通道仅支持 S3DataDistributionType=ShardedByS3Key,测试通道仅支持 S3DataDistributionType=FullyReplicated。以下示例使用 Amazon SageMaker Python SDK 指定训练通道的 S3 分配类型。

注意

SageMaker Python SDK v2 中,sagemaker.inputs.s3_input 方法已重命名为 sagemaker.inputs.TrainingInput

import sagemaker # specify Random Cut Forest training job information and hyperparameters rcf = sagemaker.estimator.Estimator(...) # explicitly specify "ShardedByS3Key" distribution type train_data = sagemaker.inputs.TrainingInput( s3_data=s3_training_data_location, content_type='text/csv;label_size=0', distribution='ShardedByS3Key') # run the training job on input data stored in S3 rcf.fit({'train': train_data})

为避免执行角色方面的常见错误,请确保您拥有所需的执行角色 AmazonSageMakerFullAccessAmazonEC2ContainerRegistryFullAccess。为避免出现映像不存在或其权限不正确等常见错误,请确保 ECR 映像不大于训练实例上分配的磁盘空间。为避免这种情况,请在具有足够磁盘空间的实例上运行训练作业。此外,如果您的 ECR 图像来自不同 Amazon 账户的 Elastic Container Service (ECS) 存储库,并且您没有设置存储库权限来授予访问权限,这将导致错误。请参阅 ECR 存储库权限,了解有关设置存储库策略语句的更多信息。

请参阅 S3DataSource,了解有关自定义 S3 数据源属性的更多信息。最后,为了利用多实例训练,训练数据必须至少分区为与实例相同数量的文件。

对于推理,RCF 支持 application/x-recordio-protobuftext/csvapplication/json 输入数据内容类型。有关更多信息,请参阅内置算法的常见数据格式文档。RCF 推理返回 application/x-recordio-protobufapplication/json 格式的输出。这些输出数据中的每个记录包含各个输入数据点对应的异常分数。有关更多信息,请参阅常见数据格式 -- 推理

有关输入和输出文件格式的更多信息,请参阅RCF 响应格式(对于推理)和RCF 示例笔记本

RCF 算法的实例建议

对于训练,我们建议使用 ml.m4ml.c4ml.c5 实例系列。对于推理,我们特别建议使用 ml.c5.xl 实例类型,用于实现最佳性能以及最低的每小时使用成本。尽管在技术上,算法可以在 GPU 实例类型上运行,但它没有充分利用 GPU 硬件。

RCF 示例笔记本

有关如何训练 RCF 模型并使用该模型进行推理的示例,请参阅 SageMaker 随机砍伐森林简介。有关如何创建和访问可用于在 SageMaker 中运行示例的 Jupyter 笔记本实例的说明,请参阅 Amazon SageMaker 笔记本实例。创建笔记本实例并将其打开后,选择 SageMaker 示例选项卡以查看所有 SageMaker 示例的列表。要打开笔记本,请单击使用 选项卡,然后选择创建副本