

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# JSON 훈련 데이터 구성 파일의 구조
<a name="machine-learning-processing-training-config-file-structure"></a>

훈련 구성 파일은 내보내기 프로세스에서 `nodes/` 및 `edges/` 폴더에 저장한 CSV 파일을 말합니다.

`nodes/`의 각 파일에는 속성 그래프 노드 레이블이 동일한 노드에 대한 정보가 저장됩니다. 노드 파일의 각 열에는 노드 ID 또는 노드 속성이 저장됩니다. 파일의 첫 번째 행에는 각 열의 `~id` 또는 속성 이름을 지정하는 헤더가 있습니다.

`edges/`의 각 파일에는 속성 그래프 엣지 레이블이 동일한 노드에 대한 정보가 저장됩니다. 노드 파일의 각 열에는 소스 노드 ID, 대상 노드 ID 또는 엣지 속성이 저장됩니다. 파일의 첫 번째 행에는 각 열의 `~from`, `~to` 또는 속성 이름을 지정하는 헤더가 있습니다.

훈련 데이터 구성 파일에는 다음과 같은 3가지 최상위 요소가 있습니다.

```
{
  "version" : "v2.0",
  "query_engine" : "gremlin",
  "graph" : [ ... ]
}
```
+ `version`   –   (문자열) 사용 중인 구성 파일의 버전입니다.
+ `query_engine`   –   (문자열) 그래프 데이터를 내보내는 데 사용되는 쿼리 언어입니다. 현재는 'gremlin'만 유효합니다.
+ `graph`   –   (JSON 배열) 사용할 각 노드와 엣지에 대한 모델 파라미터가 포함된 하나 이상의 구성 객체를 나열합니다.

  그래프 배열의 구성 객체는 다음 섹션에서 설명하는 구조를 갖습니다.

## `graph` 배열에 나열된 구성 객체의 콘텐츠
<a name="machine-learning-graph-training-config-object"></a>

`graph` 배열의 구성 객체에는 최상위 노드 3개가 포함될 수 있습니다.

```
    {
      "edges"    : [ ... ],
      "nodes"    : [ ... ],
      "warnings" : [ ... ],
    }
```
+ `edges`   –   (JSON 객체 배열) 각 JSON 객체는 모델 처리 및 훈련 중에 그래프의 엣지가 처리되는 방식을 정의하는 파라미터 세트를 지정합니다. 이는 Gremlin 엔진에서만 사용됩니다.
+ `nodes`   –   (JSON 객체 배열) 각 JSON 객체는 모델 처리 및 훈련 중에 그래프의 노드가 처리되는 방식을 정의하는 파라미터 세트를 지정합니다. 이는 Gremlin 엔진에서만 사용됩니다.
+ `warnings`   –   (JSON 객체 배열) 각 객체에는 데이터 내보내기 프로세스 중에 생성된 경고가 포함되어 있습니다.

## `edges` 배열에 나열된 엣지 구성 객체의 콘텐츠
<a name="machine-learning-graph-edges-config"></a>

`edges` 배열에 나열된 엣지 구성 객체에는 다음과 같은 최상위 필드가 포함될 수 있습니다.

```
      {
        "file_name" : "(path to a CSV file)",
        "separator" : "(separator character)",
        "source"    : ["(column label for starting node ID)", "(starting node type)"],
        "relation"  : ["(column label for the relationship name)", "(the prefix name for the relationship name)"],
        "dest"      : ["(column label for ending node ID)", "(ending node type)"],
        "features"  : [(array of feature objects)],
        "labels"    : [(array of label objects)]
      }
```
+ **`file_name`**   –   속성 그래프 레이블이 동일한 엣지에 대한 정보를 저장하는 CSV 파일의 경로를 지정하는 문자열입니다.

  해당 파일의 첫 번째 행에는 열 레이블의 헤더 행이 있습니다.

  처음 2개의 열 레이블은 `~from` 및 `~to` 입니다. 첫 번째 열(`~from` 열)은 엣지 시작 노드의 ID를 저장하고, 두 번째 열(`~to` 열)은 엣지 종료 노드의 ID를 저장합니다.

  헤더 행의 나머지 열 레이블은 남아 있는 각 열에 대해 해당 열로 값을 내보낸 엣지 속성의 이름을 지정합니다.
+ **`separator`**   –   해당 CSV 파일의 열을 구분하는 구분 기호가 포함된 문자열입니다.
+ **`source`**   –   엣지의 시작 노드를 지정하는 2개의 문자열이 포함된 JSON 배열입니다. 첫 번째 문자열에는 시작 노드 ID가 저장되는 열의 헤더 이름이 포함됩니다. 두 번째 문자열은 노드 유형을 지정합니다.
+ **`relation`**   –   엣지의 관계 유형을 지정하는 2개의 문자열을 포함하는 JSON 배열입니다. 첫 번째 문자열에는 관계 이름(`relname`)이 저장되는 열의 헤더 이름이 포함됩니다. 두 번째 문자열에는 관계 이름 접두사(`prefixname`)가 포함됩니다.

  전체 관계 유형은 `prefixname-relname`과 같이 두 문자열 사이에 하이픈 문자를 두고 두 문자열을 결합하여 구성됩니다.

  첫 번째 문자열이 비어 있는 경우 모든 엣지는 동일한 관계 유형(`prefixname` 문자열)을 갖습니다.
+ **`dest`**   –   엣지의 종료 노드를 지정하는 2개의 문자열이 포함된 JSON 배열입니다. 첫 번째 문자열에는 노드 ID가 저장된 열의 헤더 이름이 포함됩니다. 두 번째 문자열은 노드 유형을 지정합니다.
+ **`features`**   –   속성-값 특성 객체로 구성된 JSON 배열입니다. 각 속성값 특성 객체는 다음 필드를 포함합니다.
  + **특성**   –   3개의 문자열로 구성된 JSON 배열입니다. 첫 번째 문자열에는 속성값이 들어 있는 열의 헤더 이름이 포함됩니다. 두 번째 문자열에는 특성 이름이 포함됩니다. 세 번째 문자열에는 특성 유형이 포함됩니다.
  + **norm**   –   (*선택 사항*) 속성값에 적용할 정규화 방법을 지정합니다.

    
+ **`labels`**   –   객체로 구성된 JSON 배열입니다. 각 객체는 엣지의 대상 특성을 정의하고 훈련 및 검증 단계에서 취해야 하는 엣지의 비율을 지정합니다. 각 객체는 다음 필드를 포함합니다.
  + **레이블**   –   두 문자열로 구성된 JSON 배열입니다. 첫 번째 문자열에는 대상 특성 속성값이 들어 있는 열의 헤더 이름이 포함됩니다. 두 번째 문자열은 다음 대상 작업 유형 중 하나를 지정합니다.
    + `"classification"`   –   엣지 분류 작업입니다. `label` 배열의 첫 번째 문자열로 식별되는 열에 제공된 속성값은 범주형 값으로 취급됩니다. 엣지 분류 작업의 경우 `label` 배열의 첫 번째 문자열은 비워둘 수 없습니다.
    + `"regression"`   –   엣지 회귀 작업입니다. `label` 배열의 첫 번째 문자열로 식별되는 열에 제공된 속성값은 숫자 값으로 취급됩니다. 엣지 회귀 작업의 경우 `label` 배열의 첫 번째 문자열은 비워둘 수 없습니다.
    + `"link_prediction"`   –   연결 예측 작업입니다. 속성값은 필요하지 않습니다. 연결 예측 작업의 경우 `label` 배열의 첫 번째 문자열은 무시됩니다.
  + **`split_rate`**   –   훈련, 검증 및 테스트 단계에서 각각 사용할 노드 비율의 추정치를 나타내는 0과 1 사이의 숫자 3개를 포함하는 JSON 배열입니다. 이 숫자는 합이 1이 됩니다. 이 필드 또는 `custom_split_filenames`를 정의할 수 있지만, 둘 다 정의할 수는 없습니다. [split\$1rate](machine-learning-neptune_ml-targets.md#machine-learning-property-graph-neptune_ml-targets-split_rate)를 참조하세요.
  + **`custom_split_filenames`**   –   훈련, 검증 및 테스트 모집단을 정의하는 파일의 파일 이름을 지정하는 JSON 객체입니다. 이 필드 또는 `split_rate`를 정의할 수 있지만, 둘 다 정의할 수는 없습니다. 자세한 정보는 [사용자 지정 훈련-검증-테스트 비율](#machine-learning-custom-stages-splits)을 참조하세요.

## `nodes` 배열에 나열된 노드 구성 객체의 콘텐츠
<a name="machine-learning-graph-nodes-config"></a>

`nodes` 배열에 나열된 노드 구성 객체에는 다음과 같은 필드가 포함될 수 있습니다.

```
      {
        "file_name" : "(path to a CSV file)",
        "separator" : "(separator character)",
        "node"      : ["(column label for the node ID)", "(node type)"],
        "features"  : [(feature array)],
        "labels"    : [(label array)],
      }
```
+ **`file_name`**   –   속성 그래프 레이블이 동일한 노드에 대한 정보를 저장하는 CSV 파일의 경로를 지정하는 문자열입니다.

  해당 파일의 첫 번째 행에는 열 레이블의 헤더 행이 있습니다.

  첫 번째 열 레이블은 `~id`이고 첫 번째 열(`~id` 열)은 노드 ID를 저장합니다.

  헤더 행의 나머지 열 레이블은 남아 있는 각 열에 대해 해당 열로 값을 내보낸 노드 속성의 이름을 지정합니다.
+ **`separator`**   –   해당 CSV 파일의 열을 구분하는 구분 기호가 포함된 문자열입니다.
+ **`node`**   –   두 문자열을 포함하는 JSON 배열입니다. 첫 번째 문자열에는 노드 ID를 저장하는 열의 헤더 이름이 포함됩니다. 두 번째 문자열은 그래프의 노드 유형을 지정하며, 이는 노드의 속성 그래프 레이블에 해당합니다.
+ **`features`**   –   노드 특성 객체로 구성된 JSON 배열입니다. [노드 또는 엣지의 `features` 배열에 나열된 특성 객체의 콘텐츠](#machine-learning-graph-node-features-config)을(를) 참조하세요.
+ **`labels`**   –   노드 레이블 객체로 구성된 JSON 배열입니다. [노드 `labels` 배열에 나열된 노드 레이블 객체의 콘텐츠](#machine-learning-graph-node-labels-config)을(를) 참조하세요.

## 노드 또는 엣지의 `features` 배열에 나열된 특성 객체의 콘텐츠
<a name="machine-learning-graph-node-features-config"></a>

노드 `features` 배열에 나열된 노드 특성 객체에는 다음과 같은 최상위 필드가 포함될 수 있습니다.
+ **`feature`**   –   3개의 문자열로 구성된 JSON 배열입니다. 첫 번째 문자열에는 특성의 속성값이 들어 있는 열의 헤더 이름이 포함됩니다. 두 번째 문자열에는 특성 이름이 포함됩니다.

  세 번째 문자열에는 특성 유형이 포함됩니다. 유효한 특성 유형은 [특성에 사용할 수 있는 type 필드 값](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-feature-types)에 나열되어 있습니다.
+ **`norm`**   –   이 필드는 숫자 특성에 필요합니다. 숫자 값에 사용할 정규화 메서드를 지정합니다. 유효한 값은 `"none"`, `"min-max"` 및 '표준'입니다. 세부 정보는 [norm 필드](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-norm) 섹션을 참조하세요.
+ **`language`**   –   언어 필드는 텍스트 속성값에 사용되는 언어를 지정합니다. 사용법은 텍스트 인코딩 메서드에 따라 달라집니다.
  + [`text_fasttext`](machine-learning-feature-encoding.md#machine-learning-fasttext-features) 인코딩의 경우 이 필드는 필수이며, 다음 언어 중 하나를 지정해야 합니다.
    + `en`(영어)
    + `zh`(중국어)
    + `hi`(힌디어)
    + `es`(스페인어)
    + `fr`(프랑스어)

    하지만 `text_fasttext`에서는 한 번에 2개 이상의 언어를 처리하지 못합니다.
  + SBERT 인코딩은 다국어이므로, [`text_sbert`](machine-learning-feature-encoding.md#machine-learning-fasttext-features) 인코딩의 경우 이 필드는 사용되지 않습니다.
  + `text_word2vec`에서는 영어만 지원하므로, [`text_word2vec`](machine-learning-feature-encoding.md#machine-learning-word2vec-features) 인코딩의 경우 이 필드는 선택 사항입니다. 있는 경우 영어 언어 모델 이름을 지정해야 합니다.

    ```
    "language" : "en_core_web_lg"
    ```
  + [`tfidf`](machine-learning-feature-encoding.md#machine-learning-tfidf-features) 인코딩의 경우 이 필드는 사용되지 않습니다.
+ **`max_length`**   –   이 필드는 [`text_fasttext`](machine-learning-feature-encoding.md#machine-learning-fasttext-features) 특성의 경우 선택 사항이며, 입력 텍스트 특성에서 인코딩될 최대 토큰 수를 지정합니다. `max_length`에 도달한 이후의 입력 텍스트는 무시됩니다. 예를 들어, max\$1length를 128로 설정하면 텍스트 시퀀스에서 128번째 이후의 모든 토큰은 무시됩니다.
+ **`separator`**   –   이 필드는 `category`, `numerical` 및 `auto` 특성과 함께 필요에 따라 사용됩니다. 속성값을 여러 범주형 값 또는 숫자 값으로 분할하는 데 사용할 수 있는 문자를 지정합니다.

  [separator 필드](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-separator)을(를) 참조하세요.
+ **`range`**   –   이 필드는 `bucket_numerical` 특성에 필요합니다. 버킷으로 나눌 숫자 값의 범위를 지정합니다.

  [range 필드](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-range)을(를) 참조하세요.
+ **`bucket_cnt`**   –   이 필드는 `bucket_numerical` 특성에 필요합니다. `range` 파라미터로 정의된 숫자 범위를 나누어야 하는 버킷 수를 지정합니다.

  [Neptune ML의 버킷 수치 특성](machine-learning-feature-encoding.md#machine-learning-bucket_numerical-features)을(를) 참조하세요.
+ **`slide_window_size`**   –   이 필드는 `bucket_numerical` 특성과 함께 필요에 따라 사용하여 2개 이상의 버킷에 값을 할당합니다.

  [slide\$1window\$1size 필드](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-slide_window_size)을(를) 참조하세요.
+ **`imputer`**   –   이 필드는 `numerical`, `bucket_numerical` 및 `datetime` 특성과 함께 필요에 따라 사용하여 누락된 값을 채우기 위한 대체 기법을 제공합니다. 지원되는 대체 기법은 `"mean"`, `"median"` 및 `"most_frequent"`입니다.

  [imputer 필드](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-imputer)을(를) 참조하세요.
+ **`max_features`**   –   이 필드는 `text_tfidf` 특성별로 필요에 따라 사용하여 인코딩할 용어의 최대 개수를 지정합니다.

  [max\$1features 필드](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-max_features)을(를) 참조하세요.
+ **`min_df`**   –   이 필드는 `text_tfidf` 특성별로 필요에 따라 사용하여 인코딩할 용어의 최소 문서 빈도를 지정합니다.

  [min\$1df 필드](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-min_df)을(를) 참조하세요.
+ **`ngram_range`**   –   이 필드는 `text_tfidf` 특성별로 필요에 따라 사용하여 인코딩할 수 있는 개별 용어로 간주할 단어 또는 토큰 수 범위를 지정합니다.

  [ngram\$1range 필드](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-ngram_range)을(를) 참조하세요.
+ **`datetime_parts`**   –   이 필드는 `datetime` 특성별로 필요에 따라 사용하여 날짜/시간 값 중 범주별로 인코딩할 부분을 지정합니다.

  [datetime\$1parts 필드](machine-learning-neptune_ml-features.md#machine-learning-neptune_ml-features-datetime_parts)을(를) 참조하세요.

## 노드 `labels` 배열에 나열된 노드 레이블 객체의 콘텐츠
<a name="machine-learning-graph-node-labels-config"></a>

노드 `labels` 배열에 나열된 레이블 객체는 노드 대상 특성을 정의하고 훈련, 검증 및 테스트 단계에서 사용할 노드의 비율을 지정합니다. 각 객체는 다음 필드를 포함할 수 있습니다.

```
      {
        "label"      : ["(column label for the target feature property value)", "(task type)"],
        "split_rate" : [(training proportion), (validation proportion), (test proportion)],
        "custom_split_filenames" : {"train": "(training file name)", "valid": "(validation file name)", "test": "(test file name)"},
        "separator"  : "(separator character for node-classification category values)",
      }
```
+ **`label`**   –   2개의 문자열을 포함하는 JSON 배열입니다. 첫 번째 문자열에는 특성의 속성값을 저장하는 열의 헤더 이름이 포함됩니다. 두 번째 문자열은 대상 작업 유형을 지정하며, 다음과 같을 수 있습니다.
  + `"classification"`   –   노드 분류 작업입니다. 지정된 열의 속성값은 범주형 특성을 생성하는 데 사용됩니다.
  + `"regression"`   –   노드 회귀 작업입니다. 지정된 열의 속성값은 수치적 특성을 생성하는 데 사용됩니다.
+ **`split_rate`**   –   훈련, 검증 및 테스트 단계에서 각각 사용할 노드 비율의 추정치를 나타내는 0과 1 사이의 숫자 3개를 포함하는 JSON 배열입니다. 이 숫자는 합이 1이 됩니다. [split\$1rate](machine-learning-neptune_ml-targets.md#machine-learning-property-graph-neptune_ml-targets-split_rate)을(를) 참조하세요.
+ **`custom_split_filenames`**   –   훈련, 검증 및 테스트 모집단을 정의하는 파일의 파일 이름을 지정하는 JSON 객체입니다. 이 필드 또는 `split_rate`를 정의할 수 있지만, 둘 다 정의할 수는 없습니다. 자세한 정보는 [사용자 지정 훈련-검증-테스트 비율](#machine-learning-custom-stages-splits)을 참조하세요.
+ **`separator`**   –   분류 작업의 범주형 특성 값을 구분하는 구분 기호가 포함된 문자열입니다.

**참고**  
엣지와 노드 모두에 레이블 객체가 제공되지 않은 경우 작업은 자동으로 연결 예측으로 간주되며, 엣지는 훈련용 90%, 검증용 10%로 무작위로 분할됩니다.

## 사용자 지정 훈련-검증-테스트 비율
<a name="machine-learning-custom-stages-splits"></a>

기본적으로 Neptune ML에서 사용하는 `split_rate` 파라미터는 해당 파라미터에 정의된 비율을 바탕으로 그래프를 훈련, 검증 및 테스트 모집단으로 무작위로 분할합니다. 이렇듯 다양한 모집단에 사용되는 엔터티를 보다 정밀하게 제어하기 위해 엔터티를 명시적으로 정의하는 파일을 만든 후 [훈련 데이터 구성 파일을 편집하여](machine-learning-processing-training-config-file.md) 이러한 인덱싱 파일을 모집단에 매핑할 수 있습니다. 이 매핑은 훈련 구성 파일의 [`custom_split_filesnames`](#custom_split_filenames) 키에 대한 JSON 객체에서 지정합니다. 이 옵션을 사용하는 경우 `train` 및 `validation` 키에는 파일 이름을 제공해야 하며, `test` 키의 경우 선택 사항입니다.

이러한 파일의 형식은 [Gremlin 데이터 형식](bulk-load-tutorial-format-gremlin.md#bulk-load-tutorial-format-gremlin-systemheaders)과 일치해야 합니다. 특히 노드 수준 작업의 경우 각 파일에 노드 ID가 나열된 `~id` 헤더가 있는 열이 포함되어야 하며, 엣지 수준 작업의 경우 파일은 `~from` 및 `~to`를 지정해서 엣지의 소스 및 대상 노드를 각각 나타내야 합니다. 이러한 파일은 데이터 처리에 사용되는 내보낸 데이터와 동일한 Amazon S3 위치에 배치해야 합니다(참조: [`outputS3Path`](export-parameters.md#export-parameters-outputS3Path)).

속성 분류 또는 회귀 작업의 경우 이러한 파일은 필요에 따라 기계 학습 작업의 레이블을 정의할 수 있습니다. 이 경우 파일에는 [훈련 데이터 구성 파일에 정의된 것](#machine-learning-graph-node-labels-config)과 동일한 헤더 이름을 가진 속성 열이 있어야 합니다. 내보낸 노드 및 엣지 파일과 사용자 지정 분할 파일 모두에 속성 레이블이 정의된 경우 사용자 지정 분할 파일에 우선순위가 부여됩니다.