AI Platform Training의 기본 제공 알고리즘을 사용하여 학습하면 학습 코드를 작성하지 않고도 데이터 세트를 제출하고 모델을 학습시킬 수 있습니다. 이 페이지에서는 기본 제공 XGBoost 알고리즘의 작동 방식과 사용법을 설명합니다.
개요
기본 제공 XGBoost 알고리즘은 AI Platform Training에서 실행되도록 호환되는 XGBoost 알고리즘용 래퍼입니다.
이 문서에서는 단일 가상 머신 복제본에서 실행되는 알고리즘 버전을 설명합니다. 이 알고리즘의 분산 버전도 있으며, 이 경우 학습을 위해 여러 가상 머신을 사용하고 약간 다른 용도로 사용됩니다. 이 알고리즘은 다음과 같은 2단계로 구성됩니다.
- 사전 처리: AI Platform Training은 범주형 데이터와 수치 데이터의 조합을 모든 수치 데이터세트로 처리하여 XGBoost를 사용한 학습에 사용할 수 있도록 준비합니다.
- 학습: AI Platform Training은 데이터세트와 제공된 모델 매개변수를 기반으로 XGBoost 알고리즘을 사용하여 학습을 실행합니다. 현재 XGBoost 0.81 버전을 기반으로 구현됩니다.
제한사항
다음 특성은 기본 제공 XGBoost 알고리즘의 단일 복제본 버전을 사용한 학습에 지원되지 않습니다.
- GPU를 사용한 학습. GPU를 사용한 학습에는 기본 제공 분산 XGBoost 알고리즘을 사용합니다.
- 분산 학습. 분산형 학습 작업을 실행하려면 기본 제공 분산 XGBoost 알고리즘을 사용합니다.
지원되는 머신 유형
지원되는 AI Platform Training 확장 등급과 머신 유형은 다음과 같습니다.
BASIC
확장 등급- AI Platform Training에서 지원하는 Compute Engine 머신 유형을 사용하는
CUSTOM
확장 등급 - 다음 기존 머신 유형이 있는
CUSTOM
확장 등급:standard
large_model
complex_model_s
complex_model_m
complex_model_l
입력 데이터 형식 지정
XGBoost는 표 형식의 수치 데이터에서 작동합니다. 데이터세트의 각 행은 인스턴스 한 개를 나타내며, 데이터세트의 각 열은 특성 값을 나타냅니다. 타겟 열은 예측할 값을 나타냅니다.
CSV 파일 준비
입력 데이터는 UTF-8로 인코딩된 CSV 파일이어야 합니다. 학습 데이터가 카테고리 값과 숫자 값으로만 구성된 경우, Google의 사전 처리 모듈을 사용하여 범주형 데이터를 수치 데이터로 변환할 수 있습니다. 그렇지 않은 경우 자동 사전 처리를 사용 설정하지 않고 학습을 실행할 수 있습니다.
다음 요구사항을 충족하는 입력 CSV 파일을 준비해야 합니다.
- 헤더 행을 삭제합니다. 헤더 행에는 각 열의 라벨이 있습니다. 학습 데이터의 일부인 나머지 데이터 인스턴스와 함께 제출되지 않도록 헤더 행을 삭제합니다.
- 타겟 열이 첫 번째 열인지 확인합니다. 타겟 열에는 예측할 값이 포함됩니다. 분류 알고리즘의 경우, 타겟 열의 모든 값은 클래스 또는 카테고리입니다. 회귀 알고리즘의 경우, 타겟 열의 모든 값은 숫자 값입니다.
정수 값 처리
정수 값의 의미가 모호하여 자동 사전 처리에서 정수 값의 열이 문제가 될 수 있습니다. AI Platform Training은 정수 값을 처리하는 방법을 자동으로 결정합니다. 기본적으로
- 모든 정수 값이 고유한 경우 열은 인스턴스 키로 취급됩니다.
- 고유한 정수 값이 몇 개만 있는 경우 열은 범주형으로 처리됩니다.
- 그렇지 않으면 열의 값이 부동으로 변환되고 숫자로 처리됩니다.
이러한 기본 결정을 재정의하려면 다음 안내를 따르세요.
- 데이터를 숫자로 처리해야 하는 경우 열의 모든 정수 값을 부동 소수점으로 변환합니다(예: {101.0, 102.0, 103.0}
- 데이터를 범주형으로 처리해야 하는 경우 열의 모든 정수 값 앞에 숫자가 아닌 프리픽스를 추가합니다(예: {code_101, code_102, code_103}
회귀용 타겟 값 정규화
회귀 학습 작업의 경우, 각 값이 0과 1 사이가 되도록 타겟 값을 정규화해야 합니다.
Cloud Storage 버킷 권한 확인
데이터를 저장하려면 AI Platform Training 작업을 실행하는 데 사용하는 것과 동일한 Google Cloud 프로젝트에서 Cloud Storage 버킷을 사용합니다. 그렇지 않으면 데이터가 저장된 Cloud Storage 버킷에 AI Platform Training 액세스 권한을 부여합니다.
XGBoost 학습 작업 제출
이 섹션에서는 기본 제공 XGBoost 학습 작업을 제출하는 방법을 설명합니다.
Google Cloud Console 내에서는 각 초매개변수의 간략한 설명을 확인할 수 있으며 기본 제공 XGBoost 알고리즘 참조에서는 보다 포괄적인 설명을 확인할 수 있습니다.
콘솔
Google Cloud Console의 AI Platform Training 작업 페이지로 이동합니다.
새 학습 작업 버튼을 클릭합니다. 아래 표시된 옵션 중에서 기본 제공 알고리즘 학습을 클릭합니다.
새 학습 작업 만들기 페이지에서 기본 제공 XGBoost를 선택하고 다음을 클릭합니다.
사용 가능한 모든 매개변수에 대해 자세히 알아보려면 Google Cloud Console의 링크로 이동하여 기본 제공 XGBoost 참조의 자세한 설명을 참조하세요.
gcloud
[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}"
gcloud ai-platform jobs training submit
를 사용하여 학습 작업을 제출합니다.gcloud 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
gcloud
로 로그를 확인하여 학습 작업 상태를 모니터링합니다.gcloud ai-platform jobs describe
및gcloud ai-platform jobs stream-logs
를 참조하세요.gcloud ai-platform jobs describe ${JOB_ID} gcloud ai-platform jobs stream-logs ${JOB_ID}
사전 처리 작동 방식
범주형 데이터 및 수치 데이터에 자동 전처리가 수행됩니다. 사전 처리 루틴은 먼저 데이터를 분석한 후 변환합니다.
분석
먼저 AI Platform Training이 각 열의 데이터 유형을 자동으로 감지하고 각 열의 처리 방법을 식별하고 열의 데이터 통계 일부를 계산합니다. 이 정보는 metadata.json
파일에 저장됩니다.
AI Platform Training은 타겟 열의 유형을 분석하여 제공된 데이터 세트가 회귀용 또는 분류용인지 식별합니다. 이러한 분석이 개발자가 선택한 objective
과 충돌하면 오류가 발생합니다. 확실하지 않은 경우에는 데이터 형식을 명확하게 지정하여 타겟 열 처리 방법을 명시해야 합니다.
유형: 열은 숫자형 또는 범주형일 수 있습니다.
처리: AI Platform Training은 각 열의 처리 방법을 다음과 같이 식별합니다.
- 열의 모든 행에 단일 값이 있으면 열은 상수로 처리됩니다.
- 열이 범주형이고 모든 행에 고유 값이 있으면 열은 row_identifier로 처리됩니다.
- 열이 부동 소수점 값이 있는 숫자형 또는 정수 값이 있는 숫자형이고 고유 값이 여러 개 있으면 열은 숫자로 처리됩니다.
- 열이 정수 값이 있는 숫자형이고 열에 고유 값이 부족하면 열은 정수 값이 ID 또는 어휘인 범주형 열로 처리됩니다.
- 열에 있는 고유 값 수가 입력 데이터 세트에 있는 행 수의 20% 미만이면 열은 고유 값이 부족한 것으로 간주됩니다.
- 열이 범주형이고 카디널리티가 높으면 열은 해싱으로 처리됩니다. 여기서 해시 버킷 수는 열에 있는 고유 값 수의 제곱근과 동일합니다.
- 고유 값 수가 데이터 세트에 있는 행 수의 제곱근보다 크면 범주형 열은 카디널리티가 높다고 간주됩니다.
- 열이 범주형이고 고유 값 수가 데이터 세트에 있는 행 수의 제곱근보다 작거나 같으면 열은 어휘가 있는 일반 범주형 열로 처리됩니다.
통계: AI Platform Training은 식별된 열 유형 및 처리 방식을 토대로 이후 단계에서 열을 변환하는 데 사용되는 통계를 다음과 같이 계산합니다.
- 열이 숫자형이면 평균 값과 분산 값을 계산합니다.
- 열이 범주형이고 처리 방식이 ID 또는 어휘이면 열에서 고유 값을 추출합니다.
- 열이 범주형이고 처리 방식이 해싱이면 열의 카디널리티에 대한 해시 버킷 수를 계산합니다.
변환
데이터 세트의 초기 분석이 완료되면 AI Platform Training은 데이터 세트에 적용된 유형, 처리 방식, 통계를 기준으로 데이터를 변환합니다. AI Platform Training은 다음 순서로 변환을 수행합니다.
- 각각에 사용할 학습 데이터 양을 백분율로 지정하는 경우, 학습 데이터세트를 검증 데이터세트와 테스트 데이터세트로 분할합니다.
- 특성이 10% 이상 누락된 행을 삭제합니다.
누락 값을 채웁니다. 숫자 열에는 평균 값이 사용되고 범주형 열에는 0이 사용됩니다. 아래 예시를 참조하세요.
어휘 및 ID 처리가 적용되는 범주형 열마다 AI Platform Training에서 열 값에 원-핫 인코딩을 수행합니다. 아래 예시를 참조하세요.
해싱 처리가 적용되는 범주형 열마다 AI Platform Training에서 scikit-learn의 FeatureHasher를 사용해 특성 해싱을 수행합니다. 앞에서 계산한 특성 수에 따라 해시 버킷 수가 결정됩니다.
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] |
|
범주형 값 누락 | [3, 0.45, ..., __, 0, 1] |
[3, 0.45, ..., 0, 0, 0, 0, 1] |
|
자동 사전 처리가 완료되면 AI Platform Training은 처리된 데이터세트를 작업 요청에서 지정된 디렉터리의 Cloud Storage 버킷으로 다시 업로드합니다.
다음 단계
- XGBoost 자세히 알아보기
- 기본 제공 XGBoost 참조를 참조하여 모든 다른 매개변수 알아보기