Я читал отчет о победившем решении конкурса 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% тестового набора было «утечкой», и это был способ использовать эту информацию?
Или есть какая-то теоретическая причина, объясняющая, почему это работает?
Это не грубая перегонка (в зависимости от определения). Целевая информация о тестовом наборе сохраняется. Полу-контролируемые позволяют генерировать дополнительный синтетический набор данных для обучения модели. В описанном подходе исходные данные обучения смешиваются невзвешенными с синтетическими в соотношении 4: 3. Таким образом, если качество синтетических данных низкое, такой подход окажется катастрофическим. Я предполагаю, что для любой проблемы, где прогнозы неопределенны, набор синтетических данных будет иметь низкую точность. Если базовая структура очень сложна и система имеет низкий уровень шума, я думаю, это может помочь в создании синтетических данных. Я думаю, что обучение под наблюдением довольно велико в глубоком обучении (не в моей компетенции), где также необходимо изучить представление функций.
Я попытался воспроизвести повышенную точность при обучении с использованием полуобучения на нескольких наборах данных как с помощью rf, так и xgboost без какого-либо положительного результата. [Не стесняйтесь редактировать мой код.] Я замечаю, что фактическое повышение точности с использованием полудонтроля довольно скромно в отчете о неудачниках, может быть, случайно?
источник
По такому определению: «Переоснащение происходит, когда статистическая модель описывает случайную ошибку или шум вместо базовых отношений» (Википедия), решение не является переобучением.
Но в этой ситуации:
- Тестовые данные - это поток элементов, а не фиксированный набор элементов.
ИЛИ
- Процесс прогнозирования не должен содержать этап обучения (например, из-за проблем с производительностью)
. Упомянутое решение является переоснащением. Потому что точность моделирования больше реальных ситуаций.
источник