CatBoost - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

CatBoost

CatBoostes una implementación de código abierto popular y de alto rendimiento del algoritmo Gradient Boosting Decision Tree (GBDT). GBDT es un algoritmo de aprendizaje supervisado que intenta predecir adecuadamente una variable objetivo mediante la combinación de un conjunto de estimaciones a partir de un conjunto de modelos más simples y más débiles.

CatBoost presenta dos avances algorítmicos fundamentales en el GBDT:

  1. La implementación de la potenciación ordenada, una alternativa al algoritmo clásico basada en permutaciones

  2. Un algoritmo innovador para procesar características categóricas

Ambas técnicas se crearon para combatir un cambio de predicción provocado por un tipo especial de fuga de objetivo presente en todas las implementaciones actuales de algoritmos de potenciación por gradiente.

¿Cómo usar SageMaker CatBoost

Se puede utilizar CatBoost como un algoritmo SageMaker integrado en Amazon. En la siguiente sección se describe cómo usarlo CatBoost con el SDK de SageMaker Python. Para obtener información sobre cómo usarlo CatBoost desde la interfaz de usuario clásica de Amazon SageMaker Studio, consulteEntrene, implemente y evalúe modelos previamente entrenados con SageMaker JumpStart.

  • CatBoost Utilícelo como algoritmo integrado

    Utilice el algoritmo CatBoost integrado para crear un contenedor de CatBoost entrenamiento, como se muestra en el siguiente ejemplo de código. Puede detectar automáticamente el URI de la imagen del algoritmo CatBoost integrado mediante la SageMaker image_uris.retrieve API (o la get_image_uri API si utiliza Amazon SageMaker Python SDK versión 2).

    Tras especificar el URI de la CatBoost imagen, puede utilizar el CatBoost contenedor para crear un estimador mediante la API Estimator e iniciar un SageMaker trabajo de formación. El algoritmo CatBoost integrado se ejecuta en modo script, pero el script de entrenamiento se proporciona automáticamente y no es necesario reemplazarlo. Si tiene una amplia experiencia en el uso del modo guion para crear un trabajo de SageMaker formación, puede incorporar sus propios guiones de CatBoost formación.

    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 obtener más información sobre cómo configurarlo CatBoost como un algoritmo integrado, consulte los siguientes ejemplos de cuadernos.

Interfaz de entrada y salida para el algoritmo CatBoost

La potenciación de gradientes funciona en los datos tabulares, con las filas que representan observaciones, una columna que representa la variable de destino o la etiqueta, y las columnas restantes que representan las características.

La SageMaker implementación del CSV CatBoost es compatible con el entrenamiento y la inferencia:

  • Para el entrenamiento ContentType, las entradas válidas deben ser texto/csv.

  • Para la inferencia ContentType, las entradas válidas deben ser text/csv.

nota

Para la capacitación de CSV, el algoritmo asume la variable de destino en la primera columna y ese CSV no dispone de un registro de encabezado.

Para la inferencia de CSV, el algoritmo asume que la entrada de CSV no dispone de la columna de etiqueta.

Formato de entrada para los datos de entrenamiento, los datos de validación y las características categóricas

Ten cuidado con el formato de los datos de entrenamiento para introducirlos en el modelo. CatBoost Debe proporcionar la ruta a un bucket de Amazon S3 que contenga los datos de entrenamiento y de validación. También puede incluir una lista de características categóricas. Utilice los canales training y validation para proporcionar los datos de entrada. o utilice solo el canal training si lo prefiere.

Uso de ambos canales (training y validation)

Puede proporcionar los datos de entrada mediante dos rutas S3, una para el canal training y otra para el canal validation. Cada ruta S3 puede ser un prefijo S3 que apunte a uno o más archivos CSV, o una ruta S3 completa que apunte a un archivo CSV específico. Las variables de destino deben estar en la primera columna del archivo CSV. Las variables predictoras (características) deben estar en las columnas restantes. Si se proporcionan varios archivos CSV para los validation canales training o, el CatBoost algoritmo concatena los archivos. Los datos de validación se utilizan para calcular una puntuación de validación al final de cada iteración de potenciación. Hay una interrupción anticipada cuando la puntuación de validación deja de mejorar.

Si los predictores incluyen características categóricas, puede proporcionar un archivo JSON con el nombre categorical_index.json en la misma ubicación que los archivos de datos de entrenamiento. Si proporciona un archivo JSON para las características categóricas, el canal training debe apuntar a un prefijo S3, y no a un archivo CSV específico. Este archivo debe contener un diccionario de Python donde la clave sea la cadena "cat_index_list" y el valor sea una lista de enteros únicos. Cada número entero de la lista de valores debe indicar el índice de columnas de las características categóricas correspondientes en el archivo CSV de datos de entrenamiento. Cada valor debe ser un entero positivo (mayor de cero, ya que cero representa el valor objetivo), menor que el Int32.MaxValue (2147483647) y menor que el número total de columnas. Solo debe haber un archivo JSON de índice categórico.

Uso del canal training exclusivamente

También puede proporcionar sus datos de entrada mediante una única ruta S3 para el canal training. Esta ruta S3 debe apuntar a un directorio con un subdirectorio denominado training/ que contenga uno o más archivos CSV. Si lo desea, puede incluir otro subdirectorio en la misma ubicación, denominado validation/, que también tenga uno o más archivos CSV. Si no se proporcionan los datos de validación, se toma una muestra aleatoria del 20 % de los datos de entrenamiento para que ejerzan como datos de validación. Si los predictores contienen características categóricas, puede proporcionar un archivo JSON con el nombre categorical_index.json en la misma ubicación que los subdirectorios de datos.

nota

En el modo de entrada de entrenamiento de CSV, la memoria total disponible para el algoritmo (el recuento de instancias multiplicado por la memoria disponible en InstanceType) debe poder contener el conjunto de datos de entrenamiento.

SageMaker CatBoost usa los catboost.CatBoostRegressor módulos catboost.CatBoostClassifier y para serializar o deserializar el modelo, que se pueden usar para guardar o cargar el modelo.

Para usar un modelo entrenado con SageMaker CatBoost catboost
  • Utilice el siguiente código de 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)

Recomendación de instancia de Amazon EC2 para el algoritmo CatBoost

SageMaker CatBoost actualmente solo entrena con CPU. CatBoost es un algoritmo limitado a la memoria (a diferencia de un algoritmo limitado a la computación). Por lo tanto, una instancia de computación de uso general (por ejemplo, M5) es una opción mejor que una instancia optimizada para la computación (por ejemplo, C5). Además, recomendamos que disponga de suficiente memoria en total en las instancias seleccionadas para almacenar los datos de capacitación.

CatBoost cuadernos de muestra

La siguiente tabla describe una variedad de cuadernos de muestra que abordan diferentes casos de uso del SageMaker CatBoost algoritmo de Amazon.

Título del cuaderno Descripción

Clasificación tabular con Amazon SageMaker LightGBM y algoritmo CatBoost

Este cuaderno muestra el uso del SageMaker CatBoost algoritmo de Amazon para entrenar y alojar un modelo de clasificación tabular.

Regresión tabular con Amazon SageMaker LightGBM y algoritmo CatBoost

En este cuaderno se muestra el uso del SageMaker CatBoost algoritmo de Amazon para entrenar y alojar un modelo de regresión tabular.

Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar el ejemplo, consulte. SageMaker Instancias de Amazon SageMaker Notebook Una vez que haya creado una instancia de bloc de notas y la haya abierto, seleccione la pestaña SageMakerEjemplos para ver una lista de todos los ejemplos. SageMaker Para abrir un bloc de notas, elija su pestaña Usar y elija Crear copia.