使用中的参数调整模型训练配置 additionalParams 的示例 - Amazon Neptune

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

使用中的参数调整模型训练配置 additionalParams 的示例

以下示例演示如何利用属性图和RDF数据模型中的 additionalParams “” 功能为 Neptune ML 应用程序配置模型训练过程的各个方面。这些示例涵盖了广泛的功能,包括为训练/验证/测试数据指定默认拆分率,定义节点分类、回归和链接预测任务,以及配置不同的功能类型,例如数字存储桶、文本嵌入、日期时间和分类数据。这些详细的配置使您可以根据自己的特定数据和建模要求定制机器学习管道,从而充分发挥 Neptune ML 功能的潜力。

使用 additionalParams 的属性图示例

为模型训练配置指定默认分割率

在以下示例中,split_rate 参数设置模型训练的默认分割率。如果未指定默认分割率,则训练将使用 [0.9、0.1、0.0] 的值。您可以通过为每个目标指定一个 split_rate 来覆盖每个目标的默认值。

在以下示例中,default split_rate 字段表示应使用分割率 [0.7,0.1,0.2],除非针对每个目标进行覆盖:

"additionalParams": { "neptune_ml": { "version": "v2.0", "split_rate": [0.7,0.1,0.2], "targets": [ (...) ], "features": [ (...) ] } }

为模型训练配置指定节点分类任务

要指明哪个节点属性包含用于训练的带标签的示例,请使用 "type" : "classification"targets 数组中添加节点分类元素。如果您想覆盖默认分割率,则可添加 split_rate 字段。

在以下示例中,node 目标表示应将每个 Movie 节点的 genre 属性视为节点类别标签。split_rate 值将覆盖默认分割率:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "node": "Movie", "property": "genre", "type": "classification", "split_rate": [0.7,0.1,0.2] } ], "features": [ (...) ] } }

为模型训练配置指定多类别节点分类任务

要指明哪个节点属性包含用于训练的多个带标签的示例,请使用 "type" : "classification" 以及 separator(指定一个可用于将目标属性值拆分为多个分类值的字符),从而将节点分类元素添加到目标数组中。如果您想覆盖默认分割率,则可添加 split_rate 字段。

在以下示例中,node 目标表示应将每个 Movie 节点的 genre 属性视为节点类别标签。separator 字段表示每个流派属性都包含多个以分号分隔的值:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "node": "Movie", "property": "genre", "type": "classification", "separator": ";" } ], "features": [ (...) ] } }

为模型训练配置指定节点回归任务

要指明哪个节点属性包含用于训练目的的带标签的回归,请使用 "type" : "regression" 将节点回归元素添加到目标数组中。如果您想覆盖默认分割率,则可添加 split_rate 字段。

以下 node 目标表示应将每个 Movie 节点的 rating 属性视为节点回归标签:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "node": "Movie", "property": "rating", "type" : "regression", "split_rate": [0.7,0.1,0.2] } ], "features": [ ... ] } }

为模型训练配置指定边缘分类任务

要指明哪个边缘属性包含用于训练目的的带标签的示例,请使用 "type" : "regression"targets 数组中添加边缘元素。如果您想覆盖默认分割率,则可添加 split_rate 字段。

以下 edge 目标表示应将每个 knows 边缘的 metAtLocation 属性视为边缘类别标签:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "edge": ["Person", "knows", "Person"], "property": "metAtLocation", "type": "classification" } ], "features": [ (...) ] } }

为模型训练配置指定多类别边缘分类任务

要指明哪个边缘属性包含用于训练目的的多个带标签的示例,请使用 "type" : "classification"separator 字段(此字段指定用于将目标属性值拆分为多个类别值的字符),向 targets 数组添加一个边缘元素。如果您想覆盖默认分割率,则可添加 split_rate 字段。

以下 edge 目标表示应将每个 repliedTo 边缘的 sentiment 属性视为边缘类别标签。分隔符字段表示每个情绪属性都包含多个以逗号分隔的值:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "edge": ["Person", "repliedTo", "Message"], "property": "sentiment", "type": "classification", "separator": "," } ], "features": [ (...) ] } }

为模型训练配置指定边缘回归

要指明哪个边缘属性包含用于训练目的的带标签的回归示例,请使用 "type" : "regression"targets 数组中添加 edge 元素。如果您想覆盖默认分割率,则可添加 split_rate 字段。

以下 edge 目标表示应将每个 reviewed 边缘的 rating 属性视为边缘回归:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "edge": ["Person", "reviewed", "Movie"], "property": "rating", "type" : "regression" } ], "features": [ (...) ] } }

要指示应使用哪些边缘进行链接预测训练目的,请使用 "type" : "link_prediction" 向目标数组添加边缘元素。如果您想覆盖默认分割率,则可添加 split_rate 字段。

以下 edge 目标表示应使用 cites 边缘进行链接预测:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "edge": ["Article", "cites", "Article"], "type" : "link_prediction" } ], "features": [ (...) ] } }

指定数值桶特征

您可以通过将 "type": "bucket_numerical" 添加到 features 数组中来为节点属性指定数值数据特征。

以下 node 特征表示应将每个 Person 节点的 age 属性视为数字桶特征:

"additionalParams": { "neptune_ml": { "targets": [ ... ], "features": [ { "node": "Person", "property": "age", "type": "bucket_numerical", "range": [1, 100], "bucket_cnt": 5, "slide_window_size": 3, "imputer": "median" } ] } }

指定 Word2Vec 特征

您可以通过将 "type": "text_word2vec" 添加到 features 数组中来为节点属性指定 Word2Vec 特征。

以下 node 特征表示应将每个 Movie 节点的 description 属性视为 Word2Vec 特征:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ ... ], "features": [ { "node": "Movie", "property": "description", "type": "text_word2vec", "language": "en_core_web_lg" } ] } }

指定 FastText 特征

您可以通过将 "type": "text_fasttext" 添加到 features 数组中来为节点属性指定 FastText 特征。language 字段为必需字段,并且必须指定以下语言之一:

  • en(英语)

  • zh(中文)

  • hi(印地语)

  • es(西班牙语)

  • fr(法语)

请注意,在特征中,text_fasttext 编码不能同时处理多种语言。

以下 node 特征表示应将每个 Movie 节点的法语 description 属性视为 FastText 特征:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ ... ], "features": [ { "node": "Movie", "property": "description", "type": "text_fasttext", "language": "fr", "max_length": 1024 } ] } }

指定 Sentence BERT 特征

您可以通过将 "type": "text_sbert" 添加到 features 数组中来为节点属性指定 Sentence BERT 特征。您无需指定语言,因为该方法使用多语言模型自动对文本特征进行编码。

以下 node 特征表示应将每个 Movie 节点的 description 属性视为 Sentence BERT 特征:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ ... ], "features": [ { "node": "Movie", "property": "description", "type": "text_sbert128", } ] } }

指定 TF-IDF 特征

您可以通过将 "type": "text_tfidf" 添加到 features 数组中来为节点属性指定 TF-IDF 特征。

以下 node 特征表示应将每个 Person 节点的 bio 属性视为 TF-IDF 特征:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ ... ], "features": [ { "node": "Movie", "property": "bio", "type": "text_tfidf", "ngram_range": [1, 2], "min_df": 5, "max_features": 1000 } ] } }

指定 datetime 特征

导出过程会自动推理日期属性的 datetime 特征。但是,如果要限制用于 datetime 特征的 datetime_parts,或者覆盖特征规范,以便将通常被视为 auto 特征的属性显式地视为 datetime 特征,则可以通过向特征数组中添加 "type": "datetime" 来实现。

以下 node 特征表示应将每个 Post 节点的 createdAt 属性视为 datetime 特征:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ ... ], "features": [ { "node": "Post", "property": "createdAt", "type": "datetime", "datetime_parts": ["month", "weekday", "hour"] } ] } }

指定 category 特征

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

如果要覆盖特征规范以便将属性视为分类特征,请向特征数组中添加 "type": "category"。如果该属性包含多个值,请包含 separator 字段。例如:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ ... ], "features": [ { "node": "Post", "property": "tag", "type": "category", "separator": "|" } ] } }

指定 numerical 特征

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

如果要覆盖特征规范以便将属性视为 numerical 特征,请向特征数组中添加 "type": "numerical"。如果该属性包含多个值,请包含 separator 字段。例如:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ ... ], "features": [ { "node": "Recording", "property": "duration", "type": "numerical", "separator": "," } ] } }

指定 auto 特征

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

如果要覆盖特征规范以便将属性视为 auto 特征,请向特征数组中添加 "type": "auto"。如果该属性包含多个值,请包含 separator 字段。例如:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ ... ], "features": [ { "node": "User", "property": "role", "type": "auto", "separator": "," } ] } }

RDF使用示例 additionalParams

为模型训练配置指定默认分割率

在以下示例中,split_rate 参数设置模型训练的默认分割率。如果未指定默认分割率,则训练将使用 [0.9、0.1、0.0] 的值。您可以通过为每个目标指定一个 split_rate 来覆盖每个目标的默认值。

在以下示例中,default split_rate 字段表示应使用分割率 [0.7,0.1,0.2],除非针对每个目标进行覆盖:

"additionalParams": { "neptune_ml": { "version": "v2.0", "split_rate": [0.7,0.1,0.2], "targets": [ (...) ] } }

为模型训练配置指定节点分类任务

要指明哪个节点属性包含用于训练的带标签的示例,请使用 "type" : "classification"targets 数组中添加节点分类元素。添加节点字段以指示目标节点的节点类型。添加 predicate 字段以定义哪些文本数据用作目标节点的目标节点特征。如果您想覆盖默认分割率,则可添加 split_rate 字段。

在以下示例中,node 目标表示应将每个 Movie 节点的 genre 属性视为节点类别标签。split_rate 值将覆盖默认分割率:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "node": "http://aws.amazon.com/neptune/csv2rdf/class/Movie", "predicate": "http://aws.amazon.com/neptune/csv2rdf/datatypeProperty/genre", "type": "classification", "split_rate": [0.7,0.1,0.2] } ] } }

为模型训练配置指定节点回归任务

要指明哪个节点属性包含用于训练目的的带标签的回归,请使用 "type" : "regression" 将节点回归元素添加到目标数组中。添加 node 字段以指示目标节点的节点类型。添加 predicate 字段以定义哪些文本数据用作目标节点的目标节点特征。如果您想覆盖默认分割率,则可添加 split_rate 字段。

以下 node 目标表示应将每个 Movie 节点的 rating 属性视为节点回归标签:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "node": "http://aws.amazon.com/neptune/csv2rdf/class/Movie", "predicate": "http://aws.amazon.com/neptune/csv2rdf/datatypeProperty/rating", "type": "regression", "split_rate": [0.7,0.1,0.2] } ] } }

要指示应使用哪些边缘进行链接预测训练目的,请使用 "type" : "link_prediction" 向目标数组添加边缘元素。添加 subjectpredicateobject 字段以指定边缘类型。如果您想覆盖默认分割率,则可添加 split_rate 字段。

以下 edge 目标表示应使用将 Directors 连接到 Moviesdirected 边缘进行链路预测:

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "subject": "http://aws.amazon.com/neptune/csv2rdf/class/Director", "predicate": "http://aws.amazon.com/neptune/csv2rdf/datatypeProperty/directed", "object": "http://aws.amazon.com/neptune/csv2rdf/class/Movie", "type" : "link_prediction" } ] } }

要指示应使用所有边缘进行链接预测训练目的,请使用 "type" : "link_prediction" 向目标数组添加 edge 元素。请勿添加 subjectpredicateobject 字段。如果您想覆盖默认分割率,则可添加 split_rate 字段。

"additionalParams": { "neptune_ml": { "version": "v2.0", "targets": [ { "type" : "link_prediction" } ] } }