Czytałem raport o zwycięskim rozwiązaniu konkursu Kaggle ( klasyfikacja złośliwego oprogramowania ). Raport można znaleźć w tym poście na forum . Problemem był problem z klasyfikacją (dziewięć klas, metryką była strata logarytmiczna) ze 10000 elementami w zestawie pociągów, 10000 elementów w zestawie testowym.
Podczas zawodów modele były oceniane w stosunku do 30% zestawu testowego. Kolejnym ważnym elementem jest to, że modele działały bardzo dobrze (blisko 100% dokładności)
Autorzy zastosowali następującą technikę:
Kolejną ważną techniką, którą wymyśliliśmy, jest Semisupervised Learning. Najpierw generujemy pseudo etykiety zestawu testowego, wybierając maksymalne prawdopodobieństwo naszego najlepszego modelu. Następnie przewidujemy zestaw testowy ponownie w sposób krzyżowy z danymi pociągu i danymi testowymi. Na przykład zestaw danych testowych jest podzielony na 4 części A, B, C i D. Używamy całych danych treningowych, a dane testowe A, B, C wraz z ich pseudo etykietami, razem jako nowy zestaw szkoleniowy i przewidujemy test zestaw D.
Ta sama metoda jest stosowana do przewidywania A, B i C. To podejście, wynalezione przez Xiaozhou, działa zaskakująco dobrze i zmniejsza lokalną utratę krzyżowej walidacji, publiczną utratę LB i prywatną utratę LB. Najlepszy model uczenia się z półprzewodnikiem może osiągnąć 0,0023 straty w prywatnym dzienniku LB, co jest najlepszym wynikiem dla wszystkich naszych rozwiązań.
Naprawdę nie rozumiem, jak może poprawić wyniki. Czy to dlatego, że 30% zestawu testowego „wyciekło” i był to sposób na wykorzystanie tych informacji?
Czy może jest jakiś teoretyczny powód wyjaśniający, dlaczego to działa?