neptune_ml 中的 features 字段 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

neptune_ml 中的 features 字段

属性值和 RDF 文本值有不同的格式和数据类型。为了在机器学习中获得良好的性能,务必将这些值转换为称为特征的数字编码。

Neptune ML 在数据导出和数据处理步骤中执行特征提取和编码,如Neptune ML 中的特征编码中所述。

对于属性图数据集,导出过程会自动推理字符串属性和包含多个值的数值属性的 auto 特征。对于包含单个值的数值属性,它会推理 numerical 特征。对于日期属性,它会推理 datetime 特征。

如果要覆盖自动推理的特征规范,或者要为属性添加桶数值、TF-IDF、FastText 或 SBERT 规范,则可以使用特征字段控制特征编码。

注意

您只能使用 features 字段来控制属性图数据的特征规范,而不能用于控制 RDF 数据的特征规范。

对于自由格式文本,Neptune ML 可以使用几种不同的模型将字符串属性值中的令牌序列转换为固定大小的实值向量:

features 字段包含节点属性特征的 JSON 数组。数组中的对象可以包含以下字段:

features 中的 node 字段

node 字段指定特征顶点的属性图标签。例如:

"node": "Person"

如果顶点有多个标签,则使用数组来包含它们。例如:

"node": ["Admin", "Person"]

features 中的 edge 字段

edge 字段指定特征边缘的边缘类型。边缘类型由一个数组组成,该数组包含源顶点的属性图标签、边缘的属性图标签和目标顶点的属性图标签。指定边缘特征时,必须提供所有三个值。例如:

"edge": ["User", "reviewed", "Movie"]

如果边缘类型的源顶点或目标顶点有多个标签,请使用另一个数组来包含它们。例如:

"edge": [["Admin", "Person"]. "edited", "Post"]

features 中的 property 字段

使用 property 参数指定由 node 参数标识的顶点的属性。例如:

"property" : "age"

特征的 type 字段的可能值

type 参数指定要定义的特征的类型。例如:

"type": "bucket_numerical"
type 参数的可能值
  • "auto" – 指定 Neptune ML 应自动检测属性类型并应用正确的特征编码。auto 特征也可以有一个可选 separator 字段。

    请参阅Neptune ML 中的自动特征编码

  • "category"– 此特征编码将属性值表示为多个类别之一。换句话说,该特征可以采用一个或多个离散值。category 特征也可以有一个可选 separator 字段。

    请参阅Neptune ML 中的分类特征

  • "numerical"– 此特征编码将数值属性值表示为连续间隔中的数字,其中“大于”和“小于”具有含义。

    numerical 特征也可以具有可选 normimputerseparator 字段。

    请参阅Neptune ML 中的数值特征

  • "bucket_numerical" – 此特征编码将数字属性值划分为一组或类别。

    例如,您可以将人们的年龄编码为 4 个桶:儿童 (0-20)、年轻人 (20-40)、中年人 (40-60) 和老年人(60 岁及以上)。

    bucket_numerical 特征需要 rangebucket_cnt 字段,也可以选择包含 imputer 和/或 slide_window_size 字段。

    请参阅Neptune ML 中的桶数值特征

  • "datetime" – 此特征编码将日期时间属性值表示为以下分类特征的数组:年、月、工作日和小时。

    使用 datetime_parts 参数可以消除这四个类别中的一个或多个类别。

    请参阅Neptune ML 中的日期时间特征

  • "text_fasttext" – 此特征编码使用 fastText 模型将由句子或自由格式文本组成的属性值转换为数字向量。它支持五种语言,即英语 (en)、中文 (zh)、印地语 (hi)、西班牙语 (es) 和法语 (fr)。对于这五种语言中任意一种语言的文本属性值,推荐使用 text_fasttext 编码。但是,它无法处理同一个句子包含多种语言的字词的情况。

    对于除 fastText 支持的语言之外的其它语言,请使用 text_sbert 编码。

    如果您有许多长度超过比如 120 个令牌的属性值文本字符串,请使用 max_length 字段来限制 "text_fasttext" 编码的每个字符串中的令牌数量。

    请参阅Neptune ML 中文本属性值的 fastText 编码

  • "text_sbert" – 此编码使用句子 BERT (SBERT) 模型将文本属性值转换为数字向量。Neptune 支持两种 SBERT 方法,即 text_sbert128(如果您只指定 text_sbert,则这是默认方法)和 text_sbert512。它们之间的区别在于文本属性中编码的最大令牌数。text_sbert128 编码仅对前 128 个令牌进行编码,而 text_sbert512 最多可对 512 个令牌进行编码。因此,使用 text_sbert512 所需的处理时间可能比 text_sbert128 更长。两种方法都慢于 text_fasttext

    这些 text_sbert* 方法支持多种语言,并且可以对包含多种语言的句子进行编码。

    请参阅Neptune ML 中文本特征的句子 BERT (SBERT) 编码

  • "text_word2vec" – 此编码使用 Word2Vec 算法将文本属性值转换为数字向量。它仅支持英语。

    请参阅Neptune ML 中文本特征的 Word2Vec 编码

  • "text_tfidf" – 此编码使用术语频率 - 反向文档频率 (TF-IDF) 向量器将文本属性值转换为数字向量。

    您可以使用 ngram_range 字段、min_df 字段和 max_features 字段来定义 text_tfidf 特征编码的参数。

    请参阅Neptune ML 中文本特征的 TF-IDF 编码

  • "none" – 使用 none 类型会导致不进行任何特征编码。而是对原始属性值进行解析并保存。

    仅当您计划在自定义模型训练过程中执行自己的自定义特征编码时,才使用 none

norm 字段

此字段是数字特征的必需字段。它指定了一种用于数值的规范化方法:

"norm": "min-max"

支持以下规范化方法:

  • “min-max”– 通过从每个值中减去最小值,然后将其除以最大值和最小值之间的差值来规范化每个值。

  • “standard”- 通过将每个值除以所有值的总和来对其进行规范化。

  • “none”- 在编码过程中不对数值进行规范化。

请参阅Neptune ML 中的数值特征

language 字段

语言字段指定文本属性值中使用的语言。它的用法取决于文本编码方法:

  • 对于 text_fasttext 编码,此字段为必需字段,并且必须指定以下语言之一:

    • en(英语)

    • zh(中文)

    • hi(印地语)

    • es(西班牙语)

    • fr(法语)

  • 对于 text_sbert 编码,不使用此字段,因为 SBERT 编码是多语言的。

  • 对于 text_word2vec 编码,此字段是可选的,因为 text_word2vec 仅支持英语。如果存在,则它必须指定“英语”语言模型的名称:

    "language" : "en_core_web_lg"
  • 对于 text_tfidf 编码,不使用此字段。

max_length 字段

对于 text_fasttext 特征,max_length 字段是可选的,它指定输入文本特征中要编码的最大令牌数。长度大于 max_length 的输入文本会被截断。例如,将 max_length 设置为 128,表示将忽略文本序列中第 128 个之后的任何令牌:

"max_length": 128

separator 字段

此字段可选择性地与 categorynumericalauto 特征一起使用。它指定一个字符,该字符可用于将一个属性值拆分为多个类别值或数值:

"separator": ";"

只有当属性在单个字符串中存储多个分隔值(例如 "Actor;Director""0.1;0.2")时,才使用 separator 字段。

请参阅分类特征数值特征自动编码

range 字段

此字段是 bucket_numerical 特征的必需字段。它指定了要分成桶的数值范围,格式为 [lower-bound, upper-bound]

"range" : [20, 100]

如果属性值小于下限,则将其分配给第一个桶;如果值大于上限,则将其分配给最后一个桶。

请参阅Neptune ML 中的桶数值特征

bucket_cnt 字段

此字段是 bucket_numerical 特征的必需字段。它指定由 range 参数定义的数值范围应划分为的桶数:

"bucket_cnt": 10

请参阅Neptune ML 中的桶数值特征

slide_window_size 字段

此字段可以选择与 bucket_numerical 特征一起使用,以便为多个桶分配值:

"slide_window_size": 5

滑动窗口的工作方式是,Neptune ML 采用窗口大小 s,并将属性的每个数值 v 转换为从 v - s/2 v + s/2 的范围。然后将该值分配给范围重叠的每个桶。

请参阅Neptune ML 中的桶数值特征

imputer 字段

此字段可选择与 numericalbucket_numerical 特征一起使用,以提供一种用于填充缺失值的插补技术:

"imputer": "mean"

支持的插补技术有:

  • "mean"

  • "median"

  • "most-frequent"

如果不包含 imputer 参数,则当遇到缺失值时,数据预处理将停止并退出。

请参阅 Neptune ML 中的数值特征Neptune ML 中的桶数值特征

max_features 字段

text_tfidf 特征可以选择使用此字段来指定要编码的最大术语数:

"max_features": 100

设置为 100 会导致 TF-IDF 向量器仅对 100 个最常见的术语进行编码。如果不包括 max_features,则默认值为 5000。

请参阅Neptune ML 中文本特征的 TF-IDF 编码

min_df 字段

text_tfidf 特征可以选择使用此字段来指定要编码的术语的最小文档频率:

"min_df": 5

设置为 5 表示术语必须出现在至少 5 个不同的属性值中才能进行编码。

未包含 min_df 参数时的默认值为 2

请参阅Neptune ML 中文本特征的 TF-IDF 编码

ngram_range 字段

text_tfidf 特征可以选择使用该字段来指定字词或令牌的哪些大小序列应被视为要编码的潜在单个术语:

"ngram_range": [2, 4]

[2, 4] 指定应将 2、3 和 4 个字词的序列视为潜在的单个术语。

如果您未明确设置 ngram_range,则默认值为 [1, 1],这意味着只有单个字词或令牌被视为要编码的术语。

请参阅Neptune ML 中文本特征的 TF-IDF 编码

datetime_parts 字段

特征 datetime 可以选择使用此字段来指定对日期时间值的哪些部分进行分类编码:

"datetime_parts": ["weekday", "hour"]

如果不包括 datetime_parts,则默认情况下,Neptune ML 会对日期时间值的年、月、工作日和小时部分进行编码。值 ["weekday", "hour"] 表示只应在该特征中对日期时间值的工作日和小时进行分类编码。

如果其中一个部分在训练集中没有多个唯一值,则不会对其进行编码。

请参阅Neptune ML 中的日期时间特征