AutoAI detalhes de implementação do aprendizado incremental

Revise os detalhes técnicos para treinamento de um experimento AutoAI em lotes de dados para um conjunto de dados grande.

Aprendizagem incremental para grandes conjuntos de dados tabulares

Se você estiver treinando um experimento usando uma origem de dados grande e estruturados, os dados serão subamostrados, portanto, o treinamento inicial ocorrerá com uma parte dos dados O limite de dados de treinamento depende do tamanho do ambiente selecionado para o experimento. Para obter detalhes, consulte Visão geral do AutoAI.

Os algoritmos de aprendizado incremental podem ser usados para continuar o treinamento usando os dados restantes em uma origem subamostrada, dividindo os dados restantes em lotes, se necessário,. Cada lote de dados de treinamento é pontuado independentemente usando a métrica otimizada, para que seja possível revisar o desempenho de cada lote ao explorar os resultados.

Visão geral do processo de aprendizagem

O processo de aprendizado incremental e conjunto de modelos possibilita a formação de um modelo com até 100 GB de dados estruturados. Dependendo se o experimento é uma classificação ou modelo de regressão, o AutoAI aplica o Snap Machine Learning BatchedTreeEnsembleClassifier ou BatchedTreeEnsembleRegressor em combinação com algoritmos de aprendizado de máquina padrão para suportar o treinamento incremental de pipelines de modelo.

Configurar seu experimento para suportar o aprendizado incremental inclui duas fases no processo de treinamento. O primeiro aplica um algoritmo de combinação de árvore em lote para preparar os pipelines.. O estágio final treina os pipelines com os lotes de dados.. Os pipelines são pontuados e classificados com base no desempenho dos dados de validação para o experimento, dada a métrica otimizada.

Algoritmos para modelos de classificação que suportam o aprendizado incremental

  • ExtraTreesClassifier
  • XGBClassificador
  • LGBMClassificador
  • RandomForestClassifier
  • SnapRandomForestClassifier
  • SnapBoostingMachineClassifier

Algoritmos para modelos de regressão que suportam o aprendizado incremental

  • ExtraTreesRegressor
  • LGBMRegressor
  • RandomForestRegressor
  • SnapBoostingMachineRegressor
  • SnapRandomForestRegressor
  • XGBRegressor

Para descrições dos algoritmos, veja detalhes de implementação AutoAI.

Criando o conjunto bateada

Ao configurar seu experimento, você pode optar por treinar com o aprendizado incremental se o seu conjunto de dados for grande. A lista de algoritmos inclui o estimador de combinação apropriado do tipo de modelo.

Esta ilustração mapeia o processo de aprendizagem incremental. Em um experimento padrão, cada algoritmo treina quatro oleodutos. Quando o aprendizado incremental é ativado, o treinamento o modelo cria um quinto pipeline para o conjunto batetado para cada algoritmo que suporta o aprendizado incremental. O pipeline de conjunto bateada tem capacidades partial_fit , o que significa que ele pode ser continuamente treinado em lotes de dados.

AutoAI processo de aprendizagem incremental

A sequência de aprendizado incremental

Esta figura mostra o fluxo de dados no experimento AutoAI de ingestão para treinamento em lotes, conforme a seguir:

  1. Quando um grande conjunto de dados é usado para um experimento, o AutoAI automaticamente amostras os dados. O padrão é amostragem aleatória, mas é possível configurar a amostragem para usar os primeiros valores (leitura dos dados do primeiro valor para o ponto de corte), ou amostragem estratificada em vez disso. Veja Usando o aprendizado incremental para treinar com um grande conjunto de dados para detalhes de configuração.
  2. Quando o treinamento do experimento começa, AutoAI usa os dados amostrados para treinar os pipelines candidatos a modelo e cria o pipeline BatchedTreeEnsemble para cada algoritmo de suporte.
  3. A etapa de treinamento final treina os pipelines que usam os lotes de dados..

Fluxo de processo para treinamento de lotes de dados utilizando o aprendizado incremental

Para obter mais detalhes técnicos sobre a aprendizagem incremental, consulte a postagem do blog ' Dados tabulares grandes e " AutoAI

Salvando o experimento como um bloco de notas

É possível salvar qualquer pipeline como um bloco de notas gerado automaticamente para que seja possível revisar o código para o treinamento do experimento Em seguida, é possível executar o bloco de notas como está para recriar o experimento. A etapa de treinamento em lote usa ExperimentIterableDataset, que é um carregador de dados compatível com a tocha. É possível customizar o carregador de dados para o treinamento em lote incluir:

- custom data loader (must return batches of data in form of Pandas DataFrames)
- custom scorer function (metrics)
- learning stop constraints

Melhores práticas e resolução de problemas

Reveja esses itens para melhores práticas e dicas de resolução de problemas para treinamento de um experimento com aprendizado incremental.

Revisando pontuações de pipeline

Quando você estiver revisando as pontuações de pipeline na tabela de classificação, poderá achar que os pipelines com mais transformações aplicadas não têm pontuações melhores do que um pipeline sem as transformações. Esse cenário pode acontecer porque a fase de Engenharia de Recursos para treinar o experimento localiza a melhor transformação em uma amostra dos dados de treinamento, por motivos de desempenho. Por isso, pode acontecer que um recurso recém-gerado não melhore significativamente a pontuação do pipeline que é treinado no conjunto de dados completo. Esse resultado não é defeituoso ou inesperado

Se você fizer upload de um arquivo de dados de validação para o bloco de notas de aprendizado incremental, o cálculo para o número de combinações que são necessárias para processar os dados de validação poderá estar incorreto, pois ele é calculado com base no tamanho do arquivo em vez do número de linhas.. Para ter certeza de que o número de combinações está correto para seus dados de validação, atualize manualmente o código que estabelece o número de combinações, que usam este comando:

batches_count = total_number_of_rows//number_of_batch_rows
pipeline_model.steps[-1][1].impl.max_sub_ensembles = batches_count

Em seguida, é possível executar o notebook para concluir o treinamento do experimento.

Trabalhando com aprendizado incremental em um bloco de notas gerado automaticamente

Se você salvar um pipeline como um bloco de notas, será possível revisar o código usado para treinar cada pipeline. Também é possível fazer modificações para customizar o treinamento, como corrigir manualmente para dados desbalanceados e valores discrepantes.

Solução alternativa para dados e valores discrepantes desequilibrados

Se os dados passados para partial_fit são altamente imbalanceados (por exemplo,> 1:10), considere aplicar o parâmetro sample_weight para corrigir para o desequilíbrio:

from sklearn.utils.class_weight import compute_sample_weight

pipeline_model.partial_fit(X_train, y_train, freeze_trained_prefix=True, sample_weight=compute_sample_weight('balanced', y_train))

Se seus dados contém outliers e a curva de aprendizado mostra gotas suspeitas, siga estes passos para compensar.

  1. Filtre os outliers para fora antes de ligar para partial_fit.

    batch_df = batch_df[batch_df[experiment_metadata['target_column']] < threshold]
    
  2. Aumente o parâmetro ' outer_lr_scaling no BatchedTreeEnsemble. Essa técnica reduz a taxa de aprendizado aplicada em lotes e desacelera o aprendizado, tornando-o mais robusto para valores discrepantes. Note que isso também poderia degradar o desempenho geral.

    pipeline_model.steps[-1][1].impl.outer_lr_scaling=0.65
    
  3. Aumente o tamanho do lote, se possível (o limite máximo é 100.000). Essa mudança torna os algoritmos de aprendizado mais robustos para valores discrepantes.

Saiba Mais

Para obter mais informações sobre o treinamento de experimentos do AutoAI com dados grandes, leia o artigo do blog Grandes dados tabulares & AutoAI