Overfitting e poda

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

A figura a seguir mostra um conjunto de dados com ruído e 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 nenhum 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 que contém 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 ruidoso, os pontos de dados individuais às vezes estão muito longe da linha de melhor ajuste.

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

 

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

  • Definir uma profundidade máxima:impede 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 de um determinado número de exemplos não será considerada para divisão.

A figura a seguir ilustra o efeito de diferentes números mínimos de exemplos por folha. O modelo captura menos ruído.

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 diferente de exemplos por folha.

Também é possível regularizar o modelo após o treinamento removendo seletivamente (podando) determinadas ramificações, ou seja, convertendo determinados nós não-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 a seguir ilustra essa ideia. Aqui, testamos se a precisão da validação da árvore de decisão seria melhor se o nó verde não-folha fosse transformado em folha, ou seja, podando os 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. Podar uma condição e os filhos dela em uma folha.

 

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

Um gráfico mostrando um modelo irregular super ajustado em relação a um modelo ideal de linha reta

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

 

O uso de 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.
  • Podar 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 poda. Por exemplo, confira os valores padrão de dois hiperparâmetros de poda:
  • O número mínimo de exemplos é 5 (min_examples = 5).
  • 10% do conjunto de dados de treinamento são mantidos para validação (validation_ratio = 0.1).
É possível desativar a poda com o conjunto de dados de validação definindo validation_ratio=0.0.

Esses critérios introduzem novos hiperparâmetros que precisam ser ajustados (por exemplo, profundidade máxima da árvore), geralmente com ajuste de hiperparâmetros automatizado. As árvores de decisão geralmente são rápidas o suficiente para treinar e 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âmetro 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 de p-1.
    • Faça 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 exemplos de "n" com os hiperparâmetros selecionados.

Nesta seção, discutimos as maneiras de limitar o ajuste excessivo das árvores de decisão. Apesar desses técnicas, o underfitting e o overfitting são as principais fraquezas das árvores de decisão. As florestas de decisão introduzem novos métodos para limitar o ajuste excessivo, que vamos conhecer mais adiante.

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

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

Devido à forma como as árvores de decisão são criadas, particionando os exemplos de treinamento, é possível usar uma árvore de decisão para interpretar o próprio conjunto de dados, em vez do modelo. Cada folha representa um canto específico do conjunto de dados.

Código YDF
No YDF, é possível analisar árvores com a função model.describe(). Também é possível acessar e representar uma árvore individual com model.get_tree(). Consulte o tutorial de inspeção de modelos do YDF para mais detalhes.

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