Stavo leggendo il rapporto sulla soluzione vincente di una competizione Kaggle ( Classificazione malware ). Il rapporto può essere trovato in questo post del forum . Il problema era un problema di classificazione (nove classi, la metrica era la perdita logaritmica) con 10000 elementi nel set di treni, 10000 elementi nel set di test.
Durante la competizione, i modelli sono stati valutati rispetto al 30% del set di test. Un altro elemento importante è che i modelli si sono comportati molto bene (quasi al 100% di precisione)
Gli autori hanno usato la seguente tecnica:
Un'altra tecnica importante che apprendiamo è l'apprendimento semi-supervisionato. Generiamo innanzitutto pseudo etichette del set di test scegliendo la massima probabilità del nostro miglior modello. Quindi prevediamo di nuovo il set di test in modo incrociato con i dati del treno e i dati del test. Ad esempio, il set di dati di test è suddiviso in 4 parti A, B, C e D. Utilizziamo i dati di allenamento completi e i dati di test A, B, C con le loro pseudo etichette, insieme come nuovo set di training e prevediamo il test impostare D.
Lo stesso metodo viene utilizzato per prevedere A, B e C. Questo approccio, inventato da Xiaozhou, funziona sorprendentemente bene e riduce la perdita di convalida incrociata locale, la perdita di LB pubblica e la perdita di LB privata. Il miglior modello di apprendimento semi-supervisionato può raggiungere 0,0023 nella perdita di log LB privata, che è il miglior punteggio rispetto a tutte le nostre soluzioni.
Davvero non vedo come possa migliorare i risultati. È perché il 30% del set di test è stato "trapelato" ed è stato un modo per utilizzare queste informazioni?
O c'è qualche motivo teorico che spiega perché funziona?