기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
XGBoost 버전 0.72
중요
아마존은 XGBoost 0.72를 더 이상 사용하지 않습니다. SageMaker 다음 코드 샘플과 같이 이미지 URI를 가져와서 이 이전 버전의 XGBoost를 기본 제공 알고리즘으로 계속 사용할 수 있습니다. XGBoost의 경우 :1
(으)로 끝나는 이미지 URI는 이전 버전의 이미지입니다.
최신 버전을 사용하려면 이미지 URI 태그를 명시적으로 지정해야 합니다. (지원되는 버전 참조)
Amazon SageMaker XGBoost 알고리즘의 이전 릴리스는 0.72 릴리스를 기반으로 합니다. 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 Release 0.72 하이퍼파라미터
다음 표에는 XGBoost 알고리즘의 하이퍼파라미터가 나와 있습니다. 이들은 사용자가 데이터로부터 모델 파라미터의 예측을 촉진하기 위해 설정하는 파라미터입니다. 먼저 반드시 설정해야 하는 필수 하이퍼파라미터가 알파벳 순으로 나열되어 있습니다. 그 다음에 설정할 수 있는 선택적 하이퍼파라미터가 알파벳 순으로 나열되어 있습니다. SageMaker XGBoost 알고리즘은 오픈 소스 XGBoost 패키지를 구현한 것입니다. 현재 버전 0.72를 지원합니다. SageMaker 이 XGBoost 버전의 하이퍼파라미터 구성에 대한 자세한 정보는 XGBoost Parameters
파라미터 이름 | 설명 |
---|---|
num_class |
클래스의 수. 필수, 유효한 값: 정수 |
num_round |
교육을 실행할 라운드의 수. 필수 유효한 값: 정수 |
alpha |
가중치의 L1 정규화 항. 이 값이 증가하면 더욱 보수적인 모델이 됩니다. 선택 사항 유효한 값: 부동 소수점 기본값: 0 |
base_score |
모든 인스턴스의 초기 예측 점수, 전역 편향. 선택 사항 유효한 값: 부동 소수점 기본 값: 0.5 |
booster |
사용할 부스터. 선택 사항 유효한 값: 문자열. 기본 값: |
colsample_bylevel |
각 수준의 각 분할에 대한 열의 하위 샘플 비율. 선택 사항 유효한 값: 부동 소수점. 범위: [0,1]. 기본값: 1 |
colsample_bytree |
각 트리 생성 시 열의 하위 샘플 비율. 선택 사항 유효한 값: 부동 소수점. 범위: [0,1]. 기본값: 1 |
csv_weights |
이 플래그가 활성화되면 XGBoost는 훈련 데이터의 두 번째 열(레이블 다음 열)을 인스턴스 가중치로 가져와 csv 입력에 대한 인스턴스 중요도를 구분합니다. 선택 사항 유효한 값: 0 또는 1 기본값: 0 |
early_stopping_rounds |
모델은 검증 점수가 증가하지 않을 때까지 훈련합니다. 훈련을 계속하려면 검증 오류를 최소한 선택 사항 유효한 값: 정수 기본값: - |
eta |
과적합 방지 업데이트에 사용되는 단계 크기 축소입니다. 각 부스팅 단계 이후 직접 새 특징의 가중치를 직접 가져옵니다. 선택 사항 유효한 값: 부동 소수점. 범위: [0,1]. 기본 값: 0.3 |
eval_metric |
검증 데이터에 대한 평가 지표. 기본 지표는 목표에 따라 할당됩니다.
유효한 입력의 목록은 XGBoost 파라미터 선택 사항 유효한 값: 문자열 기본값: 목표에 따른 기본값. |
gamma |
트리의 리프 노드에 추가 파티션을 생성하는 데 필요한 최소 손실 감소. 값이 클수록 알고리즘이 더욱 보수적입니다. 선택 사항 유효한 값: 부동 소수점. 범위: [0,∞). 기본값: 0 |
grow_policy |
트리에 새 노드가 추가되는 방법을 제어합니다. 현재는 선택 사항 유효한 값: 문자열. 기본 값: |
lambda |
가중치의 L2 정규화 항. 이 값이 증가하면 더욱 보수적인 모델이 됩니다. 선택 사항 유효한 값: 부동 소수점 기본값: 1 |
lambda_bias |
편향의 L2 정규화 항. 선택 사항 유효한 값: 부동 소수점. 범위: [0.0, 1.0]. 기본값: 0 |
max_bin |
버킷 지속 특징에 대한 별도 빈의 최대 수. 선택 사항 유효한 값: 정수 기본값: 256 |
max_delta_step |
각 트리의 가중치 추정에 허용되는 최대 델타 단계. 양수가 사용될 경우 업데이트가 더욱 보수적인 데 도움이 됩니다. 선호 옵션은 로지스틱 회귀에서 사용하는 것입니다. 1~10으로 설정하는 경우 업데이트 제어에 도움이 됩니다. 선택 사항 유효한 값: 정수. 범위: [0,∞). 기본값: 0 |
max_depth |
트리의 최대 깊이. 이 값이 증가하면 모델이 더욱 복잡해지고 과적합의 가능성이 높습니다. 0은 제한 없음을 나타냅니다. 선택 사항 유효한 값: 정수. 범위: [0,∞) 기본값: 6 |
max_leaves |
추가할 최대 노드 수. 선택 사항 유효한 값: 정수 기본값: 0 |
min_child_weight |
하위에 필요한 인스턴스 가중치(헤시안)의 최소 합. 트리 파티션 단계로 리프 노드의 인스턴스 가중치 합이 선택 사항 유효한 값: 부동 소수점. 범위: [0,∞). 기본값: 1 |
normalize_type |
정규화 알고리즘의 유형. 선택 사항 유효한 값: tree 또는 forest. 기본값: tree |
nthread |
xgboost 실행에 사용되는 병렬 스레드의 수. 선택 사항 유효한 값: 정수 기본값: 스레드의 최대 수. |
objective |
학습 작업 및 해당 학습 목표를 지정합니다. 예: 선택 사항 유효한 값: 문자열 기본 값: |
one_drop |
이 플래그가 활성화될 때 최소 1개의 트리가 드롭아웃 도중 항상 드롭됩니다. 선택 사항 유효한 값: 0 또는 1 기본값: 0 |
process_type |
실행하는 부스팅 프로세스 유형. 선택 사항 유효한 값: 문자열. 기본 값: |
rate_drop |
드롭아웃 동안 드롭하는 이전 트리의 조각을 지정하는 드롭아웃 비율 선택 사항 유효한 값: 부동 소수점. 범위: [0.0, 1.0]. 기본 값: 0.0 |
refresh_leaf |
'refresh' 업데이터 플러그인의 파라미터. 선택 사항 유효한 값: 0/1 기본값: 1 |
sample_type |
샘플링 알고리즘의 유형. 선택 사항 유효한 값: 기본 값: |
scale_pos_weight |
양수 및 음수 가중치의 균형을 제어합니다. 불균형 클래스에 유용합니다. 고려할 유효한 값: 선택 사항 유효한 값: 부동 소수점 기본값: 1 |
seed |
난수 시드. 선택 사항 유효한 값: 정수 기본값: 0 |
silent |
0은 실행 메시지 출력, 1은 자동 모드를 의미합니다. 유효한 값: 0 또는 1 선택 사항 기본값: 0 |
sketch_eps |
대략적인 그리디 알고리즘에 대해서만 사용됩니다. 이는 O(1 / 선택 사항 유효한 값: 부동 소수점, 범위: [0, 1]. 기본값: 0.03 |
skip_drop |
부스팅 반복 도중 드롭아웃 과정을 건너뛸 확률. 선택 사항 유효한 값: 부동 소수점. 범위: [0.0, 1.0]. 기본 값: 0.0 |
subsample |
교육 인스턴스의 하위 샘플 비율. 0.5로 설정한 경우 XGBoost가 데이터 인스턴스 절반을 무작위로 수집하여 트리를 확장함을 나타냅니다. 이는 과적합을 방지합니다. 선택 사항 유효한 값: 부동 소수점. 범위: [0,1]. 기본값: 1 |
tree_method |
XGBoost에서 사용되는 트리 생성 알고리즘. 선택 사항 유효한 값: 기본 값: |
tweedie_variance_power |
Tweedie 분포의 분산을 제어하는 파라미터. 선택 사항 유효한 값: 부동 소수점. 범위: (1, 2). 기본값: 1.5 |
updater |
트리 업데이터의 실행 순서를 정의하는 쉼표로 구분된 문자열. 트리의 생성 및 수정을 위한 모듈형 방식을 제공합니다. 유효한 입력의 전체 목록은 XGBoost 파라미터 선택 사항 유효한 값: 쉼표로 구분된 문자열. 기본값: |
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
, eta
및 num_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 |