

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 additionalParams 中使用參數來調校模型訓練組態的範例
<a name="machine-learning-data-export-additionalParams-examples"></a>

 下列範例示範如何在屬性圖和 RDF 資料模型中使用「additionalParams」功能，為 Neptune ML 應用程式設定模型訓練程序的各個層面。這些範例涵蓋各種功能，包括指定training/validation/test資料的預設分割率、定義節點分類、迴歸和連結預測任務，以及設定不同的特徵類型，例如數值儲存貯體、文字內嵌、日期時間和分類資料。這些詳細組態可讓您根據特定資料和建模需求量身打造機器學習管道，釋放 Neptune ML 功能的完整潛力。

**Contents**
+ [使用 additionalParams 的屬性圖範例](#machine-learning-property-graph-additionalParams-examples)
  + [為模型訓練組態指定預設分割率](#machine-learning-property-graph-additionalParams-default-split-rate-example)
  + [為模型訓練組態指定節點分類任務](#machine-learning-property-graph-additionalParams-node-classification-example)
  + [為模型訓練組態指定多類別節點分類任務](#machine-learning-property-graph-additionalParams-multi-class-example)
  + [為模型訓練組態指定節點迴歸任務](#machine-learning-property-graph-additionalParams-node-regression-example)
  + [為模型訓練組態指定 edge-classification 任務](#machine-learning-property-graph-additionalParams-edge-classification-example)
  + [為模型訓練組態指定多類別邊緣分類任務](#machine-learning-property-graph-additionalParams-multi-edge-classification-example)
  + [為模型訓練組態指定邊緣迴歸](#machine-learning-property-graph-additionalParams-edge-regression-example)
  + [為模型訓練組態指定連結預測任務](#machine-learning-property-graph-additionalParams-link-prediction-example)
  + [指定數值儲存貯體特徵](#machine-learning-property-graph-additionalParams-numeric-bucket-example)
  + [指定 `Word2Vec` 特徵](#machine-learning-property-graph-additionalParams-word2vec-example)
  + [指定 `FastText` 特徵](#machine-learning-property-graph-additionalParams-fasttext-example)
  + [指定 `Sentence BERT` 特徵](#machine-learning-property-graph-additionalParams-sbert-example)
  + [指定 `TF-IDF` 特徵](#machine-learning-property-graph-additionalParams-tf-idf-example)
  + [指定 `datetime` 特徵](#machine-learning-property-graph-additionalParams-datetime-example)
  + [指定 `category` 特徵](#machine-learning-property-graph-additionalParams-category-example)
  + [指定 `numerical` 特徵](#machine-learning-property-graph-additionalParams-numerical-example)
  + [指定 `auto` 特徵](#machine-learning-property-graph-additionalParams-auto-example)
+ [使用 `additionalParams` 的 RDF 範例](#machine-learning-RDF-additionalParams-examples)
  + [為模型訓練組態指定預設分割率](#machine-learning-RDF-additionalParams-default-split-rate-example)
  + [為模型訓練組態指定節點分類任務](#machine-learning-RDF-additionalParams-node-classification-example)
  + [為模型訓練組態指定節點迴歸任務](#machine-learning-RDF-additionalParams-node-regression-example)
  + [為特定邊緣指定連結預測任務](#machine-learning-RDF-additionalParams-link-prediction-example)
  + [為所有邊緣指定連結預測任務](#machine-learning-RDF-additionalParams-link-prediction-example)

## 使用 additionalParams 的屬性圖範例
<a name="machine-learning-property-graph-additionalParams-examples"></a>

### 為模型訓練組態指定預設分割率
<a name="machine-learning-property-graph-additionalParams-default-split-rate-example"></a>

在下列範例中，`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": [
      (...)
    ]
  }
}
```

### 為模型訓練組態指定節點分類任務
<a name="machine-learning-property-graph-additionalParams-node-classification-example"></a>

若要指示哪個節點屬性包含標記的範例可供訓練用途，請使用 `"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": [
      (...)
    ]
  }
}
```

### 為模型訓練組態指定多類別節點分類任務
<a name="machine-learning-property-graph-additionalParams-multi-class-example"></a>

若要指示哪個節點屬性包含多個標記的範例可供訓練用途，請使用 `"type" : "classification"` 和 `separator` 將節點分類元素新增至目標陣列，來指定可以用來將目標屬性值分割為多個類別值的字元。如果想要覆寫預設分割率，請新增 `split_rate` 欄位。

在下列範例中，`node` 目標會指示應將每個 `Movie` 節點的 `genre` 屬性視為節點類別標籤。`separator` 欄位指示每個類型屬性包含多個分號分隔值：

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

### 為模型訓練組態指定節點迴歸任務
<a name="machine-learning-property-graph-additionalParams-node-regression-example"></a>

若要指示哪個節點屬性包含用於訓練用途的標記迴歸，請使用 `"type" : "regression"` 將節點迴歸元素新增至陣列。如果想要覆寫預設分割率，請新增 split\$1rate 欄位。

下列 `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": [
      ...
    ]
  }
}
```

### 為模型訓練組態指定 edge-classification 任務
<a name="machine-learning-property-graph-additionalParams-edge-classification-example"></a>

若要指示哪個邊緣屬性包含用於訓練用途的標記範例，請使用 `"type" : "regression"` 將邊緣元素新增至 `targets` 陣列。如果想要覆寫預設分割率，請新增 split\$1rate 欄位。

下列 `edge` 目標指示應將每個 `knows` 邊緣的 `metAtLocation` 屬性視為迴歸類別標籤：

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

### 為模型訓練組態指定多類別邊緣分類任務
<a name="machine-learning-property-graph-additionalParams-multi-edge-classification-example"></a>

若要指示哪個邊緣屬性包含多個用於訓練用途的標記範例，請使用 `"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": [
      (...)
    ]
  }
}
```

### 為模型訓練組態指定邊緣迴歸
<a name="machine-learning-property-graph-additionalParams-edge-regression-example"></a>

若要指示哪個邊緣屬性包含用於訓練用途的標記迴歸範例，請使用 `"type" : "regression"` 將 `edge` 元素新增至 `targets` 陣列。如果想要覆寫預設分割率，請新增 `split_rate` 欄位。

下列 `edge` 目標指示應將每個 `reviewed` 邊緣的 `rating` 屬性視為邊緣迴歸：

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

### 為模型訓練組態指定連結預測任務
<a name="machine-learning-property-graph-additionalParams-link-prediction-example"></a>

若要指示應將哪些邊緣用於連結預測訓練用途，請使用 `"type" : "link_prediction"` 將邊緣元素新增至目標陣列。如果想要覆寫預設分割率，請新增 `split_rate` 欄位。

下列 `edge` 目標指示應該使用 `cites` 邊緣進行連結預測：

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

### 指定數值儲存貯體特徵
<a name="machine-learning-property-graph-additionalParams-numeric-bucket-example"></a>

您可以透過將 `"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` 特徵
<a name="machine-learning-property-graph-additionalParams-word2vec-example"></a>

您可以透過將 `"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` 特徵
<a name="machine-learning-property-graph-additionalParams-fasttext-example"></a>

您可以透過將 `"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` 特徵
<a name="machine-learning-property-graph-additionalParams-sbert-example"></a>

您可以透過將 `"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` 特徵
<a name="machine-learning-property-graph-additionalParams-tf-idf-example"></a>

您可以透過將 `"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` 特徵
<a name="machine-learning-property-graph-additionalParams-datetime-example"></a>

匯出程序會自動推斷日期屬性的 `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` 特徵
<a name="machine-learning-property-graph-additionalParams-category-example"></a>

匯出程序會自動針對字串屬性和包含多個值的數值屬性推斷 `auto` 特徵。對於包含單一值的數值屬性，它會推斷 `numerical` 特徵。對於日期屬性，它會推斷 `datetime` 特徵。

如果您想要覆寫特徵規格，以便將屬性視為類別特徵，請將 `"type": "category"` 新增至特徵陣列。如果屬性包含多個值，請包括一個 `separator` 欄位。例如：

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

### 指定 `numerical` 特徵
<a name="machine-learning-property-graph-additionalParams-numerical-example"></a>

匯出程序會自動針對字串屬性和包含多個值的數值屬性推斷 `auto` 特徵。對於包含單一值的數值屬性，它會推斷 `numerical` 特徵。對於日期屬性，它會推斷 `datetime` 特徵。

如果您想要覆寫特徵規格，以便將屬性視為 `numerical` 特徵，請將 `"type": "numerical"` 新增至特徵陣列。如果屬性包含多個值，請包括一個 `separator` 欄位。例如：

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

### 指定 `auto` 特徵
<a name="machine-learning-property-graph-additionalParams-auto-example"></a>

匯出程序會自動針對字串屬性和包含多個值的數值屬性推斷 `auto` 特徵。對於包含單一值的數值屬性，它會推斷 `numerical` 特徵。對於日期屬性，它會推斷 `datetime` 特徵。

如果您想要覆寫特徵規格，以便將屬性視為 `auto` 特徵，請將 `"type": "auto"` 新增至特徵陣列。如果屬性包含多個值，請包括一個 `separator` 欄位。例如：

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

## 使用 `additionalParams` 的 RDF 範例
<a name="machine-learning-RDF-additionalParams-examples"></a>

### 為模型訓練組態指定預設分割率
<a name="machine-learning-RDF-additionalParams-default-split-rate-example"></a>

在下列範例中，`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": [
      (...)
    ]
  }
}
```

### 為模型訓練組態指定節點分類任務
<a name="machine-learning-RDF-additionalParams-node-classification-example"></a>

若要指示哪個節點屬性包含訓練用途的標記範例，請使用 `"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]
      }
    ]
  }
}
```

### 為模型訓練組態指定節點迴歸任務
<a name="machine-learning-RDF-additionalParams-node-regression-example"></a>

若要指示哪個節點屬性包含用於訓練用途的標記迴歸，請使用 `"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]
      }
    ]
  }
}
```

### 為特定邊緣指定連結預測任務
<a name="machine-learning-RDF-additionalParams-link-prediction-example"></a>

若要指示應將哪些邊緣用於連結預測訓練用途，請使用 `"type" : "link_prediction"` 將邊緣元素新增至目標陣列。新增 `subject`、`predicate` 和 `object` 欄位以指定邊緣類型。如果想要覆寫預設分割率，請新增 `split_rate` 欄位。

下列 `edge` 目標指示將 `Directors` 連線至 `Movies` 的 `directed` 邊緣應該用於連結預測：

```
  "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"
      }
    ]
  }
}
```

### 為所有邊緣指定連結預測任務
<a name="machine-learning-RDF-additionalParams-link-prediction-example"></a>

若要指示應將所有邊緣用於連結預測訓練用途，請使用 `"type" : "link_prediction"` 將 `edge` 元素新增至目標陣列。請不要新增 `subject`、`predicate` 或 `object` 欄位。如果想要覆寫預設分割率，請新增 `split_rate` 欄位。

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