本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
neptune_ml 中的要素字段
属性值和RDF文字有不同的格式和数据类型。为了在机器学习中获得良好的性能,务必将这些值转换为称为特征的数字编码。
Neptune ML 在数据导出和数据处理步骤中执行特征提取和编码,如Neptune ML 中的特征编码中所述。
对于属性图数据集,导出过程会自动推理字符串属性和包含多个值的数值属性的 auto
特征。对于包含单个值的数值属性,它会推理 numerical
特征。对于日期属性,它会推理 datetime
特征。
如果要覆盖自动推断的功能规范,或者要为属性添加存储桶数字、TF-IDF 或SBERT规范,则可以使用 features 字段控制特征编码。 FastText
注意
您只能使用该features
字段来控制属性图数据的功能规范,而不能控制数据的功能规范。RDF
对于自由格式文本,Neptune ML 可以使用几种不同的模型将字符串属性值中的令牌序列转换为固定大小的实值向量:
text_fasttext— 使用fastText
编码。对于使用所 fastText 支持的五种语言中的一种且仅一种的功能,推荐使用这种编码。 text_sbert— 使用句子 BERT
(SBERT) 编码模型。对于 text_fasttext
不支持的文本,建议使用这种编码。text_word2vec– 使用最初由 Google
发布的 Word2Vec 算法对文本进行编码。Word2Vec 仅支持英语。 text_tfidf— 使用术语频率—反向文档频率
(TF-IDF) 向量化器对文本进行编码。TF-IDF 编码支持其他编码不支持的统计功能。
该features
字段包含一JSON组节点属性特征。数组中的对象可以包含以下字段:
目录
要素中的节点字段
node
字段指定特征顶点的属性图标签。例如:
"node": "Person"
如果顶点有多个标签,则使用数组来包含它们。例如:
"node": ["Admin", "Person"]
要素中的边场
edge
字段指定特征边缘的边缘类型。边缘类型由一个数组组成,该数组包含源顶点的属性图标签、边缘的属性图标签和目标顶点的属性图标签。指定边缘特征时,必须提供所有三个值。例如:
"edge": ["User", "reviewed", "Movie"]
如果边缘类型的源顶点或目标顶点有多个标签,请使用另一个数组来包含它们。例如:
"edge": [["Admin", "Person"]. "edited", "Post"]
要素中的属性字段
使用 property 参数指定由 node
参数标识的顶点的属性。例如:
"property" : "age"
要素类型字段的可能值
type
参数指定要定义的特征的类型。例如:
"type": "bucket_numerical"
type
参数的可能值
-
"auto"
– 指定 Neptune ML 应自动检测属性类型并应用正确的特征编码。auto
特征也可以有一个可选separator
字段。请参阅 Neptune ML 中的自动特征编码。
-
"category"
– 此特征编码将属性值表示为多个类别之一。换句话说,该特征可以采用一个或多个离散值。category
特征也可以有一个可选separator
字段。请参阅 Neptune ML 中的分类特征。
-
"numerical"
– 此特征编码将数值属性值表示为连续间隔中的数字,其中“大于”和“小于”具有含义。numerical
特征也可以具有可选norm
、imputer
和separator
字段。请参阅 Neptune ML 中的数值特征。
-
"bucket_numerical"
– 此特征编码将数字属性值划分为一组桶或类别。例如,您可以将人们的年龄编码为 4 个桶:儿童 (0-20)、年轻人 (20-40)、中年人 (40-60) 和老年人(60 岁及以上)。
bucket_numerical
特征需要range
和bucket_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"
编码的每个字符串中的令牌数量。 -
"text_sbert"
— 此编码使用 Sentence BERT (SBERT) 模型将文本属性值转换为数字向量。Neptune 支持两种SBERT方法,即 text_sbert128
,如果您只指定text_sbert
,则这是默认方法;和。text_sbert512
它们之间的区别在于文本属性中编码的最大令牌数。text_sbert128
编码仅对前 128 个令牌进行编码,而text_sbert512
最多可对 512 个令牌进行编码。因此,使用text_sbert512
所需的处理时间可能比text_sbert128
更长。两种方法都慢于text_fasttext
。这些
text_sbert
方法支持多种语言,并且可以对包含多种语言的句子进行编码。*
-
"text_word2vec"
– 此编码使用 Word2Vec算法将文本属性值转换为数字向量。它仅支持英语。 -
"text_tfidf"
— 这种编码使用术语频率——反向文档频率 (TF-) 向量化器将文本属性值转换为数字向量。IDF 您可以使用
ngram_range
字段、min_df
字段和max_features
字段来定义text_tfidf
特征编码的参数。 -
"none"
– 使用none
类型会导致不进行任何特征编码。而是对原始属性值进行解析并保存。仅当您计划在自定义模型训练过程中执行自己的自定义特征编码时,才使用
none
。
规范字段
此字段是数字特征的必需字段。它指定了一种用于数值的规范化方法:
"norm": "min-max"
支持以下规范化方法:
-
“min-max”– 通过从每个值中减去最小值,然后将其除以最大值和最小值之间的差值来规范化每个值。
-
“standard”- 通过将每个值除以所有值的总和来对其进行规范化。
-
“none”- 在编码过程中不对数值进行规范化。
请参阅 Neptune ML 中的数值特征。
语言字段
语言字段指定文本属性值中使用的语言。它的用法取决于文本编码方法:
-
对于 text_fasttext 编码,此字段为必需字段,并且必须指定以下语言之一:
en
(英语)zh
(中文)hi
(印地语)es
(西班牙语)fr
(法语)
由于text_sbert编码是多语言的,因此SBERT不使用此字段。
-
对于 text_word2vec 编码,此字段是可选的,因为
text_word2vec
仅支持英语。如果存在,则它必须指定“英语”语言模型的名称:"language" : "en_core_web_lg"
对于 text_tfidf 编码,不使用此字段。
最大长度字段
对于 text_fasttext
特征,max_length
字段是可选的,它指定输入文本特征中要编码的最大令牌数。长度大于 max_length
的输入文本会被截断。例如,将 max_length 设置为 128,表示将忽略文本序列中第 128 个之后的任何令牌:
"max_length": 128
分隔符字段
此字段可选择性地与 category
、numerical
和 auto
特征一起使用。它指定一个字符,该字符可用于将一个属性值拆分为多个类别值或数值:
"separator": ";"
只有当属性在单个字符串中存储多个分隔值(例如 "Actor;Director"
或 "0.1;0.2"
)时,才使用 separator
字段。
范围字段
此字段是 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 中的桶数值特征。
归因字段
此字段可选择与 numerical
和 bucket_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 中的日期时间特征。