CatBoost - 아마존 SageMaker

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

CatBoost

CatBoostGBDT (그래디언트 부스팅 의사 결정 트리) 알고리즘의 인기 있는 고성능 오픈 소스 구현입니다. GBDT는 더욱 단순하고 약한 모델 세트의 추정치의 앙상블을 결합하여 대상 변수를 정확하게 예측하려 시도하는 지도 훈련 알고리즘입니다.

CatBoost GBDT에 두 가지 중요한 알고리즘 발전을 소개합니다.

  1. 기존 알고리즘에 대한 순열 기반 대안인 순서가 있는 부스팅 구현

  2. 범주형 기능을 처리하기 위한 혁신적인 알고리즘

두 기법 모두 현재의 모든 기존 그라데이션 부스팅 알고리즘 구현에 존재하는 특수한 종류의 표적 누출로 인한 예측 변화를 막기 위해 개발되었습니다.

사용 방법 SageMaker CatBoost

Amazon SageMaker 내장 CatBoost 알고리즘으로 사용할 수 있습니다. 다음 섹션에서는 SageMaker Python CatBoost SDK와 함께 사용하는 방법을 설명합니다. Amazon SageMaker Studio 클래식 CatBoost UI에서 사용하는 방법에 대한 자세한 내용은 을 참조하십시오SageMaker JumpStart.

  • 내장 CatBoost 알고리즘으로 사용

    다음 코드 예제와 같이 CatBoost 내장 알고리즘을 사용하여 CatBoost 훈련 컨테이너를 빌드합니다. SageMaker image_uris.retrieveAPI (또는 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.CatBoostClassifiercatboost.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 LightGBM 및 알고리즘을 사용한 표 형식 분류 CatBoost

이 노트북은 Amazon SageMaker CatBoost 알고리즘을 사용하여 표 형식 분류 모델을 훈련하고 호스팅하는 방법을 보여줍니다.

Amazon SageMaker LightGBM과 알고리즘을 사용한 표 형식 회귀 CatBoost

이 노트북은 Amazon SageMaker CatBoost 알고리즘을 사용하여 표 형식 회귀 모델을 훈련하고 호스팅하는 방법을 보여줍니다.

예제를 실행하는 데 사용할 수 있는 Jupyter 노트북 인스턴스를 만들고 액세스하는 방법에 대한 지침은 을 참조하십시오. SageMaker 아마존 SageMaker 노트북 인스턴스 Notebook 인스턴스를 만들고 연 후 SageMakerExamples 탭을 선택하면 모든 샘플 목록이 표시됩니다. SageMaker 노트북을 열려면 사용 탭을 선택한 후 사본 생성을 선택합니다.