XGBoost versão 0.72 - 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á.

XGBoost versão 0.72

Importante

O XGBoost 0.72 foi descontinuado pela Amazon. SageMaker Você ainda pode usar essa versão antiga do XGBoost (como um algoritmo integrado) extraindo o URI da imagem, conforme mostrado no exemplo de código a seguir. Para o XGBoost, o URI da imagem que termina com :1 é para a versão antiga.

SageMaker Python SDK v1
import boto3 from sagemaker.amazon.amazon_estimator import get_image_uri xgb_image_uri = get_image_uri(boto3.Session().region_name, "xgboost", repo_version="1")
SageMaker Python SDK v2
import boto3 from sagemaker import image_uris xgb_image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "1")

Se você quiser usar versões mais recentes, precisará especificar explicitamente as etiquetas de URI da imagem (consulte Versões compatíveis).

Essa versão anterior do algoritmo Amazon SageMaker XGBoost é baseada na versão 0.72. O XGBoost (eXtreme Gradient Boosting) é uma conhecida e eficiente implantação de código aberto do algoritmo baseado em árvores com gradient boosting. O aumento de gradiente é um algoritmo de aprendizagem supervisionada que tenta prever com precisão uma variável de destino. Para isso, combina as estimativas de um conjunto de modelos mais simples e mais fracos. O XGBoost tem excelente desempenho em competições de machine learning porque lida de maneira robusta com uma variedade de tipos de dados, relacionamentos e distribuições e por causa do grande número de hiperparâmetros que podem ser aperfeiçoados e ajustados para um cenário mais apropriado. Essa flexibilidade faz do XGBoost uma escolha consistente para problemas de regressão, classificação (binária e multiclasse) e pontuação.

Os clientes devem considerar o uso da nova versão do XGBoostalgoritmo com a Amazon SageMaker. Eles podem usá-lo como um algoritmo SageMaker integrado ou como uma estrutura para executar scripts em seus ambientes locais, como normalmente fariam, por exemplo, com uma estrutura de aprendizado profundo do Tensorflow. A nova implementação tem um espaço de memória menor, melhor registro em log, melhor validação de hiperparâmetros e um conjunto expandido de métricas. A implementação anterior do XGBoost permanece disponível para os clientes se eles precisarem adiar a migração para a nova versão. Mas essa implementação anterior permanecerá vinculada à versão 0.72 do XGBoost.

Interface de entrada/saída para o XGBoost versão 0.72

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 XGBoost suporta os formatos CSV e libsvm para treinamento e inferência:

  • Para treinamento ContentType, as entradas válidas são text/libsvm (padrão) ou text/csv.

  • Para inferência ContentType, as entradas válidas são text/libsvm ou (o padrão) 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.

Para o treinamento libsvm, o algoritmo assume que o rótulo esteja na primeira coluna. Colunas subsequentes contêm os pares de valores de índice baseados em zero para recursos. Portanto, cada linha tem o formato: <label> <index0>:<value0> <index1>:<value1> ... As solicitações de inferência para libsvm podem ou não ter rótulos no formato libsvm.

Isso difere de outros SageMaker algoritmos, que usam o formato de entrada de treinamento protobuf para manter maior consistência com os formatos de dados padrão do XGBoost.

Para o modo de entrada do treinamento CSV, a memória total disponível para o algoritmo (contagem de instância * a memória disponível no InstanceType) deve ser capaz de conter o conjunto de dados de treinamento. Para o modo de entrada de treinamento libsvm, não é necessário, mas recomendado.

SageMaker O XGBoost usa o módulo pickle do Python para serializar/desserializar o modelo, que pode ser usado para salvar/carregar o modelo.

Para usar um modelo treinado com o SageMaker XGBoost no XGBoost de código aberto
  • Use o código do Python a seguir:

    import pickle as pkl import tarfile import xgboost t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = pkl.load(open(model_file_path, 'rb')) # prediction with test data pred = model.predict(dtest)
Para diferenciar a importância dos pontos de dados rotulados, use Suportes de peso de instância
  • SageMaker O XGBoost permite que os clientes diferenciem a importância dos pontos de dados rotulados atribuindo a cada instância um valor de peso. Para a entrada text/libsvm, os clientes podem atribuir valores de peso a instâncias de dados, anexando-os após os rótulos. Por exemplo, label:weight idx_0:val_0 idx_1:val_1.... Para entrada text/csv, os clientes precisam ativar o sinalizador csv_weights nos parâmetros e anexar valores de peso na coluna após os rótulos. Por exemplo: label,weight,val_0,val_1,...).

Recomendação de instâncias do EC2 para o XGBoost versão 0.72

SageMaker Atualmente, o XGBoost treina apenas usando CPUs. É um algoritmo de uso intensivo de memória (ao contrário dos de uso intensivo de computação). Portanto, uma instância de computação de uso geral (por exemplo, M4) é uma opção melhor do que uma instância otimizada para computação (por exemplo, C4). Além disso, recomendamos que você tenha memória total suficiente em instâncias específicas para armazenar os dados de treinamento. Embora ele suporte o uso de espaço em disco para lidar com dados que não cabem na memória principal (o out-of-core recurso disponível com o modo de entrada libsvm), gravar arquivos de cache no disco diminui o tempo de processamento do algoritmo.

Blocos de anotações de amostra do XGBoost versão 0.72

Para ver um exemplo de caderno que mostra como usar a versão mais recente do SageMaker XGBoost como um algoritmo integrado para treinar e hospedar um modelo de regressão, consulte Regressão com o algoritmo Amazon SageMaker XGBoost. Para usar a versão 0.72 do XGBoost, é necessário alterar a versão no código de exemplo para 0.72. 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, selecione a guia SageMakerExemplos para ver uma lista de todas as SageMaker amostras. Os blocos de anotações de exemplo de modelagem de tópicos que usam os algoritmos XGBoost estão localizados na seção Introdução a algoritmos da Amazon. Para abrir um bloco de anotações, clique em sua guia Uso e selecione Criar cópia.

Hiperparâmetros do XGBoost versão 0.72

A tabela a seguir contém os hiperparâmetros para o algoritmo XGBoost. Esses parâmetros são definidos pelos usuários para facilitar a estimativa dos parâmetros do modelo a partir dos dados. Os hiperparâmetros necessários que devem ser definidos são listados primeiro, em ordem alfabética. Os hiperparâmetros opcionais que podem ser configurados são listados em seguida, também em ordem alfabética. O algoritmo SageMaker XGBoost é uma implementação do pacote XGBoost de código aberto. Atualmente SageMaker suporta a versão 0.72. Para obter mais detalhes sobre a configuração de hiperparâmetros para essa versão do XGBoost, consulte Parâmetros do XGBoost.

Nome do parâmetro Descrição
num_class

O número de classes.

Obrigatório se objective estiver definido como multi:softmax ou multi:softprob.

Valores válidos: inteiro

num_round

O número de rodadas para execução do treinamento.

Obrigatório

Valores válidos: inteiro

alpha

Termo de regularização L1 nos pesos. Aumentar esse valor torna os modelos mais conservadores.

Opcional

Valores válidos: flutuante

Valor padrão: 0

base_score

A pontuação de previsão inicial de todas as instâncias, a polarização global.

Opcional

Valores válidos: flutuante

Valor padrão: 0.5

booster

O objeto de aumento a ser usado. Os valores gbtree e dart usam um modelo baseado em árvore, enquanto gblinear usa uma função linear.

Opcional

Valores válidos: String. gbtree, gblinear ou dart.

Valor padrão: gbtree

colsample_bylevel

Taxa de subsampling de colunas para cada divisão, em cada nível.

Opcional

Valores válidos: flutuante. Intervalo: [0,1].

Valor padrão: 1

colsample_bytree

Taxa de subsampling de colunas ao criar cada árvore.

Opcional

Valores válidos: flutuante. Intervalo: [0,1].

Valor padrão: 1

csv_weights

Quando esse sinalizador está habilitado, o XGBoost diferencia a importância de instâncias para a entrada csv usando a segunda coluna (a coluna após os rótulos) nos dados de treinamento como os pesos da instância.

Opcional

Valores válidos: 0 ou 1

Valor padrão: 0

early_stopping_rounds

O modelo será treinado até que a pontuação de validação pare de melhorar. Os erros de validação precisam diminuir pelo menos a cada early_stopping_rounds para continuar o treinamento. SageMaker a hospedagem usa o melhor modelo para inferência.

Opcional

Valores válidos: inteiro

Valor padrão: -

eta

Diminuição do tamanho das etapas: técnica usada em atualizações para evitar o sobreajuste. Depois de cada etapa de aumento, você pode obter os pesos dos novos recursos diretamente. Na verdade, o parâmetro eta diminui os pesos dos recursos para tornar o processo de aumento mais conservador.

Opcional

Valores válidos: flutuante. Intervalo: [0,1].

Valor padrão: 0.3

eval_metric

Métricas de avaliação para os dados de validação. Uma métrica padrão é atribuída de acordo com o objetivo:

  • rmse: para regressão

  • error: para classificação

  • map: para classificação

Para obter uma lista de entradas válidas, consulte este artigo sobre parâmetros do XGBoost.

Opcional

Valores válidos: string

Valor padrão: de acordo com o objetivo.

gamma

A redução de perda mínima necessária para fazer uma partição adicional em um nó de folha da árvore. Quanto maior for o parâmetro, mais conservador será o algoritmo.

Opcional

Valores válidos: flutuante. Intervalo: [0,∞).

Valor padrão: 0

grow_policy

Controla a forma como os novos nós são adicionados à árvore. No momento, ele apenas tem suporte quando tree_method está definido como hist.

Opcional

Valores válidos: String. depthwise ou lossguide.

Valor padrão: depthwise

lambda

Termo de regularização L2 nos pesos. Aumentar esse valor torna os modelos mais conservadores.

Opcional

Valores válidos: flutuante

Valor padrão: 1

lambda_bias

Termo de regularização L2 na polarização.

Opcional

Valores válidos: flutuante. Intervalo: [0.0, 1.0].

Valor padrão: 0

max_bin

O número máximo de compartilhamentos distintos para os recursos contínuos de bucket. Usado somente quando tree_method está definido como hist.

Opcional

Valores válidos: inteiro

Valor padrão: 256

max_delta_step

O máximo de etapas delta permitido para a estimativa de peso de cada árvore. Quando um inteiro positivo é usado, ajuda a tornar a atualização mais conservadora. A opção preferida é usá-lo em regressão logística. Defina-o como 1 a 10 para ajudar a controlar a atualização.

Opcional

Valores válidos: inteiro. Intervalo: [0,∞).

Valor padrão: 0

max_depth

A profundidade máxima de uma árvore. Aumentar esse valor torna o modelo mais complexo e propenso a sofrer sobreajuste. 0 indica que não há limite. Um limite é necessário quando grow_policy=depth-wise.

Opcional

Valores válidos: inteiro. Intervalo: [0,∞)

Valor padrão: 6

max_leaves

O número máximo de nós a ser adicionado. Relevante apenas quando grow_policy está definido como lossguide.

Opcional

Valores válidos: inteiro

Valor padrão: 0

min_child_weight

A soma mínima de peso de instância (hessiano) necessária em um elemento filho. Se a etapa de partição da árvore resulta em um nó de folha com a soma de peso de instância inferior a min_child_weight, o processo de criação cede mais particionamento. Em modelos de regressão linear, isso basicamente corresponde ao número mínimo de instâncias necessárias em cada nó. Quanto maior for o algoritmo, mais conservador ele será.

Opcional

Valores válidos: flutuante. Intervalo: [0,∞).

Valor padrão: 1

normalize_type

Tipo de algoritmo de normalização.

Opcional

Valores válidos: tree ou forest.

Valor padrão: tree

nthread

Número de threads paralelos usado para executar xgboost.

Opcional

Valores válidos: inteiro

Valor padrão: o número máximo de threads.

objective

Especifica a tarefa de aprendizagem e o objetivo de aprendizagem correspondente. Exemplos: reg:logistic, reg:softmax, multi:squarederror. Para obter uma lista completa de entradas válidas, consulte Parâmetros do XGBoost.

Opcional

Valores válidos: string

Valor padrão: reg:squarederror

one_drop

Quando esse sinalizador está habilitado, pelo menos uma árvore é sempre descartada durante o processo.

Opcional

Valores válidos: 0 ou 1

Valor padrão: 0

process_type

O tipo de processo de aumento a ser executado.

Opcional

Valores válidos: String. default ou update.

Valor padrão: default

rate_drop

A taxa de abandono que especifica a fração de árvores anteriores a serem descartadas durante o abandono.

Opcional

Valores válidos: flutuante. Intervalo: [0.0, 1.0].

Valor padrão: 0.0

refresh_leaf

Este é um parâmetro do plug-in do atualizador "refresh". Quando definido como true (1), as folhas da árvore e as estatísticas de nó da árvore são atualizadas. Quando definido como false (0), somente as estatísticas de nós da árvore são atualizadas.

Opcional

Valores válidos: 0/1

Valor padrão: 1

sample_type

Tipo de algoritmo de amostragem.

Opcional

Valores válidos: uniform ou weighted.

Valor padrão: uniform

scale_pos_weight

Controla o equilíbrio dos pesos positivos e negativos. É útil para classes desbalanceadas. Um valor típico a ser considerado: sum(negative cases) / sum(positive cases).

Opcional

Valores válidos: flutuante

Valor padrão: 1

seed

Origem de número aleatório.

Opcional

Valores válidos: inteiro

Valor padrão: 0

silent

0 significa mensagens de execução de impressão, 1 significa modo silencioso.

Valores válidos: 0 ou 1

Opcional

Valor padrão: 0

sketch_eps

Usado apenas para algoritmo voraz aproximado. Isso se converte em O(1 / número de compartimentos sketch_eps) Em comparação com o número de compartimentos diretamente selecionado, esse parâmetro agrega garantia teórica com precisão de esboço.

Opcional

Valores válidos: flutuante. Intervalo: [0, 1].

Valor padrão: 0.03

skip_drop

Probabilidade de ignorar o procedimento de dropout durante uma iteração de aumento.

Opcional

Valores válidos: flutuante. Intervalo: [0.0, 1.0].

Valor padrão: 0.0

subsample

Taxa de subsampling da instância de treinamento. Se você configurá-la como 0,5, o XGBoost aleatoriamente coletará metade das instâncias de dados para expandir as árvores. Isso evita o sobreajuste.

Opcional

Valores válidos: flutuante. Intervalo: [0,1].

Valor padrão: 1

tree_method

O algoritmo de criação de árvores usado no XGBoost.

Opcional

Valores válidos: Um de auto, exact, approx ou hist.

Valor padrão: auto

tweedie_variance_power

O parâmetro que controla a variação da distribuição Tweedie.

Opcional

Valores válidos: flutuante. Intervalo: (1, 2).

Valor padrão: 1.5

updater

Uma string separada por vírgulas que define a sequência de atualizadores de árvore a ser executada. Isso fornece uma forma modular de criar e modificar as árvores.

Para obter uma lista completa de entradas válidas, consulte este artigo sobre parâmetros do XGBoost.

Opcional

Valores válidos: string separada por vírgulas.

Valor padrão: grow_colmaker, prune

Ajustar um modelo XGBoost versão 0.72

O ajuste automático de modelos, também conhecido como ajuste de hiperparâmetros, localiza a melhor versão de um modelo executando vários trabalhos que testam uma série de hiperparâmetros no seu conjunto de dados de treinamento e validação. Você escolhe três tipos de hiperparâmetros:

  • uma função de objective de aprendizado para otimizar durante o treinamento de modelo

  • uma eval_metric para usar para avaliar a performance do modelo durante a validação

  • um conjunto de hiperparâmetros e um intervalo de valores para cada para usar ao ajustar o modelo automaticamente

Você escolhe a métrica de avaliação do conjunto de métricas de avaliação que o algoritmo calcula. O ajuste automático de modelos pesquisa os hiperparâmetros escolhidos para encontrar a combinação de valores que resultam no modelo que otimiza a métrica de avaliação.

Para mais informações sobre o ajuste de modelos, consulte Ajuste automático do modelo com SageMaker.

Métricas calculadas pelo algoritmo XGBoost versão 0.72

O algoritmo XGBoost com base na versão 0.72 calcula as nove métricas a seguir para uso na validação do modelo. Ao ajustar o modelo, escolha uma destas métricas para avaliar o modelo. Para obter uma lista completa dos valores válidos de eval_metric, consulte Parâmetros de tarefa de aprendizado do XGBoost

Nome da métrica Descrição Direção de otimização
validation:auc

Área sob a curva.

Maximizar

validation:error

Taxa de erro de classificação binária, calculada como #(casos errados)/#(todos os casos).

Minimizar

validation:logloss

Verossimilhança de log negativa.

Minimizar

validation:mae

Erro absoluto médio.

Minimizar

validation:map

Precisão média da média.

Maximizar

validation:merror

Taxa de erro de classificação multiclasse, calculada como #(casos errados)/#(todos os casos).

Minimizar

validation:mlogloss

Verossimilhança de log negativa para classificação multiclasse.

Minimizar

validation:ndcg

Ganho cumulativo descontado normalizado.

Maximizar

validation:rmse

Erro quadrático médio da raiz

Minimizar

Hiperparâmetros ajustáveis do XGBoost versão 0.72

Ajuste o modelo XGBoost com os seguintes hiperparâmetros. Os hiperparâmetros que têm o maior efeito na otimização das métricas de avaliação do XGBoost são: alpha, min_child_weight, subsample, eta e num_round.

Nome do parâmetro Tipo de parâmetro Intervalos recomendados
alpha

ContinuousParameterRanges

MinValue: 0, MaxValue 100

colsample_bylevel

ContinuousParameterRanges

MinValue: 0,1, MaxValue: 1

colsample_bytree

ContinuousParameterRanges

MinValue: 0,5, MaxValue: 1

eta

ContinuousParameterRanges

MinValue: 0,1, MaxValue 0,5

gamma

ContinuousParameterRanges

MinValue: 0, MaxValue 5

lambda

ContinuousParameterRanges

MinValue: 0, MaxValue 100

max_delta_step

IntegerParameterRanges

[0, 10]

max_depth

IntegerParameterRanges

[0, 10]

min_child_weight

ContinuousParameterRanges

MinValue: 0, MaxValue 120

num_round

IntegerParameterRanges

[1, 4000]

subsample

ContinuousParameterRanges

MinValue: 0,5, MaxValue: 1