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.
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
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 sinalizadorcsv_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
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 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 Opcional Valores válidos: String. Valor padrão: |
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 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 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:
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 Opcional Valores válidos: String. Valor padrão: |
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 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 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 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 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: Opcional Valores válidos: string Valor padrão: |
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. Valor padrão: |
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 Opcional Valores válidos: 0/1 Valor padrão: 1 |
sample_type |
Tipo de algoritmo de amostragem. Opcional Valores válidos: Valor padrão: |
scale_pos_weight |
Controla o equilíbrio dos pesos positivos e negativos. É útil para classes desbalanceadas. Um valor típico a ser considerado: 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 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 Valor padrão: |
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: |
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 |