Amazon SageMaker 내장 테이블 형식 알고리즘 LightGBM, CatBoost, TabTransformer 및 AutoGluon-Tabular PlatoBlockchain Data Intelligence를 사용한 이탈 예측. 수직 검색. 일체 포함.

Amazon SageMaker 내장 테이블 형식 알고리즘 LightGBM, CatBoost, TabTransformer 및 AutoGluon-Tabular를 사용한 이탈 예측

아마존 세이지 메이커 의 제품군을 제공합니다 내장 알고리즘, 사전 훈련 된 모델사전 구축된 솔루션 템플릿 데이터 과학자와 기계 학습(ML) 실무자가 ML 모델을 신속하게 교육하고 배포할 수 있도록 지원합니다. 이러한 알고리즘과 모델은 지도 학습과 비지도 학습 모두에 사용할 수 있습니다. 테이블 형식, 이미지 및 텍스트를 포함하여 다양한 유형의 입력 데이터를 처리할 수 있습니다.

고객 이탈은 통신에서 은행에 이르기까지 다양한 기업이 직면한 문제로, 일반적으로 경쟁업체에 고객을 빼앗깁니다. 일반적으로 신규 고객을 유치하는 데 훨씬 더 많은 비용이 들기 때문에 신규 고객을 확보하는 것보다 기존 고객을 유지하는 것이 회사에 가장 큰 이익이 됩니다. 이동통신사는 고객이 서비스를 계속 사용하거나 결국 이탈한 기록이 있습니다. 모바일 운영자 이탈에 대한 이 기록 정보를 사용하여 ML 모델을 교육할 수 있습니다. 이 모델을 교육한 후 임의 고객의 프로필 정보(모델 교육에 사용한 것과 동일한 프로필 정보)를 모델에 전달하고 이 고객이 이탈할지 여부를 예측하도록 할 수 있습니다.

이 게시물에서는 교육 및 배포 최근 출시된 XNUMX개의 SageMaker 알고리즘— LightGBM, CatBoost, TabTransformer 및 AutoGluon-Tabular — 이탈 예측 데이터 세트. 우리는 사용 SageMaker 자동 모델 튜닝 (하이퍼파라미터 최적화 도구) 각 모델에 대한 최상의 하이퍼파라미터를 찾고 홀드아웃 테스트 데이터 세트에서 성능을 비교하여 최적의 것을 선택합니다.

또한 이 솔루션을 템플릿으로 사용하여 최신 표 형식 알고리즘 모음을 검색하고 하이퍼파라미터 최적화를 사용하여 최상의 전체 모델을 찾을 수 있습니다. 관심 있는 실제 비즈니스 문제를 해결하기 위해 예제 데이터 세트를 자신의 것으로 쉽게 대체할 수 있습니다. 이 게시물에서 다루는 SageMaker SDK 코드로 바로 이동하려면 다음을 참조할 수 있습니다. 샘플 Jupyter 노트북.

SageMaker 내장 알고리즘의 이점

특정 유형의 문제 및 데이터에 대한 알고리즘을 선택할 때 SageMaker 내장 알고리즘을 사용하는 것이 가장 쉬운 옵션입니다. 그렇게 하면 다음과 같은 주요 이점이 있기 때문입니다.

  • 낮은 코딩 – 내장 알고리즘은 실험 실행을 시작하는 데 약간의 코딩이 필요합니다. 제공해야 하는 유일한 입력은 데이터, 하이퍼파라미터 및 컴퓨팅 리소스입니다. 이를 통해 결과 추적 및 코드 변경에 대한 오버헤드를 줄이면서 실험을 더 빠르게 실행할 수 있습니다.
  • 효율적이고 확장 가능한 알고리즘 구현 – 내장 알고리즘은 여러 컴퓨트 인스턴스에 걸친 병렬화와 함께 제공되며 적용 가능한 모든 알고리즘에 대해 즉시 사용 가능한 GPU 지원이 제공됩니다. 모델을 교육하는 데 사용할 데이터가 많은 경우 대부분의 기본 제공 알고리즘은 수요를 충족하도록 쉽게 확장할 수 있습니다. 이미 사전 훈련된 모델이 있더라도 SageMaker에서 추론을 사용하고 이미 알고 있는 하이퍼파라미터를 입력하는 것이 직접 훈련 스크립트를 작성하는 것보다 더 쉬울 수 있습니다.
  • 투명도 – 결과 모델 아티팩트의 소유자입니다. 해당 모델을 가져와 여러 가지 추론 패턴에 대해 SageMaker에 배포할 수 있습니다(모든 사용 가능한 배포 유형) 및 손쉬운 엔드포인트 확장 및 관리를 제공하거나 필요할 때마다 배포할 수 있습니다.

데이터 시각화 및 전처리

먼저 고객 이탈 데이터 세트를 수집합니다. 5,000개의 레코드가 포함된 비교적 작은 데이터 세트이며 각 레코드는 21개의 속성을 사용하여 알려지지 않은 미국 이동 통신사의 고객 프로필을 설명합니다. 속성은 고객이 거주하는 미국 주에서 고객 서비스에 건 통화 수, 주간 통화에 대해 청구되는 비용에 이르기까지 다양합니다. 우리는 이진 분류 문제인 고객 이탈 여부를 예측하려고 합니다. 다음은 레이블이 마지막 열인 기능의 하위 집합입니다.

다음은 각 열, 특히 선택한 기능의 요약 통계 및 히스토그램에 대한 통찰력입니다.

Amazon SageMaker 내장 테이블 형식 알고리즘 LightGBM, CatBoost, TabTransformer 및 AutoGluon-Tabular PlatoBlockchain Data Intelligence를 사용한 이탈 예측. 수직 검색. 일체 포함.

그런 다음 데이터를 사전 처리하고 훈련, 검증 및 테스트 세트로 분할하고 데이터를 업로드합니다. 아마존 단순 스토리지 서비스 (아마존 S3).

테이블 형식 알고리즘의 자동 모델 튜닝

하이퍼파라미터는 기본 알고리즘이 작동하는 방식을 제어하고 모델의 성능에 영향을 미칩니다. 이러한 하이퍼파라미터는 신경망 기반 모델의 경우 레이어 수, 학습 속도, 가중치 감쇠율 및 드롭아웃이거나 트리 앙상블 모델의 경우 리프 수, 반복 및 최대 트리 깊이일 수 있습니다. 최상의 모델을 선택하기 위해 SageMaker 자동 모델 튜닝을 훈련된 XNUMX개의 SageMaker 테이블 형식 알고리즘 각각에 적용합니다. 조정할 하이퍼파라미터와 탐색할 각 파라미터의 범위만 선택하면 됩니다. 자동 모델 튜닝에 대한 자세한 내용은 다음을 참조하십시오. Amazon SageMaker 자동 모델 튜닝 : 기계 학습에 기계 학습 사용 or Amazon SageMaker 자동 모델 튜닝: 확장 가능한 기울기 없는 최적화.

이것이 실제로 어떻게 작동하는지 봅시다.

라이트 GBM

LightGBM으로 자동 모델 튜닝을 실행하여 시작하고 해당 프로세스를 다른 알고리즘에 적용합니다. 포스팅에서 설명드린대로 이제 API를 통해 Amazon SageMaker JumpStart 모델 및 알고리즘 사용 가능, SageMaker SDK를 통해 사전 구축된 알고리즘을 교육하려면 다음 아티팩트가 필요합니다.

  • 교육 및 추론에 필요한 모든 종속성을 포함하는 프레임워크별 컨테이너 이미지
  • 선택한 모델 또는 알고리즘에 대한 학습 및 추론 스크립트

먼저 이러한 아티팩트를 검색합니다. model_id (lightgbm-classification-model 이 경우) 및 버전:

from sagemaker import image_uris, model_uris, script_uris
train_model_id, train_model_version, train_scope = "lightgbm-classification-model", "*", "training"
training_instance_type = "ml.m5.4xlarge"

# 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
                                        )
# Retrieve the pre-trained model tarball (in the case of tabular modeling, it is a dummy file)
train_model_uri = model_uris.retrieve(model_id=train_model_id,
                                      model_version=train_model_version,
                                      model_scope=train_scope)

그런 다음 LightGBM에 대한 기본 하이퍼파라미터를 가져오고 그 중 일부를 검증 데이터에 대한 부스팅 라운드 수 및 평가 메트릭과 같은 선택된 고정 값으로 설정하고 다른 값을 검색할 값 범위를 정의합니다. SageMaker 매개변수를 사용합니다. ContinuousParameterIntegerParameter 이를 위해 :

from sagemaker import hyperparameters
from sagemaker.tuner import ContinuousParameter, IntegerParameter, HyperparameterTuner

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=train_model_id,
                                                   model_version=train_model_version
                                                   )
# [Optional] Override default hyperparameters with custom values
hyperparameters["num_boost_round"] = "500"
hyperparameters["metric"] = "auc"

# Define search ranges for other hyperparameters
hyperparameter_ranges_lgb = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

마지막으로, 우리는 SageMaker 추정기, 그것을 Hyperarameter튜너, 그리고 하이퍼파라미터 조정 작업을 다음과 같이 시작합니다. tuner.fit():

from sagemaker.estimator import Estimator
from sagemaker.tuner import HyperParameterTuner

# 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,
)

tuner = HyperparameterTuner(
            tabular_estimator,
            "auc",
            hyperparameter_ranges_lgb,
            [{"Name": "auc", "Regex": "auc: ([0-9.]+)"}],
            max_jobs=10,
            max_parallel_jobs=5,
            objective_type="Maximize",
            base_tuning_job_name="some_name",
        )

tuner.fit({"training": training_dataset_s3_path}, logs=True)

XNUMXD덴탈의 max_jobs 매개변수는 자동 모델 튜닝 작업에서 실행될 총 작업 수를 정의합니다. max_parallel_jobs 시작해야 하는 동시 교육 작업 수를 정의합니다. 우리는 또한 목표를 다음과 같이 정의합니다. “Maximize” 모델의 AUC(곡선 아래 영역). 에 의해 노출된 사용 가능한 매개변수에 대해 자세히 알아보려면 HyperParameterTuner, 인용하다 하이퍼 파라미터 튜너.

확인 샘플 노트 테스트 세트에서 이 모델을 배포하고 평가하는 방법을 확인합니다.

캣부스트

CatBoost 알고리즘에서 하이퍼파라미터 튜닝 프로세스는 이전과 동일하지만 ID에서 모델 아티팩트를 검색해야 합니다. catboost-classification-model 하이퍼파라미터의 범위 선택을 변경합니다.

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning 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"
hyperparameters["eval_metric"] = "AUC"

# Define search ranges for other hyperparameters
hyperparameter_ranges_cat = {
    "learning_rate": ContinuousParameter(0.00001, 0.1, scaling_type="Logarithmic"),
    "iterations": IntegerParameter(50, 1000),
    "depth": IntegerParameter(1, 10),
    "l2_leaf_reg": IntegerParameter(1, 10),
    "random_strength": ContinuousParameter(0.01, 10, scaling_type="Logarithmic"),
}

탭변환기

TabTransformer 모델에서 하이퍼파라미터 조정 프로세스는 이전과 동일하지만 ID에서 모델 아티팩트를 검색해야 합니다. pytorch-tabtransformerclassification-model 하이퍼파라미터의 범위 선택을 변경합니다.

우리는 또한 훈련을 변경 instance_typeml.p3.2xlarge. TabTransformer는 Amazon 연구에서 최근 파생된 모델로, Transformer 모델을 사용하여 테이블 형식 데이터에 딥 러닝의 힘을 부여합니다. 이 모델을 효율적인 방식으로 교육하려면 GPU 지원 인스턴스가 필요합니다. 자세한 내용은 다음을 참조하십시오. 테이블의 데이터에 딥 러닝의 힘을 더하다.

from sagemaker import hyperparameters
from sagemaker.tuner import CategoricalParameter

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
hyperparameters["n_epochs"] = 40  # The same hyperparameter is named as "iterations" for CatBoost
hyperparameters["patience"] = 10

# Define search ranges for other hyperparameters
hyperparameter_ranges_tab = {
    "learning_rate": ContinuousParameter(0.001, 0.01, scaling_type="Auto"),
    "batch_size": CategoricalParameter([64, 128, 256, 512]),
    "attn_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "mlp_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "input_dim": CategoricalParameter(["16", "32", "64", "128", "256"]),
    "frac_shared_embed": ContinuousParameter(0.0, 0.5, scaling_type="Auto"),
}

AutoGluon-표

AutoGluon의 경우 하이퍼파라미터 튜닝을 하지 않습니다. AutoGluon은 온전한 하이퍼 매개 변수 선택으로 여러 모델을 앙상블하고 여러 레이어에 쌓는 데 중점을 두기 때문에 이것은 의도된 것입니다. 이는 완벽한 하이퍼파라미터 선택으로 하나의 모델을 교육하는 것보다 성능이 더 우수하고 계산 비용도 저렴합니다. 자세한 내용은 확인하세요. AutoGluon-Tabular: 구조화된 데이터를 위한 강력하고 정확한 AutoML.

따라서 우리는 model_idautogluon-classification-ensemble, 평가 메트릭 하이퍼파라미터만 원하는 AUC 점수로 수정합니다.

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)

hyperparameters["eval_metric"] = "roc_auc"

전화하는 대신 tuner.fit(), 우리는 estimator.fit() 단일 교육 작업을 시작합니다.

훈련된 모델 벤치마킹

네 가지 모델을 모두 배포한 후 예측을 위해 전체 테스트 세트를 각 엔드포인트로 보내고 각각에 대한 정확도, F1 및 AUC 메트릭을 계산합니다(코드 참조). 샘플 노트). 다음 표에 중요한 면책 조항과 함께 결과를 제시합니다. 이러한 모델 간의 결과 및 상대적 성능은 교육에 사용하는 데이터 세트에 따라 달라집니다. 이러한 결과는 대표적이며 특정 알고리즘이 더 나은 성능을 발휘하는 경향이 관련 요인을 기반으로 하더라도(예: AutoGluon은 배후에서 LightGBM 및 CatBoost 모델의 예측을 지능적으로 앙상블함) 성능의 균형은 다른 데이터 분포에서 변경될 수 있습니다.

. 자동 모델 튜닝 기능이 있는 LightGBM 자동 모델 튜닝 기능이 있는 CatBoost 자동 모델 튜닝 기능이 있는 TabTransformer AutoGluon-표
정확성 0.8977 0.9622 0.9511 0.98
F1 0.8986 0.9624 0.9517 0.98
AUC 0.9629 0.9907 0.989 0.9979

결론

이 게시물에서는 낮은 코딩 노력으로 고객 이탈 예측 문제를 해결하기 위해 XNUMX가지 SageMaker 기본 제공 알고리즘을 교육했습니다. 우리는 SageMaker 자동 모델 튜닝을 사용하여 이러한 알고리즘을 교육할 최상의 하이퍼파라미터를 찾고 선택한 이탈 예측 데이터 세트에서 성능을 비교했습니다. 당신은 관련을 사용할 수 있습니다 샘플 노트 원하는 테이블 형식의 데이터 기반 문제를 해결하기 위해 데이터 세트를 자신의 데이터 세트로 대체합니다.

SageMaker에서 이러한 알고리즘을 시도하고 다음에서 제공되는 다른 기본 제공 알고리즘을 사용하는 방법에 대한 샘플 노트북을 확인하십시오. GitHub의.


저자 소개

Amazon SageMaker 내장 테이블 형식 알고리즘 LightGBM, CatBoost, TabTransformer 및 AutoGluon-Tabular PlatoBlockchain Data Intelligence를 사용한 이탈 예측. 수직 검색. 일체 포함.황신 박사 Amazon SageMaker JumpStart 및 Amazon SageMaker 내장 알고리즘의 응용 과학자입니다. 그는 확장 가능한 기계 학습 알고리즘 개발에 중점을 둡니다. 그의 연구 관심 분야는 자연어 처리, 표 형식 데이터에 대한 설명 가능한 딥 러닝, 비모수적 시공간 클러스터링에 대한 강력한 분석입니다. 그는 ACL, ICDM, KDD 컨퍼런스 및 Royal Statistical Society: Series A 저널에 많은 논문을 발표했습니다.

Amazon SageMaker 내장 테이블 형식 알고리즘 LightGBM, CatBoost, TabTransformer 및 AutoGluon-Tabular PlatoBlockchain Data Intelligence를 사용한 이탈 예측. 수직 검색. 일체 포함.주앙 모 우라 Amazon Web Services의 AI/ML 전문가 솔루션 아키텍트입니다. 그는 주로 NLP 사용 사례에 중점을 두고 고객이 딥 러닝 모델 교육 및 배포를 최적화하도록 지원합니다. 그는 또한 로우 코드 ML 솔루션과 ML 전문 하드웨어의 적극적인 지지자입니다.

타임 스탬프 :

더보기 AWS 기계 학습