기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CatBoost
CatBoost
CatBoost GBDT에 두 가지 중요한 알고리즘 발전을 소개합니다.
-
기존 알고리즘에 대한 순열 기반 대안인 순서가 있는 부스팅 구현
-
범주형 기능을 처리하기 위한 혁신적인 알고리즘
두 기법 모두 현재의 모든 기존 그라데이션 부스팅 알고리즘 구현에 존재하는 특수한 종류의 표적 누출로 인한 예측 변화를 막기 위해 개발되었습니다.
사용 방법 SageMaker CatBoost
Amazon SageMaker 내장 CatBoost 알고리즘으로 사용할 수 있습니다. 다음 섹션에서는 SageMaker Python CatBoost SDK와 함께 사용하는 방법을 설명합니다. Amazon SageMaker Studio 클래식 CatBoost UI에서 사용하는 방법에 대한 자세한 내용은 을 참조하십시오SageMaker JumpStart.
-
내장 CatBoost 알고리즘으로 사용
다음 코드 예제와 같이 CatBoost 내장 알고리즘을 사용하여 CatBoost 훈련 컨테이너를 빌드합니다. SageMaker
image_uris.retrieve
API (또는 Amazon SageMaker Python SDK버전 2를 사용하는 경우 get_image_uri
API) 를 사용하여 CatBoost 내장 알고리즘 이미지 URI를 자동으로 찾아낼 수 있습니다.CatBoost 이미지 URI를 지정한 후 CatBoost 컨테이너를 사용하여 SageMaker Estimator API를 사용하여 추정기를 구성하고 학습 작업을 시작할 수 있습니다. CatBoost 내장 알고리즘은 스크립트 모드에서 실행되지만 학습 스크립트가 제공되므로 교체할 필요가 없습니다. 스크립트 모드를 사용하여 SageMaker 교육 작업을 생성한 경험이 풍부한 경우 자체 CatBoost 교육 스크립트를 통합할 수 있습니다.
from sagemaker import image_uris, model_uris, script_uris train_model_id, train_model_version, train_scope = "catboost-classification-model", "*", "training" training_instance_type = "ml.m5.xlarge" # Retrieve the docker image train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=train_model_id, model_version=train_model_version, image_scope=train_scope, instance_type=training_instance_type ) # Retrieve the training script train_source_uri = script_uris.retrieve( model_id=train_model_id, model_version=train_model_version, script_scope=train_scope ) train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope ) # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tabular_multiclass/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/train" validation_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/validation" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-tabular-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" from sagemaker import hyperparameters # Retrieve the default hyperparameters for training the model hyperparameters = hyperparameters.retrieve_default( model_id=train_model_id, model_version=train_model_version ) # [Optional] Override default hyperparameters with custom values hyperparameters[ "iterations" ] = "500" print(hyperparameters) from sagemaker.estimator import Estimator from sagemaker.utils import name_from_base training_job_name = name_from_base(f"built-in-algo-{train_model_id}-training") # Create SageMaker Estimator instance tabular_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location ) # Launch a SageMaker Training job by passing the S3 path of the training data tabular_estimator.fit( { "training": training_dataset_s3_path, "validation": validation_dataset_s3_path, }, logs=True, job_name=training_job_name )
내장 CatBoost 알고리즘으로 설정하는 방법에 대한 자세한 내용은 다음 노트북 예제를 참조하십시오.
알고리즘의 입력 및 출력 인터페이스 CatBoost
그라디언트 부스팅은 테이블형 데이터에서 작동합니다. 행은 관측치를 나타내고 1개 열은 대상 변수 또는 레이블을 나타내며, 나머지 열은 특징을 나타냅니다.
의 SageMaker 구현은 학습 및 추론을 위한 CSV를 CatBoost 지원합니다.
-
학습의 ContentType 경우 유효한 입력은 텍스트/csv여야 합니다.
-
추론의 경우 유효한 입력은 ContentType 텍스트/csv여야 합니다.
참고
CSV 훈련의 경우 알고리즘은 대상 변수가 첫 번째 열에 있고 CSV에는 헤더 레코드가 없다고 추정합니다.
CSV 추론의 경우 알고리즘은 CSV 입력에 레이블 열이 없다고 추정합니다.
훈련 데이터, 검증 데이터 및 범주형 기능의 입력 형식
모델에 입력할 훈련 데이터의 형식을 지정하는 방법을 염두에 두세요. CatBoost 훈련 데이터 및 검증 데이터를 포함하는 Amazon S3 버킷의 경로를 제공해야 합니다. 범주형 기능 목록을 포함시킬 수도 있습니다. training
채널 및 validation
채널을 둘 다 사용하여 입력 데이터를 제공하세요. 아니면 training
채널만 사용할 수도 있습니다.
training
채널 및 validation
채널 모두 사용
2가지 S3 경로(training
채널용 1가지, validation
채널용 1가지)를 통해 입력 데이터를 제공할 수 있습니다. 각각의 S3 경로는 하나 이상의 CSV 파일을 가리키는 S3 접두사일 수도 있고, 특정 CSV 파일 하나를 가리키는 전체 S3 경로일 수도 있습니다. CSV 파일의 첫 번째 열에는 대상 변수가 표시되어야 합니다. 나머지 열에는 예측 변수(특징)가 표시되어야 합니다. training
또는 validation
채널에 여러 CSV 파일이 제공되는 경우 CatBoost 알고리즘이 파일을 연결합니다. 검증 데이터는 각 부스팅 반복의 종료 시 검증 점수를 계산하는 데 사용됩니다. 검증 점수가 더 이상 향상되지 않으면 조기 중단이 적용됩니다.
예측 변수에 범주형 기능이 포함되어 있다면 1개 또는 여러 개의 훈련 데이터 파일과 같은 위치에 categorical_index.json
(이)라는 이름의 JSON 파일을 제공할 수 있습니다. 범주형 기능에 JSON 파일을 제공할 경우, training
채널은 특정 CSV 파일이 아닌 S3 접두사를 가리켜야 합니다. 이 파일에는 키가 "cat_index_list"
문자열이고 값이 고유 정수 목록인 Python 사전이 들어 있어야 합니다. 이 값 목록의 각 정수는 훈련 데이터 CSV 파일에 있는 해당 범주형 기능의 열 인덱스를 나타내야 합니다. 각각의 값은 양의 정수(0은 목푯값을 나타내므로 0보다 커야 함)이고 Int32.MaxValue
(2,147,483,647) 미만이면서 열의 총 개수보다 적어야 합니다. 범주형 인덱스 JSON 파일은 하나만 있어야 합니다.
training
채널만 사용:
이외의 방법으로, training
채널의 단일 S3 경로를 통해 입력 데이터를 제공할 수도 있습니다. 이 S3 경로는 하나 이상의 CSV 파일이 들어 있는 training/
(이)라는 이름의 하위 디렉터리가 있는 디렉터리를 가리켜야 합니다. 역시 하나 이상의 CSV 파일이 있는 validation/
라는 이름의 동일한 위치에 다른 하위 디렉터리를 선택적으로 포함시킬 수 있습니다. 검증 데이터가 제공되지 않는 경우, 훈련 데이터의 20% 가 검증 데이터로 사용되도록 무작위로 샘플링됩니다. 예측 변수에 범주형 기능이 포함되어 있다면 데이터 하위 디렉터리와 같은 위치에 categorical_index.json
(이)라는 이름의 JSON 파일을 제공할 수 있습니다.
참고
CSV 훈련 입력 모드의 경우, 알고리즘에 대해 사용 가능한 전체 메모리(인스턴스 수 * InstanceType
의 가용 메모리)가 훈련 데이터 세트를 담을 수 있어야 합니다.
SageMaker CatBoost catboost.CatBoostClassifier
및 catboost.CatBoostRegressor
모듈을 사용하여 모델을 직렬화하거나 역직렬화하여 모델을 저장하거나 로드하는 데 사용할 수 있습니다.
로 학습한 모델을 사용하려면 SageMaker CatBoost catboost
-
다음 Python 코드를 사용합니다.
import tarfile from catboost import CatBoostClassifier t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() file_path = os.path.join(model_file_path, "model") model = CatBoostClassifier() model.load_model(file_path) # prediction with test data # dtest should be a pandas DataFrame with column names feature_0, feature_1, ..., feature_d pred = model.predict(
dtest
)
알고리즘에 대한 Amazon EC2 인스턴스 권장 사항 CatBoost
SageMaker CatBoost 현재는 CPU만 사용하여 학습합니다. CatBoost 메모리 바인딩 (컴퓨팅 바인딩과 반대) 알고리즘입니다. 따라서 컴퓨팅 최적화 인스턴스(예: C5)보다 범용 컴퓨팅 인스턴스(예: M5)를 선택하는 것이 좋습니다. 또한 훈련 데이터를 보유하기 위해 선택한 인스턴스에 총 메모리가 충분한 것이 좋습니다.
CatBoost 샘플 노트북
다음 표에는 Amazon SageMaker CatBoost 알고리즘의 다양한 사용 사례를 다루는 다양한 샘플 노트북이 요약되어 있습니다.
노트북 제목 | 설명 |
---|---|
이 노트북은 Amazon SageMaker CatBoost 알고리즘을 사용하여 표 형식 분류 모델을 훈련하고 호스팅하는 방법을 보여줍니다. |
|
이 노트북은 Amazon SageMaker CatBoost 알고리즘을 사용하여 표 형식 회귀 모델을 훈련하고 호스팅하는 방법을 보여줍니다. |
예제를 실행하는 데 사용할 수 있는 Jupyter 노트북 인스턴스를 만들고 액세스하는 방법에 대한 지침은 을 참조하십시오. SageMaker 아마존 SageMaker 노트북 인스턴스 Notebook 인스턴스를 만들고 연 후 SageMakerExamples 탭을 선택하면 모든 샘플 목록이 표시됩니다. SageMaker 노트북을 열려면 사용 탭을 선택한 후 사본 생성을 선택합니다.