Compartilhar via


Preparação e processamento de dados do Azure Databricks AutoML

Este artigo descreve como o Azure Databricks AutoML prepara os dados para o treinamento de aprendizado de máquina e descreve as configurações de dados configuráveis. Você pode ajustar essas opções durante a configuração do experimento na interface de usuário do AutoML. Para definir essas configurações usando a API do AutoML), consulte a referência da API Python do AutoML.

Tipos de recursos de dados com suporte

Não há suporte para tipos de recurso não listados abaixo. Por exemplo, não há suporte para imagens.

Há suporte para os seguintes tipos de recursos:

  • Numérico (ByteType, ShortType, IntegerType, LongType, FloatType e DoubleType)
  • Boolean
  • Cadeia de caracteres (texto categórico ou inglês)
  • Carimbos de data/hora (TimestampType, DateType)
  • ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML e superior)
  • DecimalType (Databricks Runtime 11.3 LTS ML e posterior)

Seleção de coluna

Observação

Essa funcionalidade está disponível apenas para problemas de classificação e regressão

No Databricks Runtime 10.3 ML e superior, você pode especificar quais colunas o AutoML deve usar para treinamento. Para excluir uma coluna na interface do usuário, desmarque-a na coluna Incluir. Na API, use o parâmetro exclude_cols. Para obter mais informações, consulte Referência da API Python do Azure Databricks AutoML.

Não é possível soltar a coluna selecionada como o destino de previsão ou como a coluna de tempo para dividir os dados.

Por padrão, todas as colunas já estão incluídas.

Acrescentar valores ausentes

No Databricks Runtime 10.4 LTS ML e superior, você pode especificar como valores nulos são imputados. Na interface do usuário, selecione um método na lista suspensa no Impute com coluna no esquema de tabela. Na API, use o parâmetro imputers. Para obter mais informações, consulte Referência da API Python do Azure Databricks AutoML.

Por padrão, o AutoML seleciona um método de imputação com base no tipo de coluna e no conteúdo.

Observação

Se você especificar um método de imputação não padrão, o AutoML não executará a detecção de tipo semântico.

Dividir os dados em conjuntos de treinamento, validação e teste

O AutoML divide seus dados em três divisões para treinamento, validação e teste. Dependendo do tipo de problema de ML, você tem diferentes opções para dividir os dados.

Dividir dados para regressão e classificação

Use os seguintes métodos para dividir os dados em conjuntos de treinamento, validação e teste para tarefas de regressão e classificação:

(Padrão) Divisão aleatória: Se uma estratégia de divisão de dados não for especificada, o conjunto de dados será dividido aleatoriamente em 60% de divisão de treinamento, 20% de divisão de validação e 20% de divisão de teste. Para classificação, uma divisão aleatória estratificada garante que cada classe seja adequadamente representada nos conjuntos de treinamento, validação e teste.

Divisão cronológica: no Databricks Runtime 10.4 LTS ML e superior, você pode selecionar uma coluna de tempo para criar treinamento cronológico, validar e testar divisões. As divisões cronológicas usam os primeiros pontos de dados para treinamento, os próximos para validação e os últimos pontos para teste. A coluna de tempo pode ser um carimbo de data/hora, um inteiro ou uma coluna de cadeia de caracteres.

Divisão manual: no Databricks Runtime 15.3 ML e superior, você pode usar a API para configurar uma divisão manual. Especifique uma coluna dividida e use os valores train, validate ou test para identificar as linhas que você deseja usar para conjuntos de dados de treinamento, validação e teste. As linhas com os valores da coluna dividida diferentes de train, test ou validate são ignoradas e um alerta correspondente é gerado.

Dividir dados para previsão

Para tarefas de previsão, o AutoML usa validação cruzada de série temporal. Esse método estende cronologicamente o conjunto de dados de treinamento de forma incremental e executa a validação em pontos de tempo subsequentes. A validação cruzada fornece uma avaliação robusta do desempenho de um modelo em diferentes segmentos temporais. Garante que o modelo de previsão seja rigorosamente testado em relação a dados futuros não previstos, mantendo a relevância e a precisão das previsões.

O número de dobras de validação cruzada depende das características da tabela de entrada, como o número de séries temporais, a presença de covariáveis e o comprimento da série temporal.

Amostragem de grandes conjuntos de dados

Observação

A amostragem não é aplicada à previsão de problemas.

Embora o AutoML distribua avaliações de ajuste de hiperparâmetro nos nós de trabalho de um cluster, cada modelo é treinado em apenas um nó de trabalho.

O AutoML estima automaticamente a memória necessária para carregar e treinar o conjunto de dados e faz a amostragem do conjunto de dados, se necessário.

No Databricks Runtime 9.1 LTS ML até o Databricks Runtime 10.4 LTS ML, a fração de amostragem não depende do tipo de nó do cluster ou da quantidade de memória em cada nó.

No Databricks Runtime 11.x ML:

  • A fração de amostragem aumenta para nós de trabalho que tenham mais memória por núcleo. Você pode aumentar o tamanho da amostra escolhendo um tipo de instância otimizada para memória.
  • É possível aumentar o tamanho da amostra escolhendo um valor maior para spark.task.cpus na configuração do Spark para o cluster. A configuração padrão é 1; o valor máximo é o número de CPUs no nó de trabalho. Quando você aumenta esse valor, o tamanho da amostra é maior, mas menos avaliações são executadas em paralelo. Por exemplo, em um computador com quatro núcleos e 64 GB de RAM total, o padrão spark.task.cpus=1 executa quatro tentativas por trabalho, com cada tentativa limitada a 16 GB de RAM. Se você definir spark.task.cpus=4, cada trabalho executará apenas uma tentativa, mas essa tentativa poderá usar 64 GB de RAM.

No Databricks Runtime 12.2 LTS ML e superior, o AutoML pode treinar em conjuntos de dados maiores alocando mais núcleos de CPU por tarefa de treinamento. Você pode aumentar o tamanho da amostra escolhendo um tamanho de instância com mais memória total.

No Databricks Runtime 11.3 LTS ML e superior, se o AutoML tiver amostrado o conjunto de dados, a fração de amostragem será mostrada na guia Visão Geral na UI.

Para problemas de classificação, o AutoML usa o PySpark sampleBy método para amostragem estratificada a fim de preservar a distribuição do rótulo de destino.

Para problemas de regressão, o AutoML usa o sample método PySpark.

Suporte de conjunto de dados desbalanceado para problemas de classificação

No Databricks Runtime 11.3 LTS ML e superior, se o AutoML detectar que um conjunto de dados está desequilibrado, ele tentará reduzir o desequilíbrio do conjunto de dados de treinamento diminuindo a resolução das classes principais e adicionando pesos de classe. O AutoML equilibra apenas o conjunto de dados de treinamento, e não os conjuntos de dados de teste e validação. Isso garante que o desempenho do modelo seja sempre avaliado no conjunto de dados não enriquecido com a distribuição de classe de entrada verdadeira.

Para equilibrar um conjunto de dados de treinamento desequilibrado, o AutoML usa pesos de classe que estão inversamente relacionados ao grau pelo qual uma determinada classe é reduzida. Por exemplo, se um conjunto de dados de treinamento com 100 amostras tem 95 amostras pertencentes à classe A e cinco amostras pertencentes à classe B, o AutoML reduz esse desequilíbrio subamostrando a classe A para 70 amostras, ou seja, subamostrando a classe A por uma proporção de 70/95 ou 0,736, enquanto mantém o número de amostras na classe B em 5. Para garantir que o modelo final seja calibrado corretamente e a distribuição de probabilidade da saída do modelo seja a mesma da entrada, o AutoML escala o peso da classe A pela taxa 1/0,736 ou 1,358, mantendo o peso da classe B como 1. Em seguida, o AutoML usa esses pesos de classe no treinamento de modelo como um parâmetro para garantir que as amostras de cada classe sejam devidamente ponderadas no treinamento do modelo.

Agregação de série temporal

Para prever problemas, quando há vários valores para um carimbo de data/hora em uma série temporal, o AutoML usa a média dos valores.

Para usar a soma, edite o notebook do código-fonte gerado pelas execuções de teste. Na célula Agregar dados por..., altere .agg(y=(target_col, "avg")) para .agg(y=(target_col, "sum")), conforme mostrado:

group_cols = [time_col] + id_cols
df_aggregation = df_loaded \
  .groupby(group_cols) \
  .agg(y=(target_col, "sum")) \
  .reset_index() \
  .rename(columns={ time_col : "ds" })

Detecção de tipo semântico

Observação

  • A detecção de tipo semântico não é aplicada à previsão de problemas.
  • O AutoML não executa a detecção de tipo semântico para colunas que têm métodos imputação personalizados especificados.

Com o Databricks Runtime 9.1 LTS ML e superior, o AutoML tenta detectar se as colunas têm um tipo semântico diferente do tipo de dados Spark ou pandas no esquema da tabela. O AutoML trata essas colunas como o tipo semântico detectado. Essas detecções são o melhor esforço e, às vezes, podem não detectar a existência de tipos semânticos. Você também pode definir manualmente o tipo semântico de uma coluna ou informar AutoML para não aplicar a detecção de tipo semântico a uma coluna usando anotações.

Especificamente, o AutoML faz esses ajustes:

  • As colunas de cadeias de caracteres e inteiros que representam dados de data ou de carimbo de data/hora serão tratadas como um tipo de carimbo de data/hora.
  • Colunas de cadeia de caracteres que representam dados numéricos são tratadas como um tipo numérico.

Com o Databricks Runtime 10.1 ML e superior, o AutoML também faz esses ajustes:

  • Colunas numéricas que contêm IDs categóricas são tratadas como um recurso categórico.
  • Colunas de cadeia de caracteres que contêm texto em inglês são tratadas como um recurso de texto.

Anotações de tipo semântico

Com o Databricks Runtime 10.1 ML e superior, você pode controlar manualmente o tipo semântico atribuído colocando uma anotação de tipo semântico em uma coluna. Para anotar manualmente o tipo semântico de coluna <column-name> como <semantic-type>, use a seguinte sintaxe:

metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)

<semantic-type> pode ser um dos seguintes:

  • categorical: A coluna contém valores categóricos (por exemplo, valores numéricos que devem ser tratados como IDs).
  • numeric: A coluna contém valores numéricos (por exemplo, valores de cadeia de caracteres que podem ser analisados ​​em números).
  • datetime: A coluna contém valores de carimbo de data/hora (cadeia de caracteres, numéricos ou valores de datas que podem ser convertidos em carimbos de hora).
  • text: A coluna de cadeia de caracteres contém texto em inglês.

Para desabilitar a detecção de tipo semântico em uma coluna, use a anotação native especial de palavra-chave.

Integração do Repositório de Recursos

Com o Databricks Runtime 11.3 LTS ML e posterior, você pode usar tabelas de recursos existentes no Repositório de Recursos para expandir o conjunto de dados de entrada original para seus problemas de classificação e regressão.

Com o Databricks Runtime 12.2 LTS ML e posterior, você pode usar tabelas de recursos existentes no Repositório de Recursos para expandir o conjunto de dados de entrada original para todos seus problemas AutoML: classificação, regressão e previsão.

Para criar uma tabela de recursos, consulte O que é um repositório de recursos?.

Para usar tabelas de recursos existentes, você pode selecionar tabelas de recursos com a interface do usuário do AutoML ou definir o parâmetro feature_store_lookups na especificação de execução do AutoML.

feature_store_lookups = [
  {
     "table_name": "example.trip_pickup_features",
     "lookup_key": ["pickup_zip", "rounded_pickup_datetime"],
  },
  {
      "table_name": "example.trip_dropoff_features",
     "lookup_key": ["dropoff_zip", "rounded_dropoff_datetime"],
  }
]

Exemplo de notebook: experimento de AutoML com o Repositório de Recursos

O notebook a seguir mostra como treinar um modelo de ML com tabelas de recursos do AutoML e do Repositório de Recursos.

Notebook de exemplo de experimento de AutoML com o Repositório de Recursos

Obter notebook