Я читал отчет о победившем решении конкурса Kaggle ( Malware Classification ). Отчет можно найти в этом сообщении на форуме . Эта проблема была проблемой классификации (девять классов, метрика - логарифмическая потеря) с 10000 элементами в наборе поездов, 10000 элементов в наборе испытаний.
Во время конкурса модели оценивались по сравнению с 30% тестового набора. Другим важным элементом является то, что модели работали очень хорошо (точность близка к 100%)
Авторы использовали следующую методику:
Еще одна важная методика, которую мы придумали, - это обучение с полууправлением. Сначала мы генерируем псевдо метки тестового набора, выбирая максимальную вероятность нашей лучшей модели. Затем мы снова прогнозируем набор тестов методом перекрестной проверки с данными поезда и данными испытаний. Например, набор тестовых данных разделен на 4 части A, B, C и D. Мы используем все тренировочные данные и тестовые данные A, B, C с их псевдометками вместе в качестве нового обучающего набора, и мы прогнозируем тест набор D.
Тот же метод используется для прогнозирования A, B и C. Этот подход, изобретенный Xiaozhou, работает на удивление хорошо и уменьшает потери при локальной перекрестной проверке, потери общего LB и потери частного LB. Лучшая модель обучения с полуобслуживанием может достигать 0,0023 при частной потере журнала LB, что является лучшим показателем среди всех наших решений.
Я действительно не понимаю, как это может улучшить результаты. Это потому, что 30% тестового набора было «утечкой», и это был способ использовать эту информацию?
Или есть какая-то теоретическая причина, объясняющая, почему это работает?