Eu estava lendo o relatório da solução vencedora de uma competição Kaggle ( Classificação de malware ). O relatório pode ser encontrado nesta postagem do fórum . O problema era um problema de classificação (nove classes, a métrica era a perda logarítmica) com 10.000 elementos no conjunto de trens e 10.000 elementos no conjunto de testes.
Durante a competição, os modelos foram avaliados contra 30% do conjunto de testes. Outro elemento importante é que os modelos tiveram um desempenho muito bom (precisão quase 100%)
Os autores usaram a seguinte técnica:
Outra técnica importante que surgimos é o aprendizado semissupervisionado. Primeiro, geramos pseudo-rótulos do conjunto de testes escolhendo a probabilidade máxima de nosso melhor modelo. Em seguida, prevemos o conjunto de testes novamente com validação cruzada, com dados de trem e dados de teste. Por exemplo, o conjunto de dados de teste é dividido em 4 partes A, B, C e D. Usamos todos os dados de treinamento e dados de teste A, B, C com seus pseudo rótulos, juntos como o novo conjunto de treinamento e prevemos o teste conjunto D.
O mesmo método é usado para prever A, B e C. Essa abordagem, inventada por Xiaozhou, funciona surpreendentemente bem e reduz a perda de validação cruzada local, a perda de LB pública e a perda de LB privada. O melhor modelo de aprendizado semissupervisionado pode atingir 0,0023 na perda de log LB privada, que é a melhor pontuação em todas as nossas soluções.
Realmente não vejo como isso pode melhorar os resultados. É porque 30% do conjunto de teste "vazou" e foi uma maneira de usar essas informações?
Ou existe alguma razão teórica para explicar por que funciona?