Overfitting e poda

Usando o algoritmo descrito acima, podemos treinar uma árvore de decisão que classificará perfeitamente os exemplos de treinamento, supondo que eles sejam separáveis. No entanto, se o conjunto de dados contiver ruído, essa árvore vai sobrecarregar os dados e mostrar uma acurácia ruim do teste.

A figura a seguir mostra um conjunto de dados com ruído, com uma relação linear entre um atributo x e o rótulo y. A figura também mostra uma árvore de decisão treinada com esse conjunto de dados sem qualquer tipo de regularização. Esse modelo prevê corretamente todos os exemplos de treinamento (a previsão do modelo corresponde aos exemplos de treinamento). No entanto, em um novo conjunto de dados contendo o mesmo padrão linear e uma instância de ruído diferente, o modelo teria um desempenho ruim.

A inclinação geral é +1, mas, como o conjunto de dados é muito barulhento, os pontos de dados individuais às vezes estão longe da linha de melhor ajuste.

Figura 12. Um conjunto de dados com ruído.

 

Para limitar o overfitting de uma árvore de decisão, aplique um ou ambos os critérios de regularização a seguir ao treinar a árvore de decisão:

  • Defina uma profundidade máxima:evite que as árvores de decisão cresçam além de uma profundidade máxima, como 10.
  • Definir um número mínimo de exemplos na folha:uma folha com menos que um determinado número de exemplos não será considerada para divisão.

A figura abaixo ilustra o efeito do número mínimo diferente de exemplos por folha. O modelo captura menos ruídos.

Três gráficos, cada um mostrando os efeitos de um valor diferente para o número mínimo
de exemplos por folha. Os valores diferentes são 2, 5 e
10.

Figura 13. Número mínimo de exemplos por folha.

Também é possível regularizar após o treinamento removendo seletivamente (removendo) determinadas ramificações, ou seja, convertendo determinados nós que não são de folhas em folhas. Uma solução comum para selecionar as ramificações a serem removidas é usar um conjunto de dados de validação. Ou seja, se a remoção de uma ramificação melhorar a qualidade do modelo no conjunto de dados de validação, ela será removida.

O desenho abaixo ilustra essa ideia. Aqui, testamos se a precisão da validação da árvore de decisão seria melhorada se o nó verde que não fosse uma folha fosse transformado em uma folha, ou seja, com a remoção dos nós laranja.

Duas árvores de decisão. Uma árvore de decisão contém nove nós e a outra foi
reduzida para apenas seis nós transformando uma das condições em
uma folha.

Figura 14. Poda de uma condição e dos filhos dela em uma folha.

 

A figura a seguir ilustra o efeito de usar 20% do conjunto de dados como validação para remover a árvore de decisão:

Um gráfico que mostra um modelo com overfitting irregular em comparação com um modelo de linha reta ideal

Figura 15. Usar 20% do conjunto de dados para remover a árvore de decisão.

 

Usar um conjunto de dados de validação reduz o número de exemplos disponíveis para o treinamento inicial da árvore de decisão.

Muitos criadores de modelos aplicam vários critérios. Por exemplo, é possível fazer o seguinte:

  • Aplique um número mínimo de exemplos por folha.
  • Aplique uma profundidade máxima para limitar o crescimento da árvore de decisão.
  • Elimine a árvore de decisão.
Código YDF
No YDF, os algoritmos de aprendizado são pré-configurados com valores padrão para todos os hiperparâmetros de remoção. Por exemplo, aqui estão os valores padrão para dois hiperparâmetros de remoção:
  • O número mínimo de exemplos é 5 (min_examples = 5)
  • 10% do conjunto de dados de treinamento é retido para validação (validation_ratio = 0.1).
Para desativar a remoção com o conjunto de dados de validação, defina validation_ratio=0.0.

Esses critérios introduzem novos hiperparâmetros que precisam ser ajustados (por exemplo, profundidade máxima de árvore), geralmente com ajuste automatizado. As árvores de decisão geralmente são rápidas o suficiente para serem treinadas a usar o ajuste de hiperparâmetros com validação cruzada. Por exemplo, em um conjunto de dados com "n" exemplos:

  • Divida os exemplos de treinamento em p grupos não sobrepostos. Por exemplo: p=10.
  • Para todos os valores de hiperparâmetros possíveis, por exemplo, profundidade máxima em {3,5,6,7,8,9}, exemplos mínimos em {5,8,10,20}.
    • Avalie, em cada grupo, a qualidade de uma árvore de decisão treinada nos outros grupos p-1.
    • Fazer a média da avaliação entre os grupos.
  • Selecione o valor do hiperparâmetro com a melhor avaliação média.
  • Treine uma árvore de decisão final usando todos os "n" exemplos com os hiperparâmetros selecionados.

Nesta seção, discutimos como as árvores de decisão limitam o overfitting. Apesar desses métodos, underfitting e overfitting são os principais pontos fracos das árvores de decisão. As florestas de decisão introduzem novos métodos para limitar o overfitting, que veremos mais tarde.

Interpretação da árvore de decisão direta

As árvores de decisão são facilmente interpretáveis. Dito isso, mudar até mesmo alguns exemplos pode mudar completamente a estrutura e, portanto, a interpretação da árvore de decisão.

Devido à maneira como as árvores de decisão são construídas, particionando os exemplos de treinamento, é possível usar uma árvore de decisão para interpretar o próprio conjunto de dados (em oposição ao modelo). Cada folha representa um canto específico do conjunto de dados.

Código YDF
No YDF, é possível ver as árvores com a função model.describe(). Você também pode acessar e plotar árvores individuais com model.get_tree(). Consulte o tutorial de inspeção de modelo do YDF para mais detalhes.

No entanto, a interpretação indireta também é informativa.