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.
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.
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.
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:
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.
- 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
).
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.
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.