Validação vs. teste vs. precisão do treinamento. Qual deles devo comparar por reivindicar um excesso de ajuste?

7

Li nas várias respostas aqui e na Internet que a validação cruzada ajuda a indicar que, se o modelo for generalizado bem ou não, e sobre o ajuste excessivo.

Mas estou confuso quanto a quais duas precisões / erros no teste / treinamento / validação devo comparar para poder ver se o modelo está sobreajustado ou não?

Por exemplo:

Divido meus dados para 70% de treinamento e 30% de teste.

Quando executo 10 vezes a validação cruzada, recebo 10 precisões nas quais posso obter a média / média. devo chamar isso de mau validation accuracy?

Posteriormente, testei o modelo com 30% de dados de teste e obtive Test Accuracy.

Nesse caso, o que será training accuracy? E quais duas precisões devo comparar para ver se o modelo está sobreajustado ou não?

AB
fonte

Respostas:

9

Quais são as duas precisões que comparo para ver se o modelo está sobreajustado ou não?

Você deve comparar as precisões de treinamento e teste para identificar ajustes excessivos. Uma precisão de treinamento subjetivamente muito maior que a precisão do teste indica excesso de ajuste.

Aqui, a "precisão" é usada em sentido amplo, pode ser substituída por F1, AUC, erro (aumento se torna menor, mais alto se torna menor), etc.

Sugiro partes de "Viés e variância" e "Curvas de aprendizado" de " Machine Learning Yearning - Andrew Ng ". Apresenta tramas e interpretações para todos os casos com uma narração clara.

Quando executo 10 vezes a validação cruzada, recebo 10 precisões nas quais posso obter a média / média. devo chamar isso de precisão de validação?

Não. É uma [estimativa da] precisão do teste.
A diferença entre os conjuntos de validação e teste (e suas precisões correspondentes) é que o conjunto de validação é usado para criar / selecionar um modelo melhor, o que significa que afeta o modelo final. No entanto, como o CV de 10 vezes sempre testa um modelo já construído em seus 10% de retenção, e não é usado aqui para selecionar entre modelos, seus 10% de retenção são um conjunto de testes e não um conjunto de validação.

Posteriormente, testei o modelo com 30% de dados e obtenho a precisão do teste.

Se você não usar a dobra K para selecionar entre vários modelos, esta parte não é necessária, execute a dobra K em 100% dos dados para obter a precisão do teste. Caso contrário, você deve manter esse conjunto de testes, pois o resultado da dobra em K seria uma precisão de validação.

Nesse caso, qual será a precisão do treinamento?

Em cada uma das 10 dobras, você pode obter uma precisão de teste em 10% dos dados e uma precisão de treinamento em 90% dos dados. Em python, o método cross_val_scorecalcula apenas as precisões do teste. Aqui está como calcular os dois:

from  sklearn import model_selection
from sklearn import datasets
from sklearn import svm

iris = datasets.load_iris()
clf = svm.SVC(kernel='linear', C=1)
scores = model_selection.cross_validate(clf, iris.data, iris.target, cv=5, return_train_score=True)
print('Train scores:')
print(scores['train_score'])
print('Test scores:')
print(scores['test_score'])

Defina return_estimator = Truepara obter os modelos treinados também.

Mais sobre conjunto de validação

O conjunto de validação aparece em dois casos gerais: (1) construção de um modelo e (2) seleção entre vários modelos,

  1. Dois exemplos para a construção de um modelo: (a) paramos de treinar uma rede neural ou (b) paramos de podar uma árvore de decisão quando a precisão do modelo no conjunto de validação começa a diminuir. Em seguida, testamos o modelo final em um conjunto estendido, para obter a precisão do teste.

  2. Dois exemplos para selecionar entre vários modelos:

    uma. Fazemos o CV dobrável em K em uma rede neural com 3 camadas e uma com 5 camadas (para obter modelos K para cada uma) e, em seguida, selecionamos o NN com a maior precisão de validação média dos modelos K; suponha que o NN de 5 camadas. Finalmente, treinamos o NN de 5 camadas em um trem de 80%, uma divisão de validação de 20% das dobras K combinadas e o testamos em um conjunto estendido para obter a precisão do teste.

    b. Aplicamos dois modelos de árvore de decisão e SVM já criados em um conjunto de validação e, em seguida, selecionamos aquele com a maior precisão de validação. Por fim, testamos o modelo selecionado em um conjunto estendido para obter a precisão do teste.

Esmailiano
fonte
2
Acho que discordo de "30% de conjunto de testes não é necessário". Se você estiver usando CV para selecionar um modelo melhor, então você está expondo as dobras de teste (que eu iria chamar um conjunto de validação, neste caso) e risco overfitting lá. O conjunto de testes final deve permanecer intocado (por você e por seus algoritmos) até o final, para estimar o desempenho do modelo final (se é algo que você precisa). Mas sim, durante a construção do modelo, a pontuação (média) da dobra de treinamento versus a pontuação (média) da dobra de validação é o que você procura para obter uma indicação de sobreajuste.
Ben Reiniger
@BenReiniger Você está certo, devo esclarecer este caso.
Esmailian 13/03/19
@Esmailian train_score também tem uma média de 10 pontos? Além disso, para fazer um tipo semelhante de coisa com o GridSearchCV (no caso de um ajuste de hiperparâmetro e validação cruzada serem necessários em uma etapa), podemos usar return_train_score = true? é o mesmo?
AB
@AB É uma matriz, precisa ser calculada a média. return_train_score = true ou = false altera apenas o relatório retornado, o resultado subjacente é o mesmo.
Esmailian 13/03/19
11
Ok, obrigado, estou aceitando a resposta, pois "qual precisão deve ser usada" faz sentido. Mas é possível que você elabore mais sobre "o conjunto de validação é usado para criar / selecionar um modelo melhor (por exemplo, evitar o ajuste excessivo) versus, no seu caso, o CV 10 vezes testa um modelo já construído" para mim e para os futuros leitores ?
AB em AB
4

A validação cruzada divide seus dados em K dobras. Cada dobra contém um conjunto de dados de treinamento e dados de teste. Você está certo de obter K taxas de erro diferentes das quais você calcula a média. Essas taxas de erro são provenientes do conjunto de testes de cada uma das suas K dobras. Se você deseja obter a taxa de erro de treinamento, calcule a taxa de erro na parte de treinamento de cada uma dessas K dobras e faça a média.

astel
fonte