CatBoost - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

CatBoost

CatBoosté uma implementação de código aberto popular e de alto desempenho do algoritmo Gradient Boosting Decision Tree (GBDT). GBDT é um algoritmo de aprendizado supervisionado que tenta prever com precisão uma variável de destino. Para isso, combina um grupo de estimativas de um conjunto de modelos mais simples e mais fracos.

CatBoost introduz dois avanços algorítmicos críticos no GBDT:

  1. A implementação do aumento ordenado, uma alternativa baseada em permutação ao algoritmo clássico

  2. Um algoritmo inovador para processar recursos categóricos

Ambas as técnicas foram criadas para combater uma mudança de previsão causada por um tipo especial de vazamento de alvo presente em todas as implementações atualmente existentes de algoritmos de aumento de gradiente.

Como usar SageMaker CatBoost

Você pode usar CatBoost como um algoritmo SageMaker integrado da Amazon. A seção a seguir descreve como usar CatBoost com o SDK do SageMaker Python. Para obter informações sobre como usar a interface CatBoost do usuário do Amazon SageMaker Studio Classic, consulteTreine, implante e avalie modelos pré-treinados com SageMaker JumpStart.

  • Use CatBoost como um algoritmo embutido

    Use o algoritmo CatBoost integrado para criar um contêiner CatBoost de treinamento, conforme mostrado no exemplo de código a seguir. Você pode identificar automaticamente o URI CatBoost integrado da imagem do algoritmo usando a SageMaker image_uris.retrieve API (ou a get_image_uri API se estiver usando o SDK do Amazon SageMaker Python versão 2).

    Depois de especificar o URI da CatBoost imagem, você pode usar o CatBoost contêiner para criar um estimador usando a API Estimator e SageMaker iniciar um trabalho de treinamento. O algoritmo CatBoost incorporado é executado no modo script, mas o script de treinamento é fornecido para você e não há necessidade de substituí-lo. Se você tiver uma vasta experiência no uso do modo script para criar um trabalho de SageMaker treinamento, poderá incorporar seus próprios scripts de CatBoost treinamento.

    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 )

    Para obter mais informações sobre como configurar CatBoost como um algoritmo incorporado, consulte os exemplos de cadernos a seguir.

Interface de entrada e saída para o CatBoost algoritmo

O aumento de gradiente trabalha em dados tabulares: as linhas representam as observações, uma coluna representa a variável de destino ou rótulo, e as demais colunas representam os atributos.

A SageMaker implementação do CatBoost suporte CSV para treinamento e inferência:

  • Para treinamento ContentType, as entradas válidas devem ser text/csv.

  • Para inferência ContentType, as entradas válidas devem ser text/csv.

nota

Para treinamento de CSV, o algoritmo de treinamento pressupõe que a variável de destino está na primeira coluna e que o CSV não tem um registro de cabeçalho.

Para inferência de CSV, o algoritmo pressupõe que a entrada do CSV não tem a coluna de rótulo.

Formato de entrada para dados de treinamento, dados de validação e recursos categóricos

Lembre-se de como formatar seus dados de treinamento para serem inseridos no CatBoost modelo. Você precisa fornecer o caminho para um bucket do Amazon S3 que contenha seus dados de treinamento e validação. Você também pode incluir uma lista de recursos categóricos. Use os canais training e validation para fornecer seus dados de entrada. Como alternativa, você pode usar somente o canal training.

Use ambos os canais training e validation

Você pode fornecer seus dados de entrada por meio de dois caminhos S3, um para o canal training e outro para o canal validation. Cada caminho do S3 pode ser um prefixo do S3 que aponta para um ou mais arquivos CSV ou um caminho completo do S3 apontando para um arquivo CSV específico. As variáveis de destino devem estar na primeira coluna do seu arquivo CSV. As variáveis preditoras (atributos) devem estar nas colunas restantes. Se vários arquivos CSV forem fornecidos para os validation canais training ou, o CatBoost algoritmo concatena os arquivos. Os dados de validação são usados para calcular uma pontuação de validação no final de cada iteração de reforço. A interrupção antecipada é aplicada quando a pontuação de validação para de melhorar.

Se seus preditores incluírem atributos categóricos, você poderá fornecer um arquivo JSON nomeado categorical_index.json no mesmo local do arquivo ou arquivos de dados de treinamento. Se você fornecer um arquivo JSON para recursos categóricos, seu canal training deverá apontar para um prefixo S3 e não para um arquivo CSV específico. Esse arquivo deve conter um dicionário Python em que a chave é a string "cat_index_list" e o valor é uma lista de números inteiros exclusivos. Cada número inteiro na lista de valores deve indicar o índice da coluna dos recursos categóricos correspondentes em seu arquivo CSV de dados de treinamento. Cada valor deve ser um número inteiro positivo (maior que zero porque zero representa o valor alvo), menor que o Int32.MaxValue (2147483647) e menor que o número total de colunas. Só deve haver um arquivo JSON de índice categórico.

Use somente o canal training:

Como alternativa, você pode fornecer seus dados de entrada por meio de um único caminho S3 para o canal training. Esse caminho do S3 deve apontar para um diretório com um subdiretório chamado training/ que contém um ou mais arquivos CSV. Opcionalmente, você pode incluir outro subdiretório no mesmo local chamado validation/ que também tenha um ou mais arquivos CSV. Se os dados de validação não forem fornecidos, 20% dos seus dados de treinamento serão amostrados aleatoriamente para servir como dados de validação. Se seus preditores incluírem atributos categóricos, você poderá fornecer um arquivo JSON nomeado categorical_index.json no mesmo local dos seus subsidiretórios.

nota

Para o modo de entrada de treinamento CSV, a memória total disponível para o algoritmo (contagem de instância multiplicada pela memória disponível no InstanceType) deve ser capaz de conter o conjunto de dados de treinamento.

SageMaker CatBoost usa os catboost.CatBoostRegressor módulos catboost.CatBoostClassifier e para serializar ou desserializar o modelo, que pode ser usado para salvar ou carregar o modelo.

Para usar um modelo treinado SageMaker CatBoost com catboost
  • Use o código do Python a seguir:

    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)

Recomendação de instância do Amazon EC2 para o algoritmo CatBoost

SageMaker CatBoost atualmente, apenas trens usando CPUs. CatBoost é um algoritmo limitado à memória (em oposição ao limitado à computação). Portanto, uma instância de computação de uso geral (por exemplo, M5) é uma opção melhor do que uma instância otimizada para computação (por exemplo, C5). Além disso, recomendamos que você tenha memória total suficiente em instâncias específicas para armazenar os dados de treinamento.

CatBoost cadernos de amostra

A tabela a seguir descreve uma variedade de exemplos de notebooks que abordam diferentes casos de uso do algoritmo da Amazon SageMaker CatBoost .

Título do caderno Descrição

Classificação tabular com Amazon SageMaker LightGBM e algoritmo CatBoost

Este notebook demonstra o uso do SageMaker CatBoost algoritmo da Amazon para treinar e hospedar um modelo de classificação tabular.

Regressão tabular com Amazon SageMaker LightGBM e algoritmo CatBoost

Este notebook demonstra o uso do SageMaker CatBoost algoritmo da Amazon para treinar e hospedar um modelo de regressão tabular.

Para obter instruções sobre como criar e acessar instâncias do notebook Jupyter que você pode usar para executar o exemplo SageMaker, consulte. Instâncias do Amazon SageMaker Notebook Depois de criar uma instância do notebook e abri-la, escolha a guia SageMakerExemplos para ver uma lista de todas as SageMaker amostras. Para abrir um caderno, escolha sua guia Use (Uso) e depois escolha Create copy (Criar cópia).