Preparação dos dados para a classificação
Saiba como usar o AutoML para preparar seus dados para classificação.
Este artigo descreve como o AutoML prepara dados para treinamento de classificação e descreve configurações de dados configuráveis. Você pode ajustar essas opções durante a configuração do experimento na interface do usuário do AutoML.
Para definir essas configurações usando a API AutoML), consulte a referência da API AutoML Python.
Tipos de recursos de dados suportados
Apenas os tipos de recursos listados abaixo são suportados. Por exemplo, imagens não são suportadas.
Os seguintes tipos de recursos são suportados:
- Numérico (
ByteType
,ShortType
,IntegerType
,LongType
,FloatType
, eDoubleType
) - Boolean
- String (texto categórico ou em 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 superior)
Imputar valores em falta
No Databricks Runtime 10.4 LTS ML e superior, você pode especificar como os valores nulos são imputados. Na interface do usuário, selecione um método na lista suspensa na coluna Impute com no esquema da tabela. Na API, use o imputers
parâmetro. Para obter mais informações, consulte Referência da API do AutoML Python.
Por padrão, o AutoML seleciona um método de imputação com base no tipo de coluna e no conteúdo.
Nota
Se você especificar um método de imputação não padrão, o AutoML não executará a deteção de tipo semântico.
Suporte de conjunto de dados desequilibrado para problemas de classificação
No Databricks Runtime 11.3 LTS ML e superior, se o AutoML detetar que um conjunto de dados está desequilibrado, ele tentará reduzir o desequilíbrio do conjunto de dados de treinamento reduzindo a resolução da(s) classe(s) principal(is) e adicionando pesos de classe. O AutoML apenas equilibra o conjunto de dados de treinamento e não equilibra 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 verdadeira distribuição de classe de entrada.
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 tiver 95 amostras pertencentes à classe A e cinco amostras pertencentes à classe B, o AutoML reduz esse desequilíbrio reduzindo a classe A para 70 amostras, ou seja, reduzindo a classe A em uma proporção de 70/95 ou 0,736, mantendo o número de amostras na classe B em 5. Para garantir que o modelo final está corretamente calibrado e que a distribuição de probabilidade da saída do modelo é a mesma da entrada, o AutoML aumenta o peso da classe para a classe A pela razão 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 do modelo como parâmetro para garantir que as amostras de cada classe sejam ponderadas adequadamente ao treinar o modelo.
Seleção de colunas
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 exclude_cols
parâmetro. Para obter mais informações, consulte Referência da API do AutoML Python.
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 são incluídas.
Divida 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.
Use os seguintes métodos para dividir os dados em conjuntos de treinamento, validação e teste:
(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 trem, 20% de validação de divisão e 20% de divisão de teste. Para a 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 divisões cronológicas, treinar, validar e testar. As divisões cronológicas usam os primeiros pontos de dados para treinamento, os próximos primeiros para validação e os pontos mais recentes para testes. A coluna de data e hora pode ser um carimbo de data/hora, inteiro ou 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 linhas que você deseja usar para treinamento, validação e teste de conjuntos de dados. Todas as linhas com valores de coluna divididos diferentes de train
, test
ou validate
são ignoradas e um alerta correspondente é gerado.
Amostragem de grandes conjuntos de dados
Embora o AutoML distribua testes de ajuste de hiperparâmetros entre os nós de trabalho de um cluster, cada modelo é treinado em um único nó de trabalho.
O AutoML estima automaticamente a memória necessária para carregar e treinar seu conjunto de dados e coleta amostras do conjunto de dados, se necessário.
Versão do Databricks Runtime | Comportamento amostral |
---|---|
9,1 LTS ML - 10,4 LTS ML | A fração de amostragem é constante e não depende do tipo de nó do cluster ou da memória por nó. |
11,x ML | A fração de amostragem aumenta para nós de trabalho com mais memória por núcleo. Para aumentar o tamanho da amostra: - Use um tipo de instância otimizado para memória. - Ajuste spark.task.cpus na configuração Spark. O padrão é 1 e o valor máximo é o número de CPUs no nó de trabalho. 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 ensaios são executados em paralelo.Exemplo: Em uma máquina com 4 núcleos e 64GB de RAM: - Com spark.task.cpus=1 , quatro testes são executados por trabalhador, cada um usando 16GB de RAM.- Com spark.task.cpus=4 o , uma versão experimental é executada por trabalhador, utilizando todos os 64GB de RAM. |
11.3 LTS ML e superior | Se o AutoML coletar amostras do conjunto de dados, a fração de amostragem será mostrada na guia Visão geral na interface do usuário. |
12.2 LTS ML e superior | O AutoML pode lidar com conjuntos de dados maiores alocando mais núcleos de CPU por tarefa de treinamento. Aumente o tamanho da amostra selecionando uma instância com mais memória total. |
Para problemas de classificação, o AutoML usa o método PySpark sampleBy
para amostragem estratificada para preservar a distribuição do rótulo de destino.
Para problemas de regressão, o AutoML usa o método PySpark sample
.
Deteção de tipo semântico
Nota
- O AutoML não executa a deteção de tipo semântico para colunas que têm métodos de imputação personalizados especificados.
Com o Databricks Runtime 9.1 LTS ML e superior, o AutoML tenta detetar 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 detetado. Essas deteções são o melhor esforço e, às vezes, podem perder a existência de tipos semânticos. Você também pode definir manualmente o tipo semântico de uma coluna ou dizer ao AutoML para não aplicar a deteção de tipo semântico a uma coluna usando anotações.
Especificamente, o AutoML faz estes ajustes:
- As colunas de cadeia de caracteres e inteiras que representam dados de carimbo de data/hora ou carimbo de data/hora são tratadas como um tipo de carimbo de data/hora.
- As 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 estes ajustes:
- As colunas numéricas que contêm IDs categóricas são tratadas como um recurso categórico.
- As 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 (valores de cadeia de caracteres, numéricos ou de data que podem ser convertidos em carimbos de data/hora).text
: A coluna string contém texto em inglês.
Para desativar a deteção de tipo semântico em uma coluna, use a anotação native
de palavra-chave especial .