데이터 유형 및 변환

이 페이지에서는 Vertex AI가 AutoML 모델의 여러 가지 테이블 형식 데이터에 작동하는 방식을 설명합니다.

Vertex AI의 변환 소개

모델 학습

입력 테이블 형식 데이터는 모델 학습에 사용하기 전에 변환되어야 합니다. 변환은 특정 데이터 특성의 기능을 나타냅니다.

다음과 같은 변환이 지원됩니다.

데이터 소스가 Cloud Storage의 CSV 파일인 경우 구분 기호에 쉼표(',')를 사용해야 합니다. Vertex AI는 RFC 4180 CSV 형식을 사용합니다.

데이터 소스가 BigQuery이고 분류 또는 회귀를 수행하는 경우 여러 데이터 기본 요소로 구성된 데이터를 포함할 수 있습니다. 이러한 복합 데이터 유형은 변환을 적용하기 전에 사전 처리해야 합니다. 지원되는 복합 데이터 유형은 다음과 같습니다.

유형 값이 누락되거나 null인 경우 Vertex AI는 모델 목표와 해당 특성에 적용된 변환을 기반으로 이를 처리합니다. 자세한 내용은 누락된 값 또는 null 값 처리 방법을 참조하세요.

예측

예측에 사용되는 데이터의 형식은 학습에 사용되는 형식과 일치해야 합니다. 자세한 내용은 예측용 데이터 형식을 참조하세요.

Vertex AI 변환

범주형

범주형 변환을 적용하면 해당 특성이 카테고리의 값을 표현합니다. 따라서 명목상의 수준에 해당합니다. 값은 순서가 없으며 이름에 따라서만 달라집니다. 숫자로 범주형 값을 나타낼 수도 있지만, 값 사이에는 수적 관계가 존재하지 않습니다. 따라서 범주형 1은 범주형 0보다 '크지' 않습니다.

다음은 범주형 값의 예입니다.

  • 불리언 - true, false
  • 국가 - "USA", "Canada", "China"
  • HTTP 상태 코드 - "200", "404", "500"

범주형 값은 대소 문자를 구분하며 철자가 다르면 다른 범주로 취급합니다(예 'Color'와 'Colour는 서로 결합되지 않음).

범주형 변환이 있는 특성으로 모델을 학습시킬 때 Vertex AI는 다음 데이터 변환을 해당 특성에 적용하고 학습에 신호를 제공하는 모든 변환을 사용합니다.

  • 대소문자, 구두점, 맞춤법, 시제 등의 변경 없이 있는 그대로의 범주형 문자입니다.
  • 카테고리 이름을 사전 조회 색인으로 변환하고 색인별 임베딩을 생성합니다.
  • 학습 데이터 세트에서 5회 미만으로 나타나는 카테고리는 '알 수 없는' 카테고리로 취급됩니다. '알 수 없는' 카테고리는 자체 특수 조회 색인을 가져와 임베딩을 생성합니다.

범주형 변환은 CSV 파일의 STRING 데이터 또는 다음 BigQuery 데이터 유형에 적용할 수 있습니다.

  • INT64
  • NUMERIC, BIGNUMERIC
  • FLOAT64
  • BOOL
  • STRING
  • DATE
  • DATETIME
  • TIME
  • TIMESTAMP

텍스트

텍스트 변환을 수행하면 이 특성은 자유 형식의 텍스트로 사용되며, 일반적으로 텍스트 토큰으로 구성됩니다.

다음은 텍스트 값의 예입니다.

  • "The quick brown fox"
  • "This restaurant is the best! The food is delicious"

예측 모델의 경우 공변 특성에 텍스트 변환이 지원되지 않습니다.

텍스트 변환이 있는 특성으로 모델을 학습시킬 때 Vertex AI는 다음 데이터 변환을 해당 특성에 적용하고 학습에 신호를 제공하는 모든 변환을 사용합니다.

  • 대소문자, 구두점, 맞춤법, 시제 등의 변경 없이 있는 그대로의 텍스트입니다.
  • 텍스트를 여러 개의 단어로 토큰화하고 이러한 단어에서 1-gram 및 2-gram을 생성합니다. 각 n-gram을 사전 조회 색인으로 변환하고 색인별 임베딩을 생성합니다. 평균 값을 사용하여 모든 요소의 임베딩을 단일 임베딩으로 결합합니다.

    토큰화는 유니코드 스크립트 경계를 기반으로 합니다.

  • 누락된 값은 자체 조회 색인을 가져와 임베딩을 생성합니다.
  • 검색 제외 단어에는 어떤 특별한 처리도 제공되지 않으며 삭제되지 않습니다.

텍스트 변환은 CSV 파일의 STRING 데이터 또는 다음 BigQuery 데이터 유형에 적용할 수 있습니다.

  • STRING
  • DATETIME

숫자

숫자 변환을 수행하면 열이 서수 또는 수량으로 사용됩니다. 이러한 숫자는 서로 비교할 수 있습니다. 즉, 한 숫자는 다른 숫자보다 작거나 클 수 있습니다.

선행 또는 후행 공백은 잘립니다.

다음 표에서는 숫자 변환과 호환되는 모든 형식을 보여줍니다.

형식 예시 참고
숫자 형식 문자열 '101', '101.5' 마침표 문자('.')만 유효한 십진수 구분 기호입니다. '101,5' 및 '100,000'은 유효한 숫자 형식 문자열이 아닙니다.
과학적 표기법 '1.12345E+11', '1.12345e+11' 십진수 구분 기호는 숫자 형식 문자열 참고 섹션을 참조하세요.
숫자가 아님 'NAN', 'nan', '+NAN' 대소문자를 구분하지 않습니다. 결과 앞에 오는 플러스('+') 또는 마이너스('-') 문자는 무시됩니다. NULL 값으로 해석됩니다.
무한대 'INF', '+inf' 대소문자를 구분하지 않습니다. 결과 앞에 오는 플러스('+') 또는 마이너스('-') 문자는 무시됩니다. NULL 값으로 해석됩니다.

숫자 변환이 있는 열의 값이 이러한 형식 중 하나를 준수하지 않으면 전체 행이 학습에서 제외되거나 값이 null로 간주됩니다. 숫자 변환을 선택할 때 이러한 결과 중에서 선택하세요.

숫자 변환이 있는 특성으로 모델을 학습시킬 때 Vertex AI는 다음 데이터 변환을 해당 특성에 적용하고 학습에 신호를 제공하는 모든 변환을 사용합니다.

  • float32로 변환된 값입니다.
  • 값의 z_score입니다.
  • 분위수를 기준으로 한 값의 버킷 색인입니다. 버킷 크기는 100입니다.
  • 값이 0 이상일 때 log(값+1)입니다. 그렇지 않으면 이 변환이 적용되지 않고 누락된 값으로 간주됩니다.
  • 값이 0 이상일 때 log(값+1)의 z_score입니다. 그렇지 않으면 이 변환이 적용되지 않고 누락된 값으로 간주됩니다.
  • 값이 null인지 여부를 나타내는 불리언 값입니다.
  • 잘못된 숫자 입력이 있는 행(예: float32로 파싱할 수 없는 문자열)은 학습 및 예측에 포함되지 않습니다.
  • 극한 값/이상점 값에는 어떤 특별한 처리도 제공되지 않습니다.

숫자 변환은 CSV 파일의 STRING 데이터 또는 다음 BigQuery 데이터 유형에 적용할 수 있습니다.

  • INT64
  • NUMERIC, BIGNUMERIC
  • FLOAT64
  • STRING
  • TIMESTAMP

타임스탬프

타임스탬프 변환은 특성이 특정 시점으로 사용되기 때문에 시간대가 포함된 상용시 또는 Unix 타임스탬프로 표시됩니다. 시간 열에는 타임스탬프 변환이 있는 특성만 사용할 수 있습니다.

시간대가 상용시로 지정되지 않았다면 기본값은 UTC입니다.

다음 표는 호환되는 모든 타임스탬프 문자열 형식을 보여줍니다.

형식 예시 참고
%E4Y-%m-%d '2017-01-30' 이 형식에 대한 설명은 Abseil 문서를 참조하세요.
%E4Y/%m/%d '2017/01/30'
%Y/%m/%d %H:%M:%E*S '2017/01/30 23:59:58'
%d-%m-%E4Y '30-11-2018'
%d/%m/%E4Y '30/11/2018'
%d-%B-%E4Y '30-November-2018'
%Y-%m-%dT%H:%M:%E*S%Ez '2019-05-17T23:56:09.05Z' RFC 3339
Unix 타임스탬프 문자열(초 단위) '1541194447' 1990년 1월 1일부터 2030년 1월 1일까지의 시간 범위에만 해당됩니다.
Unix 타임스탬프 문자열(밀리초 단위) '1541194447000'
Unix 타임스탬프 문자열(마이크로초 단위) '1541194447000000'
Unix 타임스탬프 문자열(나노초 단위) '1541194447000000000'

타임스탬프 변환이 있는 열의 값이 이러한 형식 중 하나를 준수하지 않으면 전체 행이 학습에서 제외되거나 값이 null로 간주됩니다. 타임스탬프 변환을 선택할 때 이러한 결과 중에서 선택하세요.

타임스탬프 변환이 있는 특성으로 모델을 학습시킬 때 Vertex AI는 다음 데이터 변환을 해당 특성에 적용하고 학습에 신호를 제공하는 모든 변환을 사용합니다.

  • 숫자 열에 변환을 적용합니다.
  • 연도, 월, 일, 주를 결정합니다. 타임스탬프의 각 값을 범주형 열로 처리합니다.
  • 잘못된 숫자 값(예: 일반적인 타임스탬프 범위에 포함되지 않은 값 또는 극한 값)에는 어떤 특별한 처리도 제공되지 않으며 삭제되지 않습니다.
  • 잘못된 숫자 입력이 있는 행(예: 잘못된 타임스탬프 문자열)은 학습 및 예측에 포함되지 않습니다.

타임스탬프 변환은 CSV 파일의 STRING 데이터 또는 다음 BigQuery 데이터 유형에 적용할 수 있습니다.

  • INT64
  • STRING
  • DATE
  • DATETIME
  • TIMESTAMP

복합 데이터 유형

배열 또는 구조체와 같이 여러 데이터 기본 요소로 구성된 데이터를 포함해야 하는 경우가 있습니다. 복합 데이터 유형은 BigQuery를 데이터 소스로만 사용할 수 있으며 예측 모델에는 지원되지 않습니다.

구조체

구조체로 라벨 지정 필드 그룹을 나타낼 수 있습니다. 구조체에는 각 항목이 데이터 유형과 연결된 필드 이름 목록이 있습니다. 열의 모든 구조체 값에서, 필드 목록과 목록의 데이터 유형이 일치해야 합니다.

다음은 구조체의 몇 가지 예시입니다.

  • 혈압 - {"timestamp": 1535761416, "systolic": 110, "diastolic": 70}
  • 상품 - {"name": "iPhone", price: 1000}

BigQuery STRUCT 데이터 유형으로 구조체를 나타낼 수 있습니다.

구조체 값은 필드로 자동 평면화됩니다. Vertex AI는 변환 유형에 따라 평면화 필드에 데이터 변환을 적용합니다.

배열

배열을 이용해 값 목록을 나타낼 수 있습니다. 포함된 값은 동일한 변환 유형을 수락해야 합니다. 배열에 구조체를 포함할 수 있습니다. 배열의 모든 구조체는 구조가 동일해야 합니다.

Vertex AI는 배열이 상대적 가중치를 나타내도록 처리합니다. 즉, 배열의 뒤쪽에 있는 항목은 앞쪽에 있는 항목보다 더 많은 가중치가 적용됩니다.

다음은 배열의 몇 가지 예시입니다.

  • 제품 카테고리:

    ["Clothing", "Women", "Dress", ...]

  • 최근 구매 항목:

    ["iPhone", "Laptop", "Suitcase", ...]

  • 사용자 레코드:

    [{"name": "Joelle", ID: 4093}, {"name": "Chloe", ID: 2047}, {"name": "Neko", ID: 3432}, ...]

BigQuery ARRAY 데이터 유형으로 배열을 나타낼 수 있습니다.

Vertex AI가 적용하는 데이터 변환은 배열에 적용되는 변환 유형에 따라 다릅니다.

배열 유형 변환
숫자 배열
  • N = {1, 2, 4, 8, all}인 경우 마지막 N개 항목의 평균에 적용되는 모든 숫자 변환입니다. 따라서 가장 많이 강조되는 항목은 배열의 시작점이 아니라 끝쪽에 있는 항목입니다.
  • 빈 배열의 평균은 0으로 처리됩니다.
범주형 배열
  • N = {1, 2, 4, 8, all}인 경우 마지막 N개 항목의 배열에 있는 각 요소에 대해 카테고리 이름은 사전 조회 색인으로 변환하고 색인별 임베딩을 생성합니다. 평균 값을 사용하여 모든 요소의 임베딩을 단일 임베딩으로 결합합니다.
  • 빈 배열의 임베딩은 0으로 취급됩니다.
텍스트 배열
  • 배열의 모든 텍스트 값을 공백 문자(" ")를 구분자로 사용하여 단일 텍스트 값으로 연결한 후 결과를 단일 텍스트 값으로 처리합니다. 텍스트 열에 변환을 적용합니다.
  • 빈 배열의 임베딩은 0으로 취급됩니다.
타임스탬프 배열
  • 배열의 마지막 N개 항목 평균에 숫자 열의 변환을 적용합니다. 이때 N = {1, 2, 4, 8, all}입니다. 즉, 가장 많이 강조되는 항목은 배열의 끝쪽에 있는 항목입니다.
구조체 배열
  • 배열의 구조체는 개별 필드로 평면화되고 필드별로 배열로 결합됩니다. 이 표에 설명된 대로 배열 변환은 해당 배열의 필드 유형에 따라 적용됩니다.

누락되거나 null 값이 처리되는 방식

누락된 값을 처리하는 방법은 모델 목표와 해당 특성에 적용되는 변환에 따라 다릅니다.

분류 및 회귀

분류 및 회귀 모델의 경우 null 값은 범주형 및 텍스트 변환을 위한 임베딩을 생성합니다. 다른 변환의 경우 null 값은 null로 남습니다.

예측

예측 모델의 경우 null 값은 주변 데이터에 귀속됩니다. null 값을 null로 남겨둘 수는 없습니다. null 값이 귀속되는 방식을 제어하려면 이를 명시적으로 귀속시킬 수 있습니다. 사용할 최적의 값은 데이터 및 비즈니스 문제에 따라 다를 수 있습니다.

누락된 행(예를 들어 데이터가 일별로 세분화되고 특정 날짜의 행이 없는 경우)은 허용되지만 Vertex AI는 누락된 데이터의 값을 귀속시키지 않습니다. 행이 누락되면 모델 품질이 저하될 수 있으므로 가능하면 행을 누락하지 않아야 합니다. 예를 들어 해당 날짜의 판매 수량이 0이어서 행이 누락된 경우 해당 날짜에 대한 행을 추가하고 판매 데이터를 0으로 명시적으로 설정합니다.

null 값으로 취급되는 값

AutoML 테이블 형식 모델을 학습시킬 때 Vertex AI는 다음 값을 null 값으로 취급합니다.

  • BigQuery NULL 값

  • NaN 또는 무한한 숫자 값

  • 빈 문자열. Vertex AI는 문자열에서 공백을 제거하지 않습니다. 따라서 공백 문자(" ")는 null 값으로 간주되지 않습니다.

  • NaN 또는 무한한 숫자 값으로 변환 가능한 문자열

    • 'NAN'의 경우 대소문자를 무시하며 선택적으로 결과 앞에 플러스 또는 마이너스 부호를 배치합니다.
    • 'INF'의 경우 대소문자를 무시하며 선택적으로 결과 앞에 플러스 또는 마이너스 부호를 배치합니다.
  • 누락된 값

  • 열 변환에 적합한 형식이 아닌 숫자 또는 타임스탬프 변환이 포함된 열의 값입니다. 여기에서 잘못된 값의 행이 학습에 사용되도록 지정한 경우에는 잘못된 값이 null로 간주됩니다.

예측용 데이터 형식

예측에 사용되는 데이터의 형식은 학습에 사용되는 형식과 일치해야 합니다.

Cloud Storage의 CSV 파일에서 데이터로 모델을 학습시킨 경우 데이터는 STRING 유형입니다. JSON 객체를 사용하여 예측 요청을 전송하는 경우 키-값 쌍의 모든 값도 STRING 유형인지 확인합니다.

BigQuery에 저장된 데이터로 모델을 학습시킨 후 JSON 객체를 사용하여 예측 요청을 전송하는 경우 JSON 키-값 쌍의 값 데이터 유형은 아래 표의 매핑을 따라야 합니다.

BigQuery 데이터 유형 JSON 데이터 유형
INT64 문자열
NUMERIC, BIGNUMERIC 숫자
FLOAT64 숫자
BOOL 불리언
STRING 문자열
DATE 문자열
DATETIME 문자열
시간 문자열
TIMESTAMP 문자열
배열 배열
STRUCT 객체

예를 들어 학습 데이터에 FLOAT64 유형의 length 특성이 포함된 경우 다음 JSON 키-값 쌍이 올바릅니다.

"length":3.6,

반대로 다음 JSON 키-값 쌍은 오류를 발생시킵니다.

"length":"3.6",

다음 단계