Je lisais le rapport de la solution gagnante d'un concours Kaggle ( Malware Classification ). Le rapport peut être trouvé dans cet article du forum . Le problème était un problème de classification (neuf classes, la métrique était la perte logarithmique) avec 10000 éléments dans le train, 10000 éléments dans le test.
Pendant la compétition, les modèles ont été évalués contre 30% de l'ensemble de test. Un autre élément important est que les modèles fonctionnaient très bien (près de 100% de précision)
Les auteurs ont utilisé la technique suivante:
Une autre technique importante que nous proposons est l'apprentissage semi-supervisé. Nous générons d'abord des pseudo étiquettes d'ensemble de test en choisissant la probabilité maximale de notre meilleur modèle. Ensuite, nous prédisons à nouveau l'ensemble de test de manière croisée avec les données de train et les données de test. Par exemple, l'ensemble de données de test est divisé en 4 parties A, B, C et D. Nous utilisons l'ensemble des données de formation et les données de test A, B, C avec leurs pseudo-étiquettes, ensemble en tant que nouvel ensemble de formation et nous prédisons le test définir D.
La même méthode est utilisée pour prédire A, B et C. Cette approche, inventée par Xiaozhou, fonctionne étonnamment bien et elle réduit la perte de validation croisée locale, la perte de LB publique et la perte de LB privée. Le meilleur modèle d'apprentissage semi-supervisé peut atteindre 0,0023 en perte de journal LB privé, ce qui est le meilleur score sur toutes nos solutions.
Je ne vois vraiment pas comment cela peut améliorer les résultats. Est-ce parce que 30% de l'ensemble de test a été "divulgué" et que c'était un moyen d'utiliser ces informations?
Ou y a-t-il une raison théorique expliquant pourquoi cela fonctionne?