Nesta página, descrevemos como os três conjuntos (treinamento, validação e teste) são usados quando você treina um modelo do AutoML e as maneiras de controlar como os dados sãovdivididos nos conjuntos dos modelos do AutoML.
Como o AutoML usa divisões de dados
O AutoML usa divisões de dados de maneira diferente dependendo do tipo dos dados de treinamento.
Image
Para conjuntos de dados de imagem, o AutoML usa o conjunto de treinamento para treinar o modelo. O conjunto de validação é usado para validar os resultados que o modelo retorna durante o treinamento. Quando o treinamento é concluído, o AutoML usa o conjunto de teste para fornecer as métricas de avaliação finais.
Tabular
Para modelos tabulares, o processo de treinamento usa as seguintes etapas:
Modelos de avaliação
O conjunto de treinamento é usado para treinar modelos com diferentes combinações de pré-processamento, arquitetura e opções de hiperparâmetros. Esses modelos são avaliados no conjunto de validação para avaliar a qualidade, o que orienta a exploração de combinações de outras opções. Os melhores parâmetros e arquiteturas determinados na fase de ajuste paralelo são usados para treinar dois modelos do conjunto, conforme descrito abaixo.
Avaliação do modelo
O Vertex AI treina um modelo de avaliação usando os conjuntos de treinamento e validação como dados de treinamento. O Vertex AI gera as métricas de avaliação do modelo finais usando o conjunto de teste. Essa é a primeira vez em que o conjunto de teste é usado durante o processo. Essa abordagem garante que as métricas de avaliação finais sejam um reflexo imparcial do desempenho do modelo treinado final na produção.
Modelo de exibição
Um modelo é treinado com os conjuntos de treinamento, validação e teste para maximizar a quantidade de dados de treinamento. Esse modelo é aquele que você usa para solicitar previsões.
Texto
Para conjuntos de dados de texto, os conjuntos de treinamento e validação são usados para testar diferentes combinações de pré-processamento, arquitetura e hiperparâmetros. Esses experimentos resultam em modelos treinados que são avaliados com o conjunto de validação para melhorar a qualidade e orientar a exploração de combinações de outras opções.
Quando os experimentos complementares não resultam mais em melhorias na qualidade, essa versão do modelo é considerada o modelo treinado final de melhor desempenho. Em seguida, a Vertex AI treina mais dois modelos usando os parâmetros e a arquitetura determinados na fase de ajustes paralelos:
Um modelo treinado com os conjuntos de treinamento e validação.
A Vertex AI gera as métricas de avaliação do modelo neste modelo usando o conjunto de teste. Essa é a primeira vez em que o conjunto de teste é usado durante o processo. Essa abordagem garante que as métricas de avaliação finais sejam um reflexo imparcial do desempenho do modelo treinado final na produção.
Um modelo treinado com os conjuntos de treinamento, validação e teste.
Esse modelo é aquele que você usa para solicitar previsões.
Vídeo
Para conjuntos de dados de vídeo, o AutoML usa o conjunto de treinamento para treinar o modelo e, em seguida, usa o conjunto de teste para fornecer as métricas de avaliação finais. O conjunto de validação não é usado para conjuntos de dados de vídeo.
Opções de divisão de dados
Deixe a Vertex AI dividir seus dados automaticamente; em muitos casos, essa é a melhor abordagem. No entanto, se você quiser controlar como seus dados são divididos em conjuntos, existem algumas opções para fazer isso.
Você tem as seguintes opções para dividir seus dados:
- Usando a divisão padrão
- Usando o rótulo ml_use
- Usando filtro de dados (não compatível com dados tabulares)
- Alterando das porcentagens
- Usando uma coluna de tempo (somente dados tabulares).
Você escolhe apenas uma destas opções: você escolhe quando treina o modelo.
Algumas dessas opções exigem alterações nos dados de treinamento (por exemplo, o
rótulo ml_use
ou a coluna Data/hora). A inclusão de dados ou rótulos para
opções de divisão de dados não exige que você use essas opções. É possível
escolher outra opção ao treinar o modelo.
Como usar a divisão padrão
A Vertex AI executa automaticamente a divisão de dados para você. Os dados são divididos aleatoriamente nos três conjuntos por porcentagem, dependendo do tipo de dados. Essa é a maneira mais fácil de dividir os dados e funciona bem na maioria dos casos.
Set | Texto | Image | Vídeo | Tabular |
---|---|---|---|---|
Treinamento | 80 | 80 | 80 | 80 |
Validação | 10 | 10 | N/A | 10 |
Teste | 10 | 10 | 20 | 10 |
Para usar a divisão de dados padrão, aceite o padrão no Console do Cloud ou deixe o campo split vazio para a API.
Como usar o rótulo ml_use
Para usar o rótulo ml_use
para controlar sua divisão de dados, você precisa definir o rótulo
ml_use
nos seus dados. Consulte
Como definir um valor para o rótulo ml_use
.
Para os tipos de dados do AutoML diferentes de tabular, quando você treinar o
modelo, especifique Manual (Avançado) para a divisão de dados no
Console do Cloud. Se você estiver treinando usando a API Vertex AI,
use o objeto FilterSplit,
especificando aiplatform.googleapis.com/ml_use=training
para o filtro de treinamento,
aiplatform.googleapis.com/ml_use=validation
para o filtro de validação e
aiplatform.googleapis.com/ml_use=test
para o filtro de teste.
Todos os itens de dados com um valor ml_use
são atribuídos ao conjunto especificado. Os itens
de dados que não tiverem ml_use
definido serão excluídos do processo de treinamento.
Para o tipo de dados tabular, use a coluna de divisão de dados.
Como usar o filtro de dados
É possível usar outros rótulos (além de ml-use) e outros campos para dividir seus dados
usando o objeto FilterSplit na
API Vertex AI. Por exemplo, defina trainingFilter
como labels.flower=rose
, validationFilter
como labels.flower=daisy
e
testFilter
como labels.flower=dahlia
. Essa configuração faria com que todos os dados
rotulados como rose
fossem adicionados ao conjunto de treinamento, todos os dados rotulados como daisy
,
adicionados ao conjunto de validação, e todos os dados rotulados como dahlia
para
o conjunto de testes.
Se você filtrar por vários campos, um item de dados poderá corresponder a mais de um filtro. Nesse caso, o conjunto de treinamento tem precedência, seguido pelo conjunto de validação, seguido pelo conjunto de testes. Em outras palavras, um item será colocado no conjunto de teste somente se corresponder ao filtro para o conjunto de teste, mas não para filtros de treinamento ou validação. Se um item não corresponder aos filtros de qualquer um dos conjuntos, ele será excluído do treinamento.
Não use categorias na divisão de dados relacionada ao que o modelo será prever; cada um dos conjuntos deve refletir o intervalo de dados que o modelo usará para fazer previsões. Por exemplo, você não deve usar os filtros descritos anteriormente para um modelo que precisa classificar imagens por tipo de flor.
Se você não quiser que um filtro corresponda a algum item, defina-o como "-
"
(o sinal de subtração).
O filtro de dados não é compatível com dados tabulares.
Alterar as porcentagens
Se você não escolher outra maneira de controlar a divisão de dados, eles serão divididos aleatoriamente nos conjuntos de acordo com as percentagens padrão para o tipo de dados. É possível alterar as porcentagens para quaisquer valores que totalizam até 100 (para a API Vertex AI, use frações que totalizam 1,0).
Para alterar os percentuais (frações), use o objeto FractionSplit para definir as frações. Para tipos de dados de imagem, texto e vídeo, use também o Console do Cloud para atualizar as porcentagens de divisão ao treinar o modelo.
Como usar uma coluna de tempo
Para dados de treinamento tabulares, se os dados dependem de tempo, é possível designar uma coluna como uma coluna Data/hora. A Vertex AI usa a coluna Data/hora para dividir seus dados, com as primeiras linhas usadas para treinamento, as linhas seguintes para validação e as últimas linhas para teste. Se você estiver usando a API, também será possível especificar as porcentagens de dados a serem usados para os conjuntos. Para mais informações, consulte a coluna Tempo.
Como definir um valor para o rótulo ml_use
Para usar o rótulo ml_use
para controlar sua divisão de dados, primeiro defina um valor para
o rótulo ml_use
para seus itens de dados.
A forma como você define o rótulo ml_use
para os dados depende do seu tipo de dados:
Como definir ml_use para dados de visão, vídeo e texto
Defina o rótulo ml_use
para dados de visão, vídeo e texto no momento da importação de dados
(por item de dados ou para todo o arquivo de importação) ou após a importação de
dados usando o Console do Google Cloud.
Como definir ml_use em itens de dados individuais no momento da importação
É possível definir o rótulo ml_use
em cada item de dados incluindo um valor para o campo
aiplatform.googleapis.com/ml_use
nos seus dados de linhas JSON ou definindo o valor da primeira coluna do arquivo CSV. Para mais detalhes, consulte as informações sobre
como preparar dados para seu tipo de dados.
Se algum dos seus itens de dados for repetido nos dados (se o mesmo vídeo, imagem
ou fragmento de texto aparecer várias vezes no arquivo de importação),
a Vertex AI usará o valor ml_use
para os primeiros itens de dados
inseridos por ela
e ignorará todos os valores ml_use
subsequentes. O primeiro item encontrado
não é necessariamente o item mais próximo do início do arquivo de
upload.
Como definir ml_use para arquivos de upload inteiros
Caso seus dados possam ser classificados em diferentes arquivos de upload por valor ml_use
,
defina o valor ml_use
para todo o arquivo de upload usando o menu suspenso por arquivo
ao fazer o upload dos arquivos. o Console do Cloud ou
usando o campo de mapa dataItemLabels
no método datasets.import.
Se você definir ml_use
para um arquivo de upload e ele também contiver valores ml_use
,
os valores ml_use
no arquivo terão precedência sobre o valor do
arquivo.
Como definir ml_use após a importação
Depois de fazer upload dos dados, é possível definir ou atualizar o valor de ml_use
para itens de dados específicos no Console do Cloud. Basta selecionar um ou mais itens
na visualização de lista e usar o campo Atribuir uso de ML.
Se você fizer upload de um arquivo de dados novamente, mesmo que os valores ml_use tenham sido alterados, ele não
atualizará o valor ml_use
. Não é possível atualizar valores ml_use
após a importação
usando a API Vertex AI.
Como definir ml_use para dados tabulares
Para especificar ml_use
por linha de dados de treinamento para dados tabulares, você fornece uma
coluna de divisão de dados nos dados de treinamento e especifica-a ao treinar o
modelo. Para mais informações, consulte a coluna
Divisão de dados.