A equipe de Andrew Ng cometeu um grande erro em um artigo científico. E isso aconteceu por causa da divisão aleatória dos dados. Aqui está exatamente o que aconteceu (com solução):
É comum gerar conjuntos de trens e validação usando divisão aleatória. No entanto, em muitas situações, pode ser fatal para a construção de modelos. Considere construir um modelo que gera legendas para imagens. Devido à natureza inerente da linguagem, toda imagem pode ter muitas legendas diferentes. - Imagem-1 → Legenda-1, Legenda-2, Legenda-3, etc. - Imagem-2 → Legenda-1, Legenda-2, Legenda-3, etc. Veja isso 👇
Se usarmos a divisão aleatória, o mesmo ponto de dados (imagem) estará disponível nos conjuntos de treinamento e validação. Como resultado, acabamos avaliando o modelo nas instâncias em que ele foi treinado. Este é um exemplo de vazamento de dados (também chamado de vazamento de grupo), resultando em sobreajuste!
A mesma coisa aconteceu no artigo do Andrew Ng, onde prepararam um conjunto de dados médico para detectar pneumonia. - Total de imagens = 112k - Total de pacientes = 30 mil Devido à divisão aleatória, as imagens dos mesmos pacientes estavam disponíveis tanto no conjunto de treinamento quanto no de validação. Isso levou ao vazamento de dados, e as pontuações de validação ficaram muito melhores do que deveriam. Este é o artigo👇 inicial deles
O agrupamento em grupo resolveu isso. Existem dois passos: 1) Agrupar todas as instâncias de treinamento correspondentes a uma imagem. 2) Após o agrupamento, o GRUPO INTEIRO (todos os exemplos de uma imagem) deve ser atribuído aleatoriamente ao trem ou conjunto de validação. Isso evitará o vazamento do grupo.
Se você usa o Sklearn, o GroupShuffleSplit implementa essa ideia. Como exemplo, considere que temos o seguinte conjunto de dados: - x1 e x2 são as características. - y é a variável alvo. - grupo denota os critérios de agrupamento. Veja isso 👇
Primeiro, importamos o GroupShuffleSplit do sklearn e instanciamos o objeto. Em seguida, o método split() desse objeto nos permite realizar a divisão de grupos. Ele retorna um gerador, e podemos desempacotá-lo para obter a seguinte saída: - Os pontos de dados nos grupos "A" e "C" estão juntos no conjunto de treinamento. - Os pontos de dados do grupo "B" estão juntos no conjunto de validação/teste. Veja isso 👇
Alguns dias depois, a equipe de Andrew Ng atualizou o artigo após usar a mesma estratégia de agrupamento para garantir que os mesmos pacientes não acabassem tanto no treinamento quanto no conjunto de validação. 👉 A palavra é sua: você já enfrentou esse problema antes?
18,52K