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