Preparação de dados para regressão
Este artigo descreve como o site AutoML prepara os dados para o treinamento de regressão e descreve as definições de dados configuráveis. O senhor pode ajustar essas opções durante a configuração do experimento na UI do AutoML.
Para definir essas configurações usando a API do AutoML, consulte a referência da API do AutoML Python.
Tipos de recursos de dados compatíveis
Somente os tipos de recurso listados abaixo são compatíveis. Por exemplo, imagens não são suportadas.
Os seguintes tipos de recursos são compatíveis:
Numérico (
ByteType
,ShortType
,IntegerType
,LongType
,FloatType
eDoubleType
)Booleana
Cadeia de caracteres (texto categórico ou em inglês)
Carimbos de data e hora (
TimestampType
,DateType
)ArrayType[Numérico] (Databricks Runtime 10.4 LTS MLe acima)
DecimalType (Databricks Runtime 11.3 LTS MLe acima)
Impute valores faltantes
Em Databricks Runtime 10.4 LTS ML e acima, o senhor pode especificar como os valores nulos são imputados. Na interface do usuário, selecione um método no menu suspenso da coluna Impute with no esquema da tabela. Na API, use o parâmetro imputers
. Para obter mais informações, consulte AutoML Python API reference.
Em default, AutoML seleciona um método de imputação com base no tipo e no conteúdo da coluna.
Observação
Se o senhor especificar um método de imputação que não seja odefault, o AutoML não realizará a detecção do tipo semântico.
Seleção de coluna
Em Databricks Runtime 10.3 ML e acima, o senhor pode especificar quais colunas 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 AutoML Python API reference.
O senhor não pode soltar a coluna selecionada como Alvo de previsão ou como coluna de tempo para dividir os dados.
Em default, todas as colunas são incluídas.
Dividir os dados em conjuntos de ensino, 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, o senhor 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 site dataset será dividido aleatoriamente em 60% de divisão de ensino, 20% de divisão de validaçã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: Em Databricks Runtime 10.4 LTS ML e acima, o senhor pode selecionar uma coluna de tempo para criar divisões cronológicas de ensino, validação e teste. As divisões cronológicas usam os pontos de dados mais antigos para treinamento, os próximos mais antigos para validação e os pontos mais recentes para teste. A coluna de tempo pode ser um carimbo de data/hora, um número inteiro ou uma coluna de cadeias de caracteres.
Divisão manual: Em Databricks Runtime 15.3 ML e acima, o senhor pode usar o API para configurar uma divisão manual. Especifique uma coluna dividida e use os valores train
, validate
, ou test
para identificar as linhas que o senhor deseja usar para treinamento, validação e teste do conjunto de dados. Todas as linhas com valores de coluna dividida 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 calcula automaticamente a memória necessária para carregar e treinar seu conjunto de dados e amostra o conjunto de dados, se necessário.
Versão do Databricks Runtime |
Comportamento de amostragem |
---|---|
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 worker nós com mais memória por núcleo. Para aumentar o tamanho da amostra:
Exemplo: Em uma máquina com 4 núcleos e 64 GB de RAM:
|
11.3 LTS ML e acima |
Se o site AutoML fizer uma amostragem do site dataset, a fração de amostragem será mostrada em Overview tab na UI. |
12.2 LTS ML e acima |
AutoML pode lidar com conjuntos de dados maiores alocando mais núcleos de CPU por treinamento tarefa. 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 a fim de preservar a distribuição do rótulo de destino.
Para problemas de regressão, o AutoML usa o método PySpark sample
.
Detecção de tipo semântico
Observação
O AutoML não executa a detecção de tipo semântico para colunas que têm métodos de imputação personalizados especificados.
Com Databricks Runtime 9.1 LTS ML e acima, 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 ignorar a existência de tipos semânticos. O senhor também pode definir manualmente o tipo semântico de uma coluna ou informar ao site AutoML para não aplicar a detecção de tipo semântico a uma coluna usando a anotação.
Especificamente, o AutoML faz estes ajustes:
As colunas de strings e inteiros que representam dados de data ou carimbo de data/hora são tratadas como um tipo de carimbo de data/hora.
Colunas de string que representam dados numéricos são tratadas como um tipo numérico.
Com Databricks Runtime 10,1 MLe acima, o AutoML também faz estes ajustes:
Colunas numéricas que contêm IDs categóricas são tratadas como uma feição categórica.
Colunas de string que contêm texto em inglês são tratadas como uma feição de texto.
Anotações de tipo semântico
Com o Databricks Runtime 10.1 MLe acima, 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 da 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 string que podem ser analisados em números).datetime
A coluna contém valores de marca de tempo (string, numéricos ou valores de data que podem ser convertidos em marcas de tempo).text
: a coluna string contém texto em inglês.
Para desabilitar a detecção de tipo semântico em uma coluna, use a anotação de palavra-chave especial native
.