CatBoost - 아마존 SageMaker

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

CatBoost

CatBoost그라디언트 부스팅 의사 결정 트리 (GBDT) 알고리즘의 인기 있는 고성능 오픈 소스 구현입니다. GBDT는 더 단순하고 약한 모델 집합의 추정치 집합을 결합하여 목표 변수를 정확하게 예측하는 지도 학습 알고리즘입니다.

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

  1. 클래식 알고리즘에 대한 순열 기반 대안인 순서형 부스팅 구현

  2. 범주형 특징 처리를 위한 혁신적인 알고리즘

두 기법 모두 현재의 모든 기존 그래디언트 부스팅 알고리즘 구현에 존재하는 특수한 종류의 표적 누출로 인한 예측 변화를 막기 위해 만들어졌습니다.

사용 방법 SageMaker CatBoost

다음을 사용할 수 있습니다. CatBoost 아마존으로 SageMaker 기본 제공 알고리즘. 다음 단원에서는 사용 방법을 설명합니다. CatBoost 와 함께 SageMaker SDK 사용 방법에 대한 자세한 내용은 CatBoost 아마존에서 SageMaker 스튜디오 UI, 참조SageMaker JumpStart.

  • 사용 CatBoost 기본 경로입니다.

    사용 CatBoost 빌드를 위한 내장 알고리즘 CatBoost 다음 코드 예제에 표시된 훈련 컨테이너입니다. 자동으로 찾을 수 있습니다 CatBoost를 사용하는 내장 알고리즘 이미지 URI SageMaker image_uris.retrieveAPI (또는get_image_uri사용아마존 SageMaker SDK버전 2).

    지정한 후 CatBoost 이미지 URI, 사용할 수 있습니다 CatBoost 를 사용하여 추정기를 구성하기 위한 컨테이너 SageMaker 평가자 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}" 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 hyper-parameters 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}, logs=True, job_name=training_job_name )

    설정 방법에 대한 자세한 내용은 CatBoost 내장 알고리즘으로, 다음 노트북 예제를 참조하십시오.

의 입력 및 출력 인터페이스 CatBoost알고리듬

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

이 SageMaker 의 구현 CatBoost 교육 및 추론을 위한 CSV 지원:

  • 에 대한교육 ContentType, 유효한 입력은텍스트/csv.

  • 에 대한추론 ContentType, 유효한 입력은텍스트/csv.

참고

CSV 교육의 경우 알고리즘은 대상 변수가 첫 번째 열에 있고 CSV에는 헤더 레코드가 없다고 추정합니다.

CSV 추론의 경우 알고리즘은 CSV 입력에 레이블 열이 없다고 추정합니다.

입력이 가능하도록 훈련 데이터의 형식을 지정하는 방법을 염두에 두세요. CatBoost 모델. 훈련 및 선택적 검증 데이터를 위한 하위 디렉터리가 포함된 Amazon S3 버킷의 경로를 제공해야 합니다. 범주형 기능 목록도 포함할 수 있습니다.

  • 교육 데이터 입력 형식: 훈련 데이터는 라는 하위 디렉토리에 있어야 합니다.train/그 안에 a가 들어 있습니다data.csv파일을 생성합니다. 대상 변수는 의 첫 번째 열에 있어야 합니다.data.csv. 예측 변수 (특징) 는 나머지 열에 있어야 합니다.

  • 검증 데이터 입력 형식: 필요한 경우 라는 다른 디렉터리를 포함할 수 있습니다.validation/그것에는 또한data.csv파일을 생성합니다. 검증 데이터는 각 부스팅 반복이 끝날 때 검증 점수를 계산하는 데 사용됩니다. 조기 중지는 검증 점수 개선이 중지될 때 적용됩니다. 검증 데이터가 제공되지 않으면 훈련 데이터의 20% 가 무작위로 샘플링되어 검증 데이터로 사용됩니다.

  • 범주형 특징 입력 형식: 예측 변수에 범주형 특징이 포함된 경우 다음과 같은 JSON 파일을 제공할 수 있습니다.categorical_index.json데이터 디렉터리와 동일한 위치에 있습니다. 이 파일은 키가 문자열인 Python 사전을 포함해야 합니다."cat_index_list"값은 고유한 정수 목록입니다. 값 목록의 각 정수는 훈련 데이터 CSV 파일에 있는 해당 범주형 특징의 열 색인을 나타내야 합니다. 각 값은 양수 정수 (0이 목표값을 나타내므로 0보다 큼) 여야 하며Int32.MaxValue(2147483647) 이며 총 열 수보다 작습니다. 범주형 색인 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 메모리 기반 (컴퓨팅 바인딩과 반대) 알고리즘입니다. 따라서 범용 컴퓨팅 인스턴스 (예: M5) 가 컴퓨팅에 최적화된 인스턴스 (예: C5) 보다 더 나은 선택이 될 수 있습니다. 또한 교육 데이터를 보유하기 위해 선택한 인스턴스에 총 메모리가 충분한 것이 좋습니다.

CatBoost 샘플 노트북

다음 표에는 Amazon의 다양한 사용 사례를 다루는 다양한 샘플 노트북이 요약되어 있습니다. SageMaker CatBoost 알고리즘

노트북 제목 설명

아마존을 사용한 테이블 형식 분류 SageMaker 라이트 GBM 및 CatBoost 알고리듬

이 노트북은 Amazon의 사용법을 보여줍니다. SageMaker CatBoost테이블 형식 분류 모델을 트레이닝하고 호스팅하는 알고리즘

아마존을 사용한 테이블 형식 회귀 SageMaker 라이트 GBM 및 CatBoost 알고리듬

이 노트북은 Amazon의 사용법을 보여줍니다. SageMaker CatBoost테이블 형식 회귀 모델을 학습시키고 호스팅하는 알고리즘.

예제를 실행하는 데 사용할 수 있는 Jupyter Notebook 인스턴스를 만들고 액세스하는 방법에 대한 지침 SageMaker섹션을 참조하세요.Amazon SageMaker 노트북 인스턴스 사용. Notebook 인스턴스를 생성하고 연 다음SageMaker예제:탭을 클릭하면 모든 목록이 표시됩니다. SageMaker 샘플. 노트북을 열려면 사용 탭을 선택한 후 Create copy(사본 생성)를 선택합니다.