기본 제공 XGBoost 알고리즘을 사용하여 학습

AI Platform의 기본 제공 알고리즘을 사용하면 학습 코드를 작성하지 않고도 데이터세트를 제출하고 모델을 학습시킬 수 있습니다. 이 페이지에서는 기본 제공 XGBoost 알고리즘의 작동 방식과 사용법을 설명합니다.

개요

기본 제공 XGBoost 알고리즘은 AI Platform에서 실행되도록 호환되는 XGBoost 알고리즘용 래퍼입니다.

이 알고리즘은 다음과 같은 2단계로 구성됩니다.

  1. 사전 처리: AI Platform은 범주형 데이터와 수치 데이터의 조합을 모든 수치 데이터세트로 처리하여 XGBoost를 사용한 학습에 사용할 수 있도록 준비합니다.
  2. 학습: AI Platform은 데이터세트와 제공된 모델 매개변수를 기반으로 XGBoost 알고리즘을 사용하여 학습을 실행합니다. 현재 XGBoost 0.80 버전을 기반으로 구현됩니다.

제한사항

다음 특성은 기본 제공 XGBoost 알고리즘을 사용한 학습에 지원되지 않습니다.

지원되는 머신 유형

지원되는 AI Platform 확장 등급과 머신 유형은 다음과 같습니다.

  • BASIC
  • CUSTOM:
    • standard
    • large_model
    • complex_model_s
    • complex_model_m
    • complex_model_l

또한 Compute Engine 머신 유형(베타)도 사용할 수 있습니다. 자세한 내용은 머신 유형을 참조하세요.

입력 데이터 형식 지정

XGBoost는 표 형식의 수치 데이터에서 작동합니다. 데이터세트의 각 행은 인스턴스 한 개를 나타내며, 데이터세트의 각 열은 특성 값을 나타냅니다. 타겟 열은 예측할 값을 나타냅니다.

CSV 파일 준비

입력 데이터는 UTF-8로 인코딩된 CSV 파일이어야 합니다. 학습 데이터가 카테고리 값과 숫자 값으로만 구성된 경우, Google의 사전 처리 모듈을 사용하여 범주형 데이터를 수치 데이터로 변환할 수 있습니다. 그렇지 않은 경우 자동 사전 처리를 사용 설정하지 않고 학습을 실행할 수 있습니다.

다음 요구사항을 충족하는 입력 CSV 파일을 준비해야 합니다.

  • 헤더 행을 삭제합니다. 헤더 행에는 각 열의 라벨이 있습니다. 학습 데이터의 일부인 나머지 데이터 인스턴스와 함께 제출되지 않도록 헤더 행을 삭제합니다.
  • 타겟 열이 첫 번째 열인지 확인합니다. 타겟 열에는 예측할 값이 포함됩니다. 분류 알고리즘의 경우, 타겟 열의 모든 값은 클래스 또는 카테고리입니다. 회귀 알고리즘의 경우, 타겟 열의 모든 값은 숫자 값입니다.

정수 값 처리

고유 값이 부족하면 기본적으로 정수 값의 열은 범주형 열로 해석됩니다. 예를 들어 데이터세트의 한 열에 {101, 102, 103}과 같은 정수 값이 포함된 경우, AI Platform은 이러한 값을 {'high', 'medium', 'low'}와 같은 범주로 해석합니다.

이러한 잘못된 해석을 방지하고 데이터를 수치 데이터로 해석하려면 정수를 {101.0, 102.0, 103.0}과 같은 부동 소수점 숫자로 변환해야 합니다. 정수를 카테고리로 해석하려면 {code_101, code_102, code_103}과 같이 각 값의 앞 또는 뒤에 문자열을 추가합니다.

회귀용 타겟 값 정규화

회귀 학습 작업의 경우, 각 값이 0과 1 사이가 되도록 타겟 값을 정규화해야 합니다.

XGBoost 학습 작업 제출

이 섹션에서는 기본 제공 XGBoost 학습 작업을 제출하는 방법을 설명합니다.

Google Cloud Platform Console 내에서는 각 초매개변수의 간략한 설명을 확인할 수 있으며 기본 제공 XGBoost 알고리즘 참조에서는 보다 포괄적인 설명을 확인할 수 있습니다.

Console

  1. Google Cloud Platform Console의 Cloud AI Platform 작업 페이지로 이동합니다.

    AI Platform 작업 페이지

  2. 새 학습 작업 버튼을 클릭합니다. 아래 표시된 옵션 중에서 기본 제공 모델 학습을 클릭합니다.

  3. 새 학습 작업 만들기 페이지에서 기본 제공 XGBoost를 선택하고 다음을 클릭합니다.

  4. Google Cloud Platform Console의 링크를 따라 이동하고 기본 제공 XGBoost 참조를 확인하여 사용 가능한 모든 매개변수를 자세히 알아보세요.

gcloud

  1. 이 가이드를 사용하기 전에 gcloud를 설치한 경우에는 최신 버전의 gcloud beta로 업데이트합니다.

    gcloud components install beta
    
  2. [VALUES-IN-BRACKETS]에 고유 값을 입력하여 작업 환경 변수를 설정합니다.

    # Specify the name of the Cloud Storage bucket where you want your
    # training outputs to be stored, and the Docker container for
    # your built-in algorithm selection.
    BUCKET_NAME='[YOUR-BUCKET-NAME]'
    IMAGE_URI='gcr.io/cloud-ml-algos/boosted_trees:latest'
    
    # Specify the Cloud Storage path to your training input data.
    TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv'
    
    DATASET_NAME='census'
    ALGORITHM='xgboost'
    MODEL_TYPE='classification'
    
    DATE='date '+%Y%m%d_%H%M%S''
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
    
  3. gcloud beta ai-platform jobs training submit을 사용하여 학습 작업을 제출합니다.

    gcloud beta ai-platform jobs submit training $JOB_ID \
       --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
       -- \
       --preprocess --objective=binary:logistic \
       --training_data_path=$TRAINING_DATA
    
  4. gcloud로 로그를 확인하여 학습 작업 상태를 모니터링합니다. gcloud ai-platform jobs describegcloud ai-platform jobs stream-logs를 참조하세요.

    gcloud ai-platform jobs describe ${JOB_ID}
    gcloud ai-platform jobs stream-logs ${JOB_ID}
    

사전 처리 작동 방식

범주형 데이터 및 수치 데이터에 자동 사전 처리가 수행됩니다. 사전 처리 루틴은 먼저 데이터를 분석한 후 변환합니다.

분석

먼저 AI Platform이 각 열의 데이터 유형을 자동으로 감지하고, 각 열의 처리 방법을 식별하고, 열 데이터의 통계 일부를 계산합니다. 이 정보는 metadata.json 파일에 캡처됩니다.

AI Platform은 대상 열의 유형을 분석하여 지정된 데이터세트가 회귀용 또는 분류용인지 식별합니다. 이러한 분석이 개발자가 선택한 objective와 충돌하면 오류가 발생합니다. 확실하지 않은 경우에는 데이터 형식을 명확하게 지정하여 타겟 열 처리 방법을 명시해야 합니다.

  • 유형: 열은 수치 또는 범주형일 수 있습니다.

  • 처리: AI Platform은 각 열의 처리 방법을 다음과 같이 식별합니다.

    • 열의 모든 행에 단일 값이 있으면 열은 상수로 처리됩니다.
    • 열이 범주형이고 모든 행에 고유 값이 있으면 열은 row_identifier로 처리됩니다.
    • 열이 부동 소수점 값이 있는 숫자형 또는 정수 값이 있는 숫자형이고 고유 값이 여러 개 있으면 열은 숫자로 처리됩니다.
    • 열이 정수 값이 있는 숫자형이고 열에 고유 값이 부족하면 열은 정수 값이 ID 또는 어휘인 범주형 열로 처리됩니다.
      • 열에 있는 고유 값 수가 입력 데이터세트에 있는 행 수의 20% 미만이면 열은 고유 값이 부족한 것으로 간주됩니다.
    • 열이 범주형이고 카디널리티가 높으면 열은 해싱으로 처리됩니다. 여기서 해시 버킷 수는 열에 있는 고유 값 수의 제곱근과 동일합니다.
      • 고유 값 수가 데이터세트에 있는 행 수의 제곱근보다 크면 범주형 열은 카디널리티가 높다고 간주됩니다.
    • 열이 범주형이고 고유 값 수가 데이터세트에 있는 행 수의 제곱근보다 작거나 같으면 열은 어휘가 있는 일반 범주형 열로 처리됩니다.
  • 통계: AI Platform은 식별된 열 유형 및 처리에 따라 이후 단계에서 열을 변환하는 데 사용되는 통계를 다음과 같이 계산합니다.

    • 열이 수치이면 평균 값과 분산 값을 계산합니다.
    • 열이 범주형이고 처리 방식이 ID 또는 어휘이면 열에서 고유 값을 추출합니다.
    • 열이 범주형이고 처리 방식이 해싱이면 열의 카디널리티에 대한 해시 버킷 수를 계산합니다.

변환

데이터세트의 초기 분석이 완료되면 AI Platform은 데이터세트에 적용된 유형, 처리, 통계를 기준으로 데이터를 변환합니다. AI Platform은 다음 순서로 변환을 수행합니다.

  1. 데이터세트별 학습 데이터의 사용량을 비율로 지정하는 경우, 학습 데이터세트를 검증 데이터세트와 테스트 데이터세트로 분할합니다.
  2. 특성이 10% 이상 누락된 행을 삭제합니다.
  3. 누락 값을 채웁니다. 숫자 열에는 평균 값이 사용되고 범주형 열에는 0이 사용됩니다. 아래 예를 참조하세요.

  4. 어휘ID 처리가 적용되는 범주형 열마다 AI Platform에서 열 값에 원-핫 인코딩을 수행합니다. 아래 예를 참조하세요.

  5. 해싱 처리가 적용되는 범주형 열마다 AI Platform에서 scikit-learn의 FeatureHasher를 사용해 특성 해싱을 수행합니다. 앞에서 계산한 특성 수에 따라 해시 버킷 수가 결정됩니다.

  6. row_key 또는 상수 처리가 필요하다고 지정된 각 열은 삭제됩니다.

변환 예

누락된 값이 10%인 행을 삭제합니다. 다음 예에서는 행에 값이 10개 있다고 가정합니다. 각 예시 행에는 간단한 설명을 위해 일부 내용만 표시되어 있습니다.

행 문제 원래 값 변환된 값 설명
예시 행에 누락 값 없음 [3, 0.45, ...,
'fruits', 0, 1]
[3, 0.45, ...,
1, 0, 0, 0, 1]
'fruits' 문자열이 원-핫 인코딩에서 '1, 0, 0' 값으로 변환됩니다.
누락 값이 너무 많음 [3, 0.45, ...,
'fruits', __, __]
행이 삭제됨 행의 값이 10% 이상 누락되었습니다.
숫자 값 누락 [3, 0.45, ...,
'fruits', 0, __]
[3, 0.45, ...,
1, 0, 0, 0, 0.54]
  • 누락된 숫자 값이 열 평균 값으로 대체됩니다. 이 예에서 평균 값은 0.54입니다.
  • 'fruits' 문자열이 원-핫 인코딩에서 '1, 0, 0' 값으로 변환됩니다.
카테고리 값 누락 [3, 0.45, ...,
__, 0, 1]
[3, 0.45, ...,
0, 0, 0, 0, 1]
  • 누락된 카테고리 값이 원-핫 인코딩에서 '0, 0, 0' 값으로 변환됩니다.

자동 사전 처리가 완료된 후 AI Platform은 처리된 데이터세트를 작업 요청에 지정된 디렉토리의 Cloud Storage 버킷으로 다시 업로드합니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...