

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Random Cut Forest (RCF) 算法
<a name="randomcutforest"></a>

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

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

异常检测算法在一维时间序列数据上有很多应用，例如流量分析或音量峰值检测，而 RCF 设计用于任意维度的输入。Amazon SageMaker AI RCF 在功能数量、数据集大小和实例数量方面可以很好地扩展。

**Topics**
+ [RCF 算法的输入/输出接口](#rcf-input_output)
+ [RCF 算法的实例建议](#rcf-instance-recommend)
+ [RCF 示例笔记本](#rcf-sample-notebooks)
+ [RCF 工作原理](rcf_how-it-works.md)
+ [RCF 超参数](rcf_hyperparameters.md)
+ [优化 RCF 模型](random-cut-forest-tuning.md)
+ [RCF 响应格式](rcf-in-formats.md)

## RCF 算法的输入/输出接口
<a name="rcf-input_output"></a>

Amazon SageMaker AI Random Cut Forest 支持`train`和`test`数据通道。可选测试通道用于计算所标记数据的准确度、精度、召回率和 F1 分数指标。训练和测试数据内容类型可为 `application/x-recordio-protobuf` 或 `text/csv` 格式。对于测试数据，使用 text/csv 格式时，必须将内容指定为 text/csv；label\$1size=1，其中每行的第一列表示异常标签：“1” 表示异常数据点，“0” 表示普通数据点。您可以使用文件模式或管道模式，针对格式为 `recordIO-wrapped-protobuf` 或 `CSV` 的数据训练 RCF 模型。

训练通道仅支持 `S3DataDistributionType=ShardedByS3Key`，测试通道仅支持 `S3DataDistributionType=FullyReplicated`。以下示例使用 Amazon [ SageMaker Python 软件开发工具包为列车频道指定 S](https://sagemaker.readthedocs.io/en/stable/v2.html) 3 分配类型。

**注意**  
在 [SageMaker Python SDK v2 `sagemaker.inputs.TrainingInput`](https://sagemaker.readthedocs.io/en/stable/v2.html#s3-input) 中，该`sagemaker.inputs.s3_input`方法已重命名为。

```
  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})
```

为避免执行角色方面的常见错误，请确保您拥有所需的执行角色 `AmazonSageMakerFullAccess` 和 `AmazonEC2ContainerRegistryFullAccess`。为避免出现映像不存在或其权限不正确等常见错误，请确保 ECR 映像不大于训练实例上分配的磁盘空间。为避免这种情况，请在具有足够磁盘空间的实例上运行训练作业。此外，如果您的 ECR 映像来自其他 Amazon 账户的弹性容器服务 (ECS) 存储库，并且您未将存储库权限设置为授予访问权限，则会导致错误。请参阅 [ECR 存储库权限](https://docs.amazonaws.cn/AmazonECR/latest/userguide/set-repository-policy.html)，了解有关设置存储库策略语句的更多信息。

请参阅 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_S3DataSource.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_S3DataSource.html)，了解有关自定义 S3 数据源属性的更多信息。最后，为了利用多实例训练，训练数据必须至少分区为与实例相同数量的文件。

对于推理，RCF 支持 `application/x-recordio-protobuf`、`text/csv` 和 `application/json` 输入数据内容类型。有关更多信息，请参阅[内置算法的参数](common-info-all-im-models.md)文档。RCF 推理返回 `application/x-recordio-protobuf` 或 `application/json` 格式的输出。这些输出数据中的每个记录包含各个输入数据点对应的异常分数。有关更多信息，请参阅[常见数据格式 -- 推理](https://docs.amazonaws.cn/sagemaker/latest/dg/cdf-inference.html)。

有关输入和输出文件格式的更多信息，请参阅[RCF 响应格式](rcf-in-formats.md)（对于推理）和[RCF 示例笔记本](#rcf-sample-notebooks)。

## RCF 算法的实例建议
<a name="rcf-instance-recommend"></a>

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

## RCF 示例笔记本
<a name="rcf-sample-notebooks"></a>

有关如何训练 RCF 模型并使用它进行推断的示例，请参阅 [ SageMaker AI Random Cut Forests 简介笔记本。](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/random_cut_forest/random_cut_forest.html)有关如何创建和访问可用于在 SageMaker AI 中运行示例的 Jupyter 笔记本实例的说明，请参阅。[Amazon SageMaker 笔记本实例](nbi.md)创建并打开笔记本实例后，选择 “**SageMaker AI 示例**” 选项卡以查看所有 SageMaker AI 示例的列表。要打开笔记本，请单击**使用** 选项卡，然后选择**创建副本**。

有关使用 RCF 算法的博客文章，请参阅[使用内置的 Amazon A SageMaker I Random Cut Forest 算法进行异常检测](https://www.amazonaws.cn/blogs/machine-learning/use-the-built-in-amazon-sagemaker-random-cut-forest-algorithm-for-anomaly-detection/)。