

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

# neptune\_ml 对象中的 targets 字段
<a name="machine-learning-neptune_ml-targets"></a>

JSON 训练数据导出配置中的 `targets` 字段包含一组用于指定训练任务的目标对象以及用于训练该任务的机器学习类标签。目标对象的内容会有所不同，具体取决于您是在使用属性图数据还是 RDF 数据进行训练。

对于属性图节点分类和回归任务，数组中的目标对象可以如下所示：

```
{
  "node": "{{(node property-graph label)}}",
  "property": "{{(property name)}}",
  "type" : "{{(used to specify classification or regression)}}",
  "split_rate": [0.8,0.2,0.0],
  "separator": ","
}
```

对于属性图边缘分类、回归或链接预测任务，它们可以如下所示：

```
{
  "edge": "{{(edge property-graph label)}}",
  "property": "{{(property name)}}",
  "type" : "{{(used to specify classification, regression or link_prediction)}}",
  "split_rate": [0.8,0.2,0.0],
  "separator": ","
}
```

对于 RDF 分类和回归任务，数组中的目标对象可能如下所示：

```
{
  "node": "{{(node type of an RDF node)}}",
  "predicate": "{{(predicate IRI)}}",
  "type" : "{{(used to specify classification or regression)}}",
  "split_rate": [0.8,0.2,0.0]
}
```

对于 RDF 链接预测任务，数组中的目标对象可能如下所示：

```
{
  "subject": "{{(source node type of an edge)}}",
  "predicate": "{{(relation type of an edge)}}",
  "object": "{{(destination node type of an edge)}}",
  "type" : "link_prediction",
  "split_rate": [0.8,0.2,0.0]
}
```

目标对象可以包含以下字段：

**Contents**
+ [property-graph 目标字段](#machine-learning-property-graph-neptune_ml-targets)
  + [节点](#machine-learning-property-graph-neptune_ml-targets-node)
  + [边缘](#machine-learning-property-graph-neptune_ml-targets-edge)
  + [property](#machine-learning-property-graph-neptune_ml-targets-property)
  + [类型](#machine-learning-property-graph-neptune_ml-targets-type)
  + [split\_rate](#machine-learning-property-graph-neptune_ml-targets-split_rate)
  + [分隔符](#machine-learning-property-graph-neptune_ml-targets-separator)
+ [RDF 目标字段](#machine-learning-RDF-neptune_ml-targets)
  + [节点](#machine-learning-RDF-neptune_ml-targets-node)
  + [subject](#machine-learning-RDF-neptune_ml-targets-subject)
  + [谓词](#machine-learning-RDF-neptune_ml-targets-predicate)
  + [object](#machine-learning-RDF-neptune_ml-targets-object)
  + [类型](#machine-learning-RDF-neptune_ml-targets-type)
  + [split\_rate](#machine-learning-RDF-neptune_ml-targets-split_rate)

## property-graph 目标对象中的字段
<a name="machine-learning-property-graph-neptune_ml-targets"></a>

### 目标对象中的 node（顶点）字段
<a name="machine-learning-property-graph-neptune_ml-targets-node"></a>

目标节点（顶点）的属性图标签。目标对象必须包含一个 `node` 元素或一个 `edge` 元素，但不能同时包含两者。

`node` 可以取一个单一值，如下所示：

```
  "node": "Movie"
```

或者，对于多标签顶点，它可以采用一个值数组，如下所示：

```
  "node": ["Content", "Movie"]
```

### property-graph 目标对象中的 edge 字段
<a name="machine-learning-property-graph-neptune_ml-targets-edge"></a>

通过目标边缘的起始节点标签、其自己的标签和其结束节点标签来指定目标边缘。目标对象必须包含一个 `edge` 元素或一个 `node` 元素，但不能同时包含两者。

`edge` 字段的值是一个由三个字符串组成的 JSON 数组，这些字符串代表起始节点的属性图标签、边缘本身的属性图标签和结束节点的属性图标签，如下所示：

```
  "edge": ["Person_A", "knows", "Person_B"]
```

如果起始节点 and/or 结束节点有多个标签，请将它们封装在数组中，如下所示：

```
  "edge": [ ["Admin", Person_A"], "knows", ["Admin", "Person_B"] ]
```

### property-graph 目标对象中的 property 字段
<a name="machine-learning-property-graph-neptune_ml-targets-property"></a>

指定目标顶点或边缘的属性，如下所示：

```
  "property" : "rating"
```

除非目标任务是链接预测，否则此字段为必需字段。

### property-graph 目标对象中的 type 字段
<a name="machine-learning-property-graph-neptune_ml-targets-type"></a>

表示要在 `node` 或 `edge` 上执行的目标任务的类型，如下所示：

```
  "type" : "regression"
```

节点支持的任务类型有：
+ `classification`
+ `regression`

边缘支持的任务类型有：
+ `classification`
+ `regression`
+ `link_prediction`

该字段为必填。

### property-graph 目标对象中的 split\_rate 字段
<a name="machine-learning-property-graph-neptune_ml-targets-split_rate"></a>

（*可选*）训练、验证和测试阶段将分别使用的节点或边缘的比例的估计值。这些比例由 JSON 数组表示，该数组包含介于零和一之间的三个数字，这些数字加起来为 1：

```
"split_rate": [0.7, 0.1, 0.2]
```

如果您未提供可选 `split_rate` 字段，则默认估计值 `[0.9, 0.1, 0.0]` 适用于分类和回归任务，`[0.9,0.05, 0.05]` 适用于链接预测任务。

### property-graph 目标对象中的 separator 字段
<a name="machine-learning-property-graph-neptune_ml-targets-separator"></a>

（*可选*）与分类任务一起使用。

`separator` 字段指定一个字符，当它用于在字符串中存储多个类别值时，用来将目标属性值拆分为多个类别值。例如：

```
"separator": "|"
```

`separator` 字段的存在表示该任务是一项多目标分类任务。

## RDF 目标对象中的字段
<a name="machine-learning-RDF-neptune_ml-targets"></a>

### RDF 目标对象中的 node 字段
<a name="machine-learning-RDF-neptune_ml-targets-node"></a>

定义目标节点的节点类型。与节点分类任务或节点回归任务一起使用。RDF 中节点的节点类型定义如下：

```
  node_id, <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>, node_type
```

RDF `node` 只能取一个值，如下所示：

```
  "node": "http://aws.amazon.com/neptune/csv2rdf/class/Movie"
```

### RDF 目标对象中的 subject 字段
<a name="machine-learning-RDF-neptune_ml-targets-subject"></a>

对于链接预测任务，`subject` 定义目标边缘的源节点类型。

```
  "subject": "http://aws.amazon.com/neptune/csv2rdf/class/Director"
```

**注意**  
对于链接预测任务，`subject` 应与 `predicate` 和 `object` 一起使用。如果未提供这三者中的任何一个，则所有边缘都将被视为训练目标。

### RDF 目标对象中的 predicate 字段
<a name="machine-learning-RDF-neptune_ml-targets-predicate"></a>

对于节点分类和节点回归任务，`predicate` 定义将哪些文本数据用作目标节点的目标节点特征。

```
  "predicate": "http://aws.amazon.com/neptune/csv2rdf/datatypeProperty/genre"
```

**注意**  
如果目标节点只有一个定义目标节点特征的谓词，则可以省略 `predicate` 字段。

对于链接预测任务，`predicate` 定义目标边缘的关系类型：

```
"predicate": "http://aws.amazon.com/neptune/csv2rdf/datatypeProperty/direct"
```

**注意**  
对于链接预测任务，`predicate` 应与 `subject` 和 `object` 一起使用。如果未提供这三者中的任何一个，则所有边缘都将被视为训练目标。

### RDF 目标对象中的 object 字段
<a name="machine-learning-RDF-neptune_ml-targets-object"></a>

对于链接预测任务，`object` 定义目标边缘的目标节点类型：

```
  "object": "http://aws.amazon.com/neptune/csv2rdf/class/Movie"
```

**注意**  
对于链接预测任务，`object` 应与 `subject` 和 `predicate` 一起使用。如果未提供这三者中的任何一个，则所有边缘都将被视为训练目标。

### RDF 目标对象中的 type 字段
<a name="machine-learning-RDF-neptune_ml-targets-type"></a>

表示要执行的目标任务的类型，如下所示：

```
  "type" : "regression"
```

RDF 数据支持的任务类型有：
+ `link_prediction`
+ `classification`
+ `regression`

该字段为必填。

### property-graph 目标对象中的 `split_rate` 字段
<a name="machine-learning-RDF-neptune_ml-targets-split_rate"></a>

（*可选*）训练、验证和测试阶段将分别使用的节点或边缘的比例的估计值。这些比例由 JSON 数组表示，该数组包含介于零和一之间的三个数字，这些数字加起来为 1：

```
"split_rate": [0.7, 0.1, 0.2]
```

如果您未提供可选 `split_rate` 字段，则默认估计值为 `[0.9, 0.1, 0.0]`。