XGBoost 버전 0.72 - Amazon SageMaker

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

XGBoost 버전 0.72

중요

아마존은 XGBoost 0.72를 더 이상 사용하지 않습니다. SageMaker 다음 코드 샘플과 같이 이미지 URI를 가져와서 이 이전 버전의 XGBoost를 기본 제공 알고리즘으로 계속 사용할 수 있습니다. XGBoost의 경우 :1(으)로 끝나는 이미지 URI는 이전 버전의 이미지입니다.

SageMaker Python SDK v1
import boto3 from sagemaker.amazon.amazon_estimator import get_image_uri xgb_image_uri = get_image_uri(boto3.Session().region_name, "xgboost", repo_version="1")
SageMaker Python SDK v2
import boto3 from sagemaker import image_uris xgb_image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "1")

최신 버전을 사용하려면 이미지 URI 태그를 명시적으로 지정해야 합니다. (지원되는 버전 참조)

Amazon SageMaker XGBoost 알고리즘의 이전 릴리스는 0.72 릴리스를 기반으로 합니다. XGBoost(eXtreme Gradient Boosting)는 그라디언트 부스팅 트리 알고리즘에서 유명하고 효율적인 오픈 소스 구현입니다. 그라디언트 부스팅은 더욱 단순하고 약한 모델 세트의 추정치를 결합하여 대상 변수를 정확하게 예측하려 시도하는 지도 학습 알고리즘입니다. XGBoost는 기계 학습 경쟁에서 이를 놀라운 수준으로 해냈습니다. 다양한 데이터 유형, 관계 및 분산을 강력하게 처리하기 때문이며 개선된 결과를 위해 수정 및 조정될 수 있는 다량의 하이퍼파라미터 때문입니다. 이러한 유연성 덕분에 XGBoost는 회귀, 분류(이진 및 멀티클래스) 및 순위 관련 문제에 있어 안정적인 선택이 됩니다.

고객은 XGBoost Amazon 알고리즘 SageMaker의 새 릴리스 사용을 고려해야 합니다. 예를 들어 Tensorflow 딥 러닝 프레임워크와 같이 로컬 환경에서 스크립트를 실행하는 SageMaker 기본 제공 알고리즘 또는 프레임워크로 사용할 수 있습니다. 이 새로운 구현은 더 작은 메모리 풋 프린트, 더 나은 로깅, 향상된 하이퍼파라미터 유효성 검사 및 확장된 메트릭 세트를 갖습니다. XGBoost의 이전 구현은 고객이 새 버전으로 마이그레이션을 연기해야 하는 경우 계속 사용할 수 있습니다. 그러나 이 이전 구현은 XGBoost의 0.72 릴리스와 연결되어 있습니다.

XGBoost Release 0.72에 대한 입력/출력 인터페이스

그라디언트 부스팅은 테이블형 데이터에서 작동합니다. 행은 관측치를 나타내고 1개 열은 대상 변수 또는 레이블을 나타내며, 나머지 열은 특징을 나타냅니다.

XGBoost의 SageMaker 구현은 학습 및 추론을 위한 CSV 및 libsvm 형식을 지원합니다.

  • ContentType학습의 경우 유효한 입력은 텍스트/libsvm (기본값) 또는 텍스트/csv입니다.

  • 추론의 ContentType 경우 유효한 입력은 텍스트/libsvm 또는 (기본값) 텍스트/csv입니다.

참고

CSV 훈련의 경우 알고리즘은 대상 변수가 첫 번째 열에 있고 CSV에는 헤더 레코드가 없다고 추정합니다. CSV 추론의 경우 알고리즘은 CSV 입력에 레이블 열이 없다고 추정합니다.

libsvm 훈련의 경우 이 알고리즘은 레이블이 첫 번째 열에 있다고 가정합니다. 후속 열에는 특징에 대한 0이 아닌 인덱스 값 페어가 포함되어 있습니다. 각 열은 <label> <index0>:<value0> <index1>:<value1> ... 형식입니다. libsvm에 대한 추론 요청에는 libsvm 형식의 레이블이 있을 수도 없을 수도 있습니다.

이는 protobuf 훈련 입력 형식을 사용하여 표준 XGBoost 데이터 형식과의 일관성을 높이는 다른 SageMaker 알고리즘과 다릅니다.

CSV 교육 입력 모드의 경우 알고리즘에 대해 사용 가능한 전체 메모리(인스턴스 수 * InstanceType의 가용 메모리)는 교육 데이터 세트를 담을 수 있어야 합니다. libsvm 교육 입력 모드의 경우 요구 사항은 아니지만 권장 사항입니다.

SageMaker XGBoost는 Python pickle 모듈을 사용하여 모델을 직렬화/역직렬화하며, 이는 모델을 저장/로드하는 데 사용할 수 있습니다.

XGBoost로 학습한 모델을 오픈 소스 XGBoost에서 사용하려면 SageMaker
  • 다음 Python 코드를 사용합니다.

    import pickle as pkl import tarfile import xgboost t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = pkl.load(open(model_file_path, 'rb')) # prediction with test data pred = model.predict(dtest)
인스턴스 가중치 지원을 사용하는 라벨링된 데이터 포인트의 중요도를 구분하려면
  • SageMaker XGBoost를 사용하면 고객이 각 인스턴스에 가중치 값을 할당하여 레이블이 지정된 데이터 포인트의 중요도를 차별화할 수 있습니다. text/libsvm 입력의 경우 고객은 레이블 뒤에 가중치 값을 연결하여 데이터 인스턴스에 가중치 값을 할당할 수 있습니다. 예를 들어 label:weight idx_0:val_0 idx_1:val_1...입니다. text/csv 입력의 경우 고객은 파라미터에서 csv_weights 플래그를 설정하고 레이블 다음 열에 가중치 값을 연결해야 합니다. 예제: label,weight,val_0,val_1,....

XGBoost Release 0.72에 대한 EC2 인스턴스 권장 사항

SageMaker XGBoost는 현재 CPU만 사용하여 학습합니다. 메모리 바운드(컴퓨팅 파운드와는 반대) 알고리즘입니다. 따라서 범용 컴퓨팅 인스턴스(예: M4)는 컴퓨팅 최적화 인스턴스(C4)에 비해 더 나은 선택입니다. 또한 훈련 데이터를 보유하기 위해 선택한 인스턴스에 총 메모리가 충분한 것이 좋습니다. 주 메모리에 맞지 않는 데이터를 처리하기 위해 디스크 공간을 사용할 수 있지만 (libsvm 입력 모드에서 사용할 수 있는 out-of-core 기능), 캐시 파일을 디스크에 쓰면 알고리즘 처리 시간이 느려집니다.

XGBoost Release 0.72 샘플 노트북

최신 버전의 SageMaker XGBoost를 내장 알고리즘으로 사용하여 회귀 모델을 학습 및 호스팅하는 방법을 보여주는 샘플 노트북은 Amazon XGBoost 알고리즘을 사용한 회귀 분석을 참조하십시오. SageMaker XGBoost의 0.72 버전을 사용하려면 샘플 코드의 버전을 0.72로 변경해야 합니다. 예제를 실행하는 데 사용할 수 있는 Jupyter 노트북 인스턴스를 생성하고 액세스하는 방법에 대한 지침은 을 참조하십시오. SageMaker Amazon SageMaker 노트북 인스턴스 Notebook 인스턴스를 생성하여 연 후 SageMakerExamples 탭을 선택하면 모든 샘플 목록이 표시됩니다. SageMaker XGBoost 알고리즘을 사용하는 주제 모델링 예제 노트북은 Introduction to Amazon algorithms(Amazon 알고리즘 소개) 섹션에 있습니다. 노트북을 열려면 사용 탭을 클릭하고 Create copy(사본 생성)를 선택합니다.

XGBoost Release 0.72 하이퍼파라미터

다음 표에는 XGBoost 알고리즘의 하이퍼파라미터가 나와 있습니다. 이들은 사용자가 데이터로부터 모델 파라미터의 예측을 촉진하기 위해 설정하는 파라미터입니다. 먼저 반드시 설정해야 하는 필수 하이퍼파라미터가 알파벳 순으로 나열되어 있습니다. 그 다음에 설정할 수 있는 선택적 하이퍼파라미터가 알파벳 순으로 나열되어 있습니다. SageMaker XGBoost 알고리즘은 오픈 소스 XGBoost 패키지를 구현한 것입니다. 현재 버전 0.72를 지원합니다. SageMaker 이 XGBoost 버전의 하이퍼파라미터 구성에 대한 자세한 정보는 XGBoost Parameters를 참조하십시오.

파라미터 이름 설명
num_class

클래스의 수.

필수, objective이(가) multi:softmax 또는 multi:softprob 설정된 경우.

유효한 값: 정수

num_round

교육을 실행할 라운드의 수.

필수

유효한 값: 정수

alpha

가중치의 L1 정규화 항. 이 값이 증가하면 더욱 보수적인 모델이 됩니다.

선택 사항

유효한 값: 부동 소수점

기본값: 0

base_score

모든 인스턴스의 초기 예측 점수, 전역 편향.

선택 사항

유효한 값: 부동 소수점

기본 값: 0.5

booster

사용할 부스터. gbtreedart 값은 트리 기반 모델을 사용하는 반면 gblinear는 선형 함수를 사용합니다.

선택 사항

유효한 값: 문자열. gbtree, gblinear 또는 dart.

기본 값: gbtree

colsample_bylevel

각 수준의 각 분할에 대한 열의 하위 샘플 비율.

선택 사항

유효한 값: 부동 소수점. 범위: [0,1].

기본값: 1

colsample_bytree

각 트리 생성 시 열의 하위 샘플 비율.

선택 사항

유효한 값: 부동 소수점. 범위: [0,1].

기본값: 1

csv_weights

이 플래그가 활성화되면 XGBoost는 훈련 데이터의 두 번째 열(레이블 다음 열)을 인스턴스 가중치로 가져와 csv 입력에 대한 인스턴스 중요도를 구분합니다.

선택 사항

유효한 값: 0 또는 1

기본값: 0

early_stopping_rounds

모델은 검증 점수가 증가하지 않을 때까지 훈련합니다. 훈련을 계속하려면 검증 오류를 최소한 early_stopping_rounds씩 줄여야 합니다. SageMaker 호스팅은 추론에 가장 적합한 모델을 사용합니다.

선택 사항

유효한 값: 정수

기본값: -

eta

과적합 방지 업데이트에 사용되는 단계 크기 축소입니다. 각 부스팅 단계 이후 직접 새 특징의 가중치를 직접 가져옵니다. eta 파라미터는 실제로 특징 가중치를 축소하여 부스팅 프로세스를 더욱 보수적으로 만듭니다.

선택 사항

유효한 값: 부동 소수점. 범위: [0,1].

기본 값: 0.3

eval_metric

검증 데이터에 대한 평가 지표. 기본 지표는 목표에 따라 할당됩니다.

  • rmse: 회귀의 경우

  • error: 분류의 경우

  • map: 순위 결정의 경우

유효한 입력의 목록은 XGBoost 파라미터를 참조하십시오.

선택 사항

유효한 값: 문자열

기본값: 목표에 따른 기본값.

gamma

트리의 리프 노드에 추가 파티션을 생성하는 데 필요한 최소 손실 감소. 값이 클수록 알고리즘이 더욱 보수적입니다.

선택 사항

유효한 값: 부동 소수점. 범위: [0,∞).

기본값: 0

grow_policy

트리에 새 노드가 추가되는 방법을 제어합니다. 현재는 tree_methodhist로 설정된 경우에만 지원됩니다.

선택 사항

유효한 값: 문자열. depthwise 또는 lossguide입니다.

기본 값: depthwise

lambda

가중치의 L2 정규화 항. 이 값이 증가하면 더욱 보수적인 모델이 됩니다.

선택 사항

유효한 값: 부동 소수점

기본값: 1

lambda_bias

편향의 L2 정규화 항.

선택 사항

유효한 값: 부동 소수점. 범위: [0.0, 1.0].

기본값: 0

max_bin

버킷 지속 특징에 대한 별도 빈의 최대 수. tree_methodhist로 설정된 경우에만 사용됩니다.

선택 사항

유효한 값: 정수

기본값: 256

max_delta_step

각 트리의 가중치 추정에 허용되는 최대 델타 단계. 양수가 사용될 경우 업데이트가 더욱 보수적인 데 도움이 됩니다. 선호 옵션은 로지스틱 회귀에서 사용하는 것입니다. 1~10으로 설정하는 경우 업데이트 제어에 도움이 됩니다.

선택 사항

유효한 값: 정수. 범위: [0,∞).

기본값: 0

max_depth

트리의 최대 깊이. 이 값이 증가하면 모델이 더욱 복잡해지고 과적합의 가능성이 높습니다. 0은 제한 없음을 나타냅니다. grow_policy=depth-wise의 경우 제한이 필요합니다.

선택 사항

유효한 값: 정수. 범위: [0,∞)

기본값: 6

max_leaves

추가할 최대 노드 수. grow_policylossguide로 설정된 경우에만 관련이 있습니다.

선택 사항

유효한 값: 정수

기본값: 0

min_child_weight

하위에 필요한 인스턴스 가중치(헤시안)의 최소 합. 트리 파티션 단계로 리프 노드의 인스턴스 가중치 합이 min_child_weight보다 작은 경우 빌드 프로세스는 추가 파티셔닝을 포기합니다. 선형 회귀 모델에서 이는 각 노드에 필요한 최소 인스턴스 수를 반영합니다. 값이 클수록 알고리즘이 더욱 보수적입니다.

선택 사항

유효한 값: 부동 소수점. 범위: [0,∞).

기본값: 1

normalize_type

정규화 알고리즘의 유형.

선택 사항

유효한 값: tree 또는 forest.

기본값: tree

nthread

xgboost 실행에 사용되는 병렬 스레드의 수.

선택 사항

유효한 값: 정수

기본값: 스레드의 최대 수.

objective

학습 작업 및 해당 학습 목표를 지정합니다. 예: reg:logistic, reg:softmax, multi:squarederror. 유효한 입력의 전체 목록은 XGBoost Parameters를 참조하십시오.

선택 사항

유효한 값: 문자열

기본 값: reg:squarederror

one_drop

이 플래그가 활성화될 때 최소 1개의 트리가 드롭아웃 도중 항상 드롭됩니다.

선택 사항

유효한 값: 0 또는 1

기본값: 0

process_type

실행하는 부스팅 프로세스 유형.

선택 사항

유효한 값: 문자열. default 또는 update입니다.

기본 값: default

rate_drop

드롭아웃 동안 드롭하는 이전 트리의 조각을 지정하는 드롭아웃 비율

선택 사항

유효한 값: 부동 소수점. 범위: [0.0, 1.0].

기본 값: 0.0

refresh_leaf

'refresh' 업데이터 플러그인의 파라미터. true(1)로 설정되면 트리 리프 및 트리 노드 통계가 업데이트됩니다. false(0)로 설정되면 트리 노드 통계만 업데이트됩니다.

선택 사항

유효한 값: 0/1

기본값: 1

sample_type

샘플링 알고리즘의 유형.

선택 사항

유효한 값: uniform 또는 weighted.

기본 값: uniform

scale_pos_weight

양수 및 음수 가중치의 균형을 제어합니다. 불균형 클래스에 유용합니다. 고려할 유효한 값: sum(negative cases) / sum(positive cases).

선택 사항

유효한 값: 부동 소수점

기본값: 1

seed

난수 시드.

선택 사항

유효한 값: 정수

기본값: 0

silent

0은 실행 메시지 출력, 1은 자동 모드를 의미합니다.

유효한 값: 0 또는 1

선택 사항

기본값: 0

sketch_eps

대략적인 그리디 알고리즘에 대해서만 사용됩니다. 이는 O(1 / sketch_eps) 빈의 수로 전환됩니다. 직접 선택한 빈의 수와 비교하여 대략적인 정확성을 통해 이론적 보장이 담보됩니다.

선택 사항

유효한 값: 부동 소수점, 범위: [0, 1].

기본값: 0.03

skip_drop

부스팅 반복 도중 드롭아웃 과정을 건너뛸 확률.

선택 사항

유효한 값: 부동 소수점. 범위: [0.0, 1.0].

기본 값: 0.0

subsample

교육 인스턴스의 하위 샘플 비율. 0.5로 설정한 경우 XGBoost가 데이터 인스턴스 절반을 무작위로 수집하여 트리를 확장함을 나타냅니다. 이는 과적합을 방지합니다.

선택 사항

유효한 값: 부동 소수점. 범위: [0,1].

기본값: 1

tree_method

XGBoost에서 사용되는 트리 생성 알고리즘.

선택 사항

유효한 값: auto, exact, approx 또는 hist 중 하나

기본 값: auto

tweedie_variance_power

Tweedie 분포의 분산을 제어하는 파라미터.

선택 사항

유효한 값: 부동 소수점. 범위: (1, 2).

기본값: 1.5

updater

트리 업데이터의 실행 순서를 정의하는 쉼표로 구분된 문자열. 트리의 생성 및 수정을 위한 모듈형 방식을 제공합니다.

유효한 입력의 전체 목록은 XGBoost 파라미터를 참조하십시오.

선택 사항

유효한 값: 쉼표로 구분된 문자열.

기본값: grow_colmaker, prune

XGBoost Release 0.72 모델 튜닝

자동 모델 튜닝, 하이퍼파라미터 튜닝이라고도 하며, 훈련과 검증 데이터 세트에 대한 광범위한 하이퍼파라미터를 테스트하는 여러 작업을 실행하여 최적의 모델 버전을 찾습니다. 세 가지 유형의 하이퍼파라미터를 선택합니다.

  • 모델 훈련 중에 최적화하는 학습 objective 함수

  • 검증 중에 모델 성능을 평가하는 데 사용하는 eval_metric

  • 모델을 자동으로 튜닝할 때 사용하기 쉬운 하이퍼파라미터 세트와 일정한 범위의 값

알고리즘이 계산하는 평가 지표 집합에서 평가 지표를 선택합니다. 자동 모델 튜닝은 선택한 하이퍼파라미터를 검색하여 평가 지표를 최적화하는 모델을 만드는 값 조합을 찾습니다.

모델 튜닝에 대한 추가 정보는 를 사용한 자동 모델 튜닝 SageMaker 단원을 참조하십시오.

XGBoost Release 0.72 알고리즘으로 계산되는 지표

버전 0.72를 기반으로 한 XGBoost 알고리즘은 모델 검증에 사용할 다음 아홉 가지 지표를 계산합니다. 모델을 튜닝할 때 모델을 평가하려면 이러한 지표 중 하나를 선택합니다. 유효한 eval_metric 값의 전체 목록은 XGBoost 학습 작업 파라미터를 참조하십시오.

지표 이름 설명 최적화 방향
validation:auc

곡선 아래 면적

최대화

validation:error

이진 분류 오류율, 잘못된 케이스 수를 모든 케이스 수로 나눠 계산됩니다.

최소화

validation:logloss

네거티브 로그 가능도

최소화

validation:mae

평균 절대 오차

최소화

validation:map

평균 정밀도

최대화

validation:merror

멀티클래스 분류 오류율, 잘못된 케이스 수를 모든 케이스 수로 나눠 계산됩니다.

최소화

validation:mlogloss

멀티클래스 분류를 위한 네거티브 로그 가능도

최소화

validation:ndcg

정규화된 할인 누적 이득

최대화

validation:rmse

평균 제곱근 오차

최소화

튜닝 가능한 XGBoost Release 0.72 하이퍼파라미터

다음 하이퍼파라미터를 사용하여 XGBoost 모델을 튜닝합니다. XGBoost 평가 지표를 최적화하는데 가장 큰 영향을 미치는 하이퍼파라미터는 alpha, min_child_weight, subsample, etanum_round입니다.

파라미터 이름 파라미터 유형 권장 범위
alpha

ContinuousParameterRanges

MinValue: 0, MaxValue: 1000

colsample_bylevel

ContinuousParameterRanges

MinValue: 0.1, MaxValue: 1

colsample_bytree

ContinuousParameterRanges

MinValue: 0.5, MaxValue: 1

eta

ContinuousParameterRanges

MinValue: 0.1, MaxValue: 0.5

gamma

ContinuousParameterRanges

MinValue: 0, MaxValue: 5

lambda

ContinuousParameterRanges

MinValue: 0, MaxValue: 1000

max_delta_step

IntegerParameterRanges

[0, 10]

max_depth

IntegerParameterRanges

[0, 10]

min_child_weight

ContinuousParameterRanges

MinValue: 0, MaxValue: 120

num_round

IntegerParameterRanges

[1, 4000]

subsample

ContinuousParameterRanges

MinValue: 0.5, MaxValue: 1