Impedir o sobreajuste e os dados desequilibrados com o ML Automatizado

O sobreajuste e os dados desequilibrados são dificuldades comuns quando cria modelos de machine learning. Por predefinição, o ML Automatizado do Azure Machine Learning fornece gráficos e métricas para o ajudar a identificar estes riscos e implementa as melhores práticas para ajudar a mitigá-los.

Identificar sobreajuste

O sobreajuste na aprendizagem automática ocorre quando um modelo se ajusta demasiado bem aos dados de preparação e, como resultado, não consegue prever com precisão dados de teste não vistos. Por outras palavras, o modelo memorizou padrões e dados irrelevantes específicos nos dados de preparação, mas não é suficientemente flexível para fazer predições sobre dados reais.

Considere os seguintes modelos preparados e as respetivas precisões de preparação e teste correspondentes.

Modelação Precisão da preparação Precisão do teste
A 99,9% 95%
B 87% 87%
C 99,9% 45%

Considere o modelo A, existe um equívoco comum de que, se a precisão do teste em dados não vistos for inferior à precisão da preparação, o modelo será sobreajustado. No entanto, a precisão do teste deve ser sempre inferior à precisão da preparação e a distinção de sobreajuste vs. adequadamente adequada resume-se ao quão menos preciso.

Comparar os modelos A e B, o modelo A é um modelo melhor porque tem uma maior precisão de teste e, embora a precisão do teste seja ligeiramente mais baixa em 95%, não é uma diferença significativa que sugira que o sobreajuste está presente. Não escolheria o modelo B porque as precisões de preparação e teste estão mais próximas.

O Modelo C representa um caso claro de sobreajuste; a precisão da preparação é elevada, mas a precisão do teste não é tão elevada. Esta distinção é subjetiva, mas vem do conhecimento do seu problema e dos seus dados e quais as magnitudes de erro que são aceitáveis.

Impedir o sobreajuste

Nos casos mais flagrantes, um modelo sobreajustado pressupõe que as combinações de valores de funcionalidades vistas durante a preparação resultam sempre na mesma saída para o destino.

A melhor forma de evitar o sobreajuste é seguir as melhores práticas de ML, incluindo:

  • Utilizar mais dados de preparação e eliminar o preconceito estatístico
  • Impedir fugas de destino
  • Utilizar menos funcionalidades
  • Regularização e otimização de hiperparâmetros
  • Limitações de complexidade do modelo
  • Validação cruzada

No contexto do ML Automatizado, as três primeiras formas listam as melhores práticas que implementar. Os últimos três itens a negrito são as melhores práticas que o ML Automatizado implementa por predefinição para proteger contra sobreajuste. Em definições que não o ML Automatizado, vale a pena seguir as seis melhores práticas para evitar o sobreajuste de modelos.

Melhores práticas implementadas

Utilizar mais dados

A utilização de mais dados é a forma mais simples e melhor possível de impedir o sobreajuste e, como bónus adicional, normalmente aumenta a precisão. Quando utiliza mais dados, torna-se mais difícil para o modelo memorizar padrões exatos e é forçado a alcançar soluções mais flexíveis para acomodar mais condições. Também é importante reconhecer preconceitos estatísticos para garantir que os seus dados de preparação não incluem padrões isolados que não existem em dados de predição em direto. Este cenário pode ser difícil de resolver, porque pode haver sobreajuste presente em comparação com os dados de teste em direto.

Impedir fugas de destino

A fuga de destino é um problema semelhante, em que poderá não ver sobreajuste entre conjuntos de preparação/teste, mas aparece no momento da predição. A fuga de destino ocorre quando o modelo "faz batota" durante a preparação ao ter acesso aos dados que normalmente não deveriam ter no momento da predição. Por exemplo, para prever na segunda-feira qual será o preço de uma mercadoria na sexta-feira, se as suas funcionalidades incluíssem acidentalmente dados de quintas-feiras, seriam dados que o modelo não teria no momento da predição, uma vez que não consegue ver o futuro. A fuga de destino é um erro fácil de perder, mas é muitas vezes caracterizada por uma precisão anormalmente elevada para o seu problema. Se estiver a tentar prever o preço das ações e tiver preparado um modelo com uma precisão de 95%, é provável que exista uma fuga de destino algures nas suas funcionalidades.

Utilizar menos funcionalidades

A remoção de funcionalidades também pode ajudar no sobreajuste ao impedir que o modelo tenha demasiados campos para utilizar para memorizar padrões específicos, o que faz com que seja mais flexível. Pode ser difícil medir quantitativamente, mas se conseguir remover funcionalidades e manter a mesma precisão, provavelmente tornou o modelo mais flexível e reduziu o risco de sobreajuste.

Melhores práticas implementadas pelo ML Automatizado

Regularização e otimização de hiperparâmetros

A regularização é o processo de minimizar uma função de custo para penalizar modelos complexos e sobreajustados. Existem diferentes tipos de funções de regularização, mas, em geral, todos penalizam o tamanho do coeficiente do modelo, a variância e a complexidade. O ML automatizado utiliza L1 (Lasso), L2 (Ridge) e ElasticNet (L1 e L2 em simultâneo) em combinações diferentes com diferentes definições de hiperparâmetros de modelo que controlam o sobreajuste. O ML automatizado varia a quantidade de um modelo regulado e escolhe o melhor resultado.

Limitações de complexidade do modelo

O ML automatizado também implementa limitações explícitas de complexidade do modelo para impedir o sobreajuste. Na maioria dos casos, esta implementação destina-se especificamente a algoritmos de árvore de decisões ou floresta, em que a profundidade máxima da árvore individual é limitada e o número total de árvores utilizadas em técnicas de floresta ou conjunto são limitados.

Validação cruzada

A validação cruzada (CV) é o processo de obter muitos subconjuntos dos seus dados de preparação completos e preparar um modelo em cada subconjunto. A ideia é que um modelo possa ter "sorte" e ter uma grande precisão com um subconjunto, mas ao utilizar muitos subconjuntos, o modelo não alcançará sempre esta precisão elevada. Ao efetuar o CV, fornece um conjunto de dados de retenção de validação, especifica as pastas de CV (número de subconjunto) e o ML Automatizado prepara o modelo e otimiza os hiperparâmetros para minimizar o erro no conjunto de validação. Uma dobra de CV pode ser sobreajustada, mas ao utilizar muitas delas reduz a probabilidade de o modelo final ser sobreajustado. A desvantagem é que o CV resulta em tempos de preparação mais longos e maior custo, porque prepara um modelo uma vez para cada n nos subconjuntos cv.

Nota

A validação cruzada não está ativada por predefinição; tem de ser configurado nas definições de machine learning automatizado. No entanto, após a configuração da validação cruzada e de ter sido fornecido um conjunto de dados de validação, o processo é automatizado para si.

Identificar modelos com dados desequilibrados

Os dados desequilibrados encontram-se frequentemente em dados para cenários de classificação de machine learning e referem-se a dados que contêm uma proporção desproporcionada de observações em cada classe. Este desequilíbrio pode levar a um efeito positivo falsamente percebido da precisão de um modelo, porque os dados de entrada têm tendência para uma classe, o que resulta no modelo preparado para imitar esse preconceito.

Além disso, as tarefas de ML Automatizado geram automaticamente os seguintes gráficos. Estes gráficos ajudam-no a compreender a correção das classificações do seu modelo e a identificar modelos potencialmente afetados por dados desequilibrados.

Gráfico Description
Matriz de Confusão Avalia as etiquetas corretamente classificadas em relação às etiquetas reais dos dados.
Revocação de precisão Avalia a proporção de etiquetas corretas em relação à proporção de instâncias de etiqueta encontradas dos dados
Curvas ROC Avalia a proporção de etiquetas corretas em relação à proporção de etiquetas falsos positivos.

Processar dados desequilibrados

Como parte do seu objetivo de simplificar o fluxo de trabalho de machine learning, o ML Automatizado tem capacidades incorporadas para ajudar a lidar com dados desequilibrados como, por exemplo,

  • Uma coluna de peso: o ML automatizado cria uma coluna de pesos como entrada para fazer com que as linhas nos dados sejam ponderadas para cima ou para baixo, o que pode ser utilizado para tornar uma classe mais ou menos "importante".

  • Os algoritmos utilizados pelo ML Automatizado detetam desequilíbrios quando o número de amostras na classe minoritária é igual ou inferior a 20% do número de amostras na classe maioritária, em que a classe minoritária se refere à que tem menos amostras e a classe maioritária refere-se à que tem mais amostras. Posteriormente, o machine learning automatizado executará uma experimentação com dados subsamplados para verificar se a utilização de pesos de classe resolveria este problema e melhoraria o desempenho. Se verificar um melhor desempenho através desta experimentação, esta solução será aplicada.

  • Utilize uma métrica de desempenho que lida melhor com dados desequilibrados. Por exemplo, a AUC_weighted é uma métrica primária que calcula o contributo de cada classe com base no número relativo de amostras que representam essa classe, pelo que é mais robusta face ao desequilíbrio.

As seguintes técnicas são opções adicionais para processar dados desequilibrados fora do ML Automatizado.

  • Reamostrando até mesmo o desequilíbrio da classe, quer através da amostragem das classes mais pequenas, quer da amostragem das classes maiores. Estes métodos requerem conhecimentos para processar e analisar.

  • Reveja as métricas de desempenho para dados desequilibrados. Por exemplo, a classificação F1 é a média harmónica de precisão e revocação. A precisão mede a exatacidade de um classificador, em que uma precisão mais elevada indica menos falsos positivos, enquanto a revocação mede a integridade de um classificador, em que uma recuperação mais elevada indica menos falsos negativos.

Passos seguintes

Veja exemplos e saiba como criar modelos com o ML Automatizado: