Conjuntos de dados: como dividir o conjunto de dados original

Todos os bons projetos de engenharia de software dedicam uma quantidade considerável de energia testando os apps. Da mesma forma, é altamente recomendável testar modelo de ML para determinar a exatidão de suas previsões.

Conjuntos de treinamento, validação e teste

Teste um modelo com um conjunto diferente de exemplos usados para treinar o modelo. Como você vai aprender um pouco mais tarde, testar exemplos diferentes é uma prova mais forte do condicionamento físico do modelo no mesmo conjunto de exemplos. Onde você consegue esses diferentes exemplos? Tradicionalmente, em machine learning, divida o conjunto de dados original. Talvez você presuma, portanto, que você deve dividir o conjunto de dados original em dois subconjuntos:

Figura 8. Uma barra horizontal dividida em duas partes: aproximadamente 80% delas
            é o conjunto de treinamento e cerca de 20% é o conjunto de teste.
Figura 8. Essa divisão não é ideal.

 

Exercício: verificar sua intuição

Suponha que você treine no conjunto de treinamento e avalie no conjunto de teste em várias rodadas. Em cada rodada, você usa os resultados do conjunto de teste para orientar como atualizar hiperparâmetros e o conjunto de atributos. Você consegue notou algo de errado com essa abordagem? Escolha apenas uma resposta.
Muitas rodadas desse procedimento podem fazer com que o modelo para ajustar implicitamente as peculiaridades do conjunto de teste.
Sim. Quanto mais você usar o mesmo conjunto de teste, maior a probabilidade de o modelo se encaixar bem no conjunto de teste. Como um professor "ensinando para o teste", o modelo acidentalmente se encaixa no conjunto de teste, o que pode dificultar que o modelo para encaixar dados do mundo real.
Essa abordagem é boa. Afinal, você está treinando na ao conjunto de treinamento e avaliar em um conjunto de teste separado.
Na verdade, há um problema sutil aqui. Pense no que pode dar errado aos poucos.
Essa abordagem é ineficiente em termos computacionais. Não alterar hiperparâmetros ou conjuntos de atributos após cada rodada de teste.
Testes frequentes são caros, mas essenciais. No entanto, frequentes o teste é muito mais barato do que o treinamento adicional. Otimização os hiperparâmetros e o conjunto de atributos podem melhorar drasticamente da qualidade do modelo. Portanto, sempre reserve tempo e recursos computacionais trabalhar nisso.

Dividir o conjunto de dados em dois conjuntos é uma ideia razoável, mas uma abordagem melhor é dividir o conjunto de dados em três subconjuntos. Além dos conjuntos de treinamento e teste, o terceiro subconjunto é:

Figura 9. Uma barra horizontal dividida em três partes: 70% das quais
            é o conjunto de treinamento, 15% o conjunto de validação
            o conjunto de teste
Figura 9. Uma divisão muito melhor.

Use o conjunto de validação para avaliar os resultados do conjunto de treinamento. Após o uso repetido do conjunto de validação, fazendo boas previsões, use o conjunto de teste para verificar o modelo.

A figura a seguir sugere esse fluxo de trabalho. Na figura, "Ajustar modelo". ou seja, ajustar qualquer coisa no modelo desde alterar a taxa de aprendizado até adicionar ou remover recursos, até projetar um modelo completamente novo do zero. Ao final desse fluxo de trabalho, você escolhe o modelo que se sai melhor no conjunto de teste.

Figura 10. Um diagrama de fluxo de trabalho que consiste nas seguintes etapas:
            1: Treine o modelo no conjunto de treinamento.
            2. Avaliar o modelo no conjunto de validação.
            3. Ajuste o modelo de acordo com os resultados no conjunto de validação.
            4. Itere em 1, 2 e 3 e, por fim, escolha o modelo que
               melhor no conjunto de validação.
            5. Confirme os resultados no conjunto de teste.
Figura 10. Um bom fluxo de trabalho para desenvolvimento e testes.

O fluxo de trabalho mostrado na figura 10 é ideal, mas mesmo com ele, os conjuntos de teste e de validação ainda estão "desgastados" com o uso repetido. Ou seja, quanto mais você usa os mesmos dados para tomar decisões sobre configurações de hiperparâmetro ou outras melhorias do modelo, menor será a confiança que o modelo vai fazer boas previsões com base em novos dados. Por isso, é uma boa ideia coletar mais dados para "atualizar" o teste e o conjunto de validação. Começar de novo é uma ótima redefinição.

Exercício: verificar sua intuição

Você embaralhou todos os exemplos no conjunto de dados e dividiu os exemplos embaralhados em treinamento, validação conjuntos No entanto, o valor de perda no conjunto de teste é incrivelmente baixo de suspeitar de um erro. O que pode ter dado errado?
Muitos dos exemplos no conjunto de teste são cópias de exemplos no conjunto de treinamento.
Sim. Isso pode ser um problema em um conjunto de dados com muitos exemplos. Recomendamos que você exclua exemplos duplicados de o conjunto de teste antes do teste.
O treinamento e o teste não são determinísticos. Às vezes, por acaso, sua perda de teste for incrivelmente baixa. Execute o teste novamente para confirmar a resultado.
Embora a perda varie um pouco a cada execução, ela não deve variar que acha que ganhou na loteria de machine learning.
Por acaso, o conjunto de teste acaba de conter exemplos que o modelo teve um bom desempenho.
Os exemplos estavam bem embaralhados, então isso é extremamente improvável.

Outros problemas com conjuntos de teste

Como a pergunta anterior ilustra, exemplos duplicados podem afetar a avaliação do modelo. Depois de dividir um conjunto de dados em conjuntos de treinamento, validação e teste, excluir todos os exemplos no conjunto de validação ou no conjunto de teste que sejam cópias de no conjunto de treinamento. O único teste justo de um modelo é contra novos exemplos, e não cópias.

Por exemplo, considere um modelo que prevê se um e-mail é spam, usando o assunto, o corpo do e-mail e o endereço de e-mail do remetente como recursos. Suponha que você divida os dados em conjuntos de treinamento e teste, com uma divisão de 80-20. Após o treinamento, o modelo atinge 99% de precisão no conjunto de treinamento e o conjunto de teste. Você provavelmente esperaria uma precisão menor no conjunto de teste, então analise novamente os dados e descubra que muitos dos exemplos do são cópias de exemplos no conjunto de treinamento. O problema é que você se esqueceu de remover entradas duplicadas do mesmo e-mail de spam da sua entrada. no banco de dados antes de dividi-los. Você, inadvertidamente, treinou algumas seus dados de teste.

Em resumo, um bom conjunto de teste ou de validação atende a todos os seguintes critérios:

  • Grande o suficiente para gerar resultados de testes com significância estatística.
  • Representativo do conjunto de dados como um todo. Em outras palavras, não escolha um conjunto de teste com características diferentes do conjunto de treinamento.
  • representa os dados do mundo real que o modelo encontrará. como parte da finalidade dos negócios.
  • Nenhum exemplo duplicado no conjunto de treinamento.

Exercícios: testar seu conhecimento

Dado um único conjunto de dados com um número fixo de exemplos, qual das seguintes afirmações é verdadeira?
Cada exemplo usado no teste do modelo é um exemplo a menos usado no treinamento do modelo.
Dividir exemplos em conjuntos de treinamento/teste/validação é um jogo de soma zero. Essa é a troca central.
O número de exemplos no conjunto de teste precisa ser maior que o número de exemplos no conjunto de validação.
Teoricamente, o conjunto de validação e o teste de teste devem conter o mesmo muitos exemplos ou quase isso.
O número de exemplos no conjunto de teste precisa ser maior que o número de exemplos no conjunto de validação ou de treinamento.
O número de exemplos no conjunto de treinamento geralmente é maior que o número de exemplos no conjunto de validação ou de teste; No entanto, não há requisitos de porcentagem para os diferentes conjuntos.
Suponha que seu conjunto de teste contenha exemplos suficientes para realizar uma teste estatisticamente significativo. Além disso, os testes com que o conjunto de teste produz baixa perda. No entanto, o modelo realizou muito mal no mundo real. O que você deve fazer?
Determine como o conjunto de dados original difere dos dados da vida real.
Sim. Mesmo os melhores conjuntos de dados são apenas um instantâneo de dados da vida real; o informações empíricas tende a mudar com o tempo. Embora o conjunto de teste corresponda às suas de treinamento bem o suficiente para sugerir uma boa qualidade do modelo, o conjunto de dados provavelmente não corresponderá adequadamente a dados reais. Talvez seja necessário treinar e testar novamente com um novo conjunto de dados.
Teste novamente no mesmo conjunto de testes. Os resultados do teste podem ter não é uma anomalia.
Embora o novo teste possa gerar resultados ligeiramente diferentes, essa tática provavelmente não será muito útil.
Quantos exemplos o conjunto de teste deve conter?
Exemplos suficientes para gerar um teste com significância estatística.
Sim. São quantos exemplos? Você precisa testar.
Pelo menos 15% do conjunto de dados original.
15% pode ou não ser exemplos suficientes.