Neptune ML 中的功能编码 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Neptune ML 中的功能编码

属性值有不同的格式和数据类型。为了在机器学习中实现良好的性能,必须将这些值转换为称为数字编码功能.

作为数据导出和数据处理步骤的一部分,Neptune ML 使用此处介绍的特征编码技术执行特征提取和编码。

注意

如果您计划在自定义模型实现中实现自己的特征编码,则可以通过选择以下方法在数据预处理阶段禁用自动特征编码none作为功能编码类型。然后,该节点或边缘属性上不会进行任何要素编码,而是解析原始属性值并将其保存在字典中。数据预处理仍然会根据导出的数据集创建 DGL 图形,但构造的 DGL 图没有用于训练的预处理功能。

只有在计划作为自定义模型训练的一部分执行自定义功能编码时,才应使用此选项。有关更多信息,请参阅 Neptune ML 中的自定义模型

Neptune ML 中的分类功能

可以从固定的可能值列表中获取一个或多个不同值的属性是一种分类功能。在 Neptune ML 中,分类要素是使用一热编码. 以下示例显示了不同食物的属性名称如何根据其类别进行单热编码:

Food Veg. Meat Fruit Encoding --------- ---- ---- ----- -------- Apple 0 0 1 001 Chicken 0 1 0 010 Broccoli 1 0 0 100
注意

任何类别要素中的最大类别数为 100。如果一个属性的价值类别超过 100 个,那么只有最常见的 99 个属性被放置在不同的类别中,其余的被放置在名为的特殊类别中OTHER.

Neptune ML 中的数字特征

任何值为实数的属性都可以在 Neptune ML 中编码为数字要素。使用浮点数编码数字对数字要素进行编码。

您可以指定在编码数字要素时使用的数据规范化方法,如下所示:"norm": "normalization technique". 支持以下标准化技术:

  • “无”— 在编码过程中不要对数值进行标准化。

  • “最小-最大”— 通过从每个值中减去最小值,然后除以最大值和最小值之间的差值来标准化每个值。

  • “标准”— 通过将每个值除以所有值的总和来标准化每个值。

Neptune ML 中的存储桶数值功能

您可以将数值压缩为类别,而不是使用原始数字表示数字属性。例如,您可以将人们的年龄划分为类别,例如孩子(0-20 岁)、年轻人(20-40 岁)、中年人(40-60 岁)和长者(60 岁起)。使用这些数字存储桶,您将把数字属性转换为一种类别功能。

在 Neptune ML 中,您可以将数字属性编码为存储桶数值功能,必须提供两件事:

  • 表格中的数字范围, "range": [a, b] ,其中ab是整数。

  • 表格中的存储桶数 "bucket_cnt": c ,其中c是存储桶的数量,也是整数。

然后,Neptune ML 计算每个存储桶的大小为 ( b - a ) / c ,并将每个数字值编码为它所属的任何存储桶的数量。任何小于的值a被视为属于第一个存储桶中,且任何大于的值b被认为属于最后一个存储桶。

您还可以选择通过指定幻灯片窗口大小,使数值落入多个存储桶中,如下所示: "slide_window_size": s ,其中s是数字。然后,Neptune ML 会转换每个数值v的房地产的范围从 v - s/2 通过 v + s/2 ,然后分配值v到该范围涵盖的每个存储桶。

最后,您还可以选择提供一种填写数字要素和存储桶数值要素缺失值的方法。您可以使用此操作。 "imputer": "imputation technique ",归因技术是其中之一"mean""median",或者"most-frequent". 如果您没有指定计算机,则缺少值可能导致处理停止。

Neptune ML 中的文本 Word2VEC 功能

Neptune ML 可以将由一系列令牌组成的字符串属性值转换为text_word2vec功能。这使用其中一个将字符串中的标记编码为密集向量SPacy 训练模型(Neptune ML 目前只支持英语en_core_web_lg模型)。

在 Neptune 机器学习中文本 TF-IDF 功能

TF-IDF(术语频率 — 反向文档频率)是一个数值,用于衡量单词在文档集中的重要性。它的计算方法是将单词出现在给定属性值中的次数除以其中显示的此类属性值的总数。

例如,如果在给定的电影标题中出现两次 “吻” 一词(比如 “亲吻砰砰”),并且 “吻” 一共出现在 4 部电影的标题中,那么 “吻砰砰” 标题中的 TF-IDF 值 “吻” 将是 2 / 4 .

Neptune ML 可以将句子或其他自由格式的文本属性值编码为text_tfidf功能。此编码使用 TF-IDF 矢量器将文本中的单词序列转换为数字矢量,然后执行减少维数操作。

最初创建的矢量有d其中,d是该类型所有属性值中唯一术语的数量。维度减小操作使用随机稀疏投影将该数字减少到最多 100。然后通过合并所有text_tfidf其中的功能。

您可以通过以下几种方式控制 TF-IDF 矢量器:

  • max_features— 使用max_features参数,您可以在中限制术语数text_tfidf最常见的功能。例如,如果您设置max_features至 100,只包括前 100 个最常用的术语。的默认值max_features如果您未显式设置,则该值为 5,000。

  • min_df— 使用min_df参数,您可以在中限制术语数text_tfidf至少具有指定文档频率的功能。例如,如果您设置min_df至 5,仅使用出现在至少 5 个不同属性值中的术语。的默认值min_df如果您没有显式设置,则为 2。

  • ngram_range— 该ngram_range参数确定哪些单词组合被视为术语。例如,如果您设置ngram_range[2, 4],在 “亲吻砰砰” 标题中可以找到以下 6 个术语:

    • 2 个词条:“亲吻”、“亲吻砰” 和 “砰砰”。

    • 3 个字术语:“亲吻砰” 和 “亲吻砰砰”。

    • 4 个字术语: “亲吻一声砰砰”。

    ngram_range 的默认设置是 [1, 1]

Neptune ML 中的日期时间功能

Neptune ML 可以转换datetime通过将属性值编码为一热阵列. 使用datetime_parts参数指定以下一个或多个要编码的部分:["year", "month", "weekday", "hour"]. 如果你没设置datetime_parts,默认情况下,所有四个部分都已编码。

例如,如果日期时间值的范围跨越 2010 年至 2012 年,则日期时间条目的四个部分2011-04-22 01:16:34如下所示:

  • [0, 1, 0].

    由于跨度只有 3 年(2010 年、2011 年和 2012 年),因此单热阵列有三个条目,每年一个条目。

  • [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0].

    在这里,单热阵列在一年中的每个月都有一个条目。

  • 工作日[0, 0, 0, 0, 1, 0, 0].

    ISO 8601 标准规定,周一是一周的第一天,由于 2011 年 4 月 22 日是星期五,相应的一个热点工作日阵列处于第五位。

  • 小时[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].

    时间 1 AM 设置在 24 个成员的单热阵列中。

月中的第一天、分钟和秒没有完全编码。

如果总计数datetime有问题的范围只包括一年内的日期,不year数组已编码。

你可以指定估算策略来填补缺失datetime值,使用imputer参数以及可用于数值要素的策略之一。

Neptune ML 中的自动功能编码

您可以设置,而不是手动指定要用于图表中的属性的要素编码方法auto作为一种功能编码方法。然后,Neptune ML 尝试根据每个属性的底层数据类型推断出最佳的要素编码。

以下是 Neptune ML 在选择适当的功能编码时使用的一些启发式方法:

  • 如果属性只有数字值并且可以转换为数字数据类型,那么 Neptune ML 通常将其编码为数值。但是,如果属性的唯一值数量少于值总数的 10%,且这些唯一值的基数小于 100,那么 Neptune ML 将使用分类编码。

  • 如果属性值可以转换为datetime类型,然后 Neptune ML 将它们编码为datetime功能。

  • 如果可以将属性值强制为布尔值(1/0 或 True/False),那么 Neptune ML 将使用类别编码。

  • 如果属性是具有超过 10% 的值唯一的字符串,且每个值的平均令牌数大于或等于 3,那么 Neptune ML 会推断属性类型为文本并使用text_word2vec编码。

  • 如果属性是未归类为文本要素的字符串,那么 Neptune ML 假定它是一个分类功能,并使用类别编码。

  • 如果每个节点对于被推断为类别要素的属性都有自己的唯一值,那么 Neptune ML 将从训练图中删除该属性,因为它可能是一个 ID,对于学习而言无法提供信息。

  • 如果已知属性包含有效的 Neptune 分隔符,例如分号 (“;”),那么 Neptune ML 只能将该属性视为MultiNumerical要么MultiCategorical.

    • Neptune ML 首先尝试将这些值编码为数字要素。如果成功,Neptune ML 将使用数字编码来创建数字矢量要素。

    • 否则,Neptune ML 将这些值编码为多类别。

  • 如果 Neptune ML 无法推断属性值的数据类型,那么 Neptune mlDrops 将从训练图中推断出属性。