Depois de coletar seus dados e fazer a amostragem quando necessário, a próxima etapa é dividi-los em conjuntos de treinamento, conjuntos de validação e conjuntos de teste.
Quando a divisão aleatória não é a melhor abordagem
Embora a divisão aleatória seja a melhor abordagem para muitos problemas de ML, ela nem sempre é a solução certa. Por exemplo, considere conjuntos de dados em que os exemplos são agrupados naturalmente em exemplos semelhantes.
Suponha que você queira que seu modelo classifique o tópico do texto de uma matéria jornalística. Por que uma divisão aleatória seria problemática?
Figura 1. As notícias são agrupadas.
As notícias aparecem em clusters: várias matérias sobre o mesmo tema são publicadas ao mesmo tempo. Se dividirmos os dados aleatoriamente, o conjunto de teste e o conjunto de treinamento provavelmente terão as mesmas histórias. Na verdade, ele não funcionaria dessa forma, porque todas as histórias chegarão ao mesmo tempo, portanto, fazer a divisão como essa faria desvio.
Figura 2. Uma divisão aleatória dividirá um cluster entre os conjuntos, causando o desvio.
Uma abordagem simples para corrigir esse problema seria dividir nossos dados com base no momento em que a matéria foi publicada, talvez por dia em que ela foi publicada. Por isso, matérias do mesmo dia são colocadas na mesma divisão.
Figura 3. A divisão a tempo permite que os clusters acabem no mesmo conjunto.
Com dezenas ou milhares de notícias, uma porcentagem pode ser dividida entre os dias. Mas isso não é um problema. Na verdade, essas histórias foram divididas por dois dias no ciclo de notícias. Como alternativa, você poderia descartar dados dentro de uma determinada distância do limite para garantir que não haja sobreposição. Por exemplo, é possível treinar nas histórias do mês de abril e usar a segunda semana de maio como o conjunto de teste, com o intervalo de semana evitando sobreposição.