数据重新排列 - Amazon Machine Learning

我们不再更新 Amazon Machine Learning 服务,也不再接受新用户使用该服务。本文档可供现有用户使用,但我们不会再对其进行更新。有关更多信息,请参阅什么是 Amazon Machine Learning

数据重新排列

数据重新排列功能使您可以仅基于所指向的一部分输入数据创建数据源。例如,当您在 Amazon ML 控制台中使用创建机器学习模型向导创建 ML 模型并选择了默认评估选项时,Amazon ML 自动保留 30% 的数据用于 ML 模型评估,使用另外的 70% 进行训练。此功能由 Amazon ML 的数据排列功能启用。

如果您在使用 Amazon ML API 创建数据源,您可以指定新数据源将基于哪一部分的输入数据。要执行此操作,您可将 DataRearrangement 参数中的指令传递到 CreateDataSourceFromS3CreateDataSourceFromRedshiftCreateDataSourceFromRDS API。DataRearrangement 字符串的内容是 JSON 字符串,包含您数据的开头和结尾位置,以百分比、一个补充标记和一个拆分策略表示。例如,以下 DataRearrangement 字符串指定将使用数据的前 70% 创建数据源:

{ "splitting": { "percentBegin": 0, "percentEnd": 70, "complement": false, "strategy": "sequential" } }

DataRearrangement 参数

要更改 Amazon ML 创建数据源的方式,请使用以下参数。

PercentBegin(可选)

使用 percentBegin 指示数据源的数据开始位置。如果您未包括 percentBeginpercentEnd,Amazon ML 将在创建数据源时包括所有数据。

有效值为 0100(含)。

PercentEnd(可选)

使用 percentEnd 指示数据源的数据结束位置。如果您未包括 percentBeginpercentEnd,Amazon ML 将在创建数据源时包括所有数据。

有效值为 0100(含)。

Complement(可选)

complement 参数告知 Amazon ML 使用未包括在 percentBeginpercentEnd 范围中的数据来创建数据源。如果您需要为训练和评估创建补充数据源,complement 参数非常有用。要创建补充数据源,请为 percentBeginpercentEnd 使用相同值,并包括 complement 参数。

例如,以下两个数据源不共享任何数据,并可用于训练和评估模型。第一个数据源具有 25% 的数据,第二个具有 75% 的数据。

用于评估的数据源:

{ "splitting":{ "percentBegin":0, "percentEnd":25 } }

用于训练的数据源:

{ "splitting":{ "percentBegin":0, "percentEnd":25, "complement":"true" } }

有效值为 truefalse

Strategy(可选)

要更改 Amazon ML 如何为数据源拆分数据,请使用 strategy 参数。

strategy 参数的默认值为 sequential,这意味着 Amazon ML 按照记录在输入数据中的显示顺序,获取 percentBeginpercentEnd 参数之间的所有数据记录用于数据源。

以下两行 DataRearrangement 是按顺序排序的训练和评估数据源示例:

用于评估的数据源:{"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential"}}

用于训练的数据源:{"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential", "complement":"true"}}

要从随机选择的数据创建数据源,请将 strategy 参数设置为 random 并提供用作随机数据拆分种子值的字符串(例如,您可以使用数据的 S3 路径作为随机种子字符串)。如果您选择随机拆分策略,Amazon ML 会向每个数据行分配一个伪随机编号,然后选择分配编号在 percentBeginpercentEnd 之间的行。伪随机编号使用字节偏移值作为种子进行分配,因此更改数据会导致不同的拆分。保留所有现有排序。随机拆分策略可以确保训练和评估中的变量具有类似分布。输入数据可能会有隐式排序顺序时,会导致训练和评估数据源包含不相似的数据记录,这种情况下该策略会非常有用。

以下两行 DataRearrangement 是按非顺序排序的训练和评估数据源示例:

用于评估的数据源:

{ "splitting":{ "percentBegin":70, "percentEnd":100, "strategy":"random", "strategyParams": { "randomSeed":"RANDOMSEED" } } }

用于训练的数据源:

{ "splitting":{ "percentBegin":70, "percentEnd":100, "strategy":"random", "strategyParams": { "randomSeed":"RANDOMSEED" } "complement":"true" } }

有效值为 sequentialrandom

(可选)Strategy:RandomSeed

Amazon ML 使用 randomSeed 拆分数据。API 的默认种子是空字符串。要为随机拆分策略指定种子,请传入字符串。有关随机种子的更多信息,请参阅 Amazon Machine Learning 开发人员指南中的 随机拆分数据

有关演示如何使用 Amazon ML 进行交叉验证的示例代码,请转到 Github 机器学习示例