Вопрос или проблема
Я хотел бы задать вопрос о случайной генерации популяции и разделении датасета в моделях классификации машинного обучения.
Например, я использовал seed = 1 и получил точность 0.7, seed = 5 и получил точность 0.8, а seed = 2000 и получил точность 0.89, используя Adaboost.
Я нашел исследовательскую работу, использующую тот же датасет, что и я, и достигнутый результат точности составил 0.94 с использованием модели xgboost без указания seed, который использовался для разработки модели.
То же самое существует и для других научных статей.
Какие результаты мне нужно выбрать, чтобы сравнить свою модель с другими моделями, предложенными в литературе? Тем временем я реализовал все модели, предложенные в литературе, с разными seed и обнаружил, что результаты отличаются по сравнению с публикацией. А иногда мои результаты с adaboost оказываются лучше.
Мне нужна помощь, чтобы сравнить мое предложение с другими работами.
Я согласен, что иногда авторы не так ясны в некоторых деталях. Если датасет уже разделен на обучающую/тестовую/валидационную выборки, то делать нечего (предполагая, что датасет хорошо составлен). Если имеется датасет, который еще не разделен, то у вас есть (по крайней мере) два способа протестировать свою модель:
- зафиксировать случайный seed, проверить, что разделение неbiased и провести несколько обучений. Даже с тем же разделением, одна и та же модель может сходиться к разным локальным минимумам из-за стохастического спуска;
- не фиксировать случайный seed и провести несколько обучений (но сохранить seed, когда будете хранить данные эксперимента!).
Если ваши результаты не согласуются с литературой, и вы уверены, что в коде нет ошибок, то вам следует задать конкретные вопросы или написать авторам. В зависимости от модели, вы можете попробовать некоторые стандартные методы валидации.
Лучший способ избежать вашей проблемы — использование K-Fold кросс-валидации. Разница в 0.1 в точности между 2 seed — это много, поэтому я рекомендую вам использовать кросс-валидацию с случайными разделениями (вы можете, например, перемешать ваши данные перед входом в цикл кросс-валидации). Проведение Кросс-Валидации дважды, перемешивая данные перед этим, может дать вам небольшое изменение (из-за перемешивания наборы кросс-валидации не будут точно такими же), но я сильно сомневаюсь, что это будет так же высоко, как 0.1. Тогда вы сможете сравнить свою модель, поскольку вы используете стабильный процесс оценки.
Ответ или решение
Вопрос о сравнении моделей машинного обучения, особенно в контексте случайных начальных условий и разбивки данных, является важным аспектом, поскольку результаты могут значительно варьироваться в зависимости от выбранного метода обработки данных и случайного начального состояния.
Первое, что следует учитывать, это то, что результаты ваших моделей могут различаться из-за случайных факторов, таких как случайная инициализация параметров модели и случайные разбиения данных на тренировочные и тестовые наборы. Это объясняет, почему вы получаете различные результаты при использовании разных значений начального seeds.
Рекомендации по сравнению моделей
-
Фиксация начального состояния (Seed): Если вы выбрали фиксированное значение seed и провели несколько прогонов, вы можете быть уверены, что используете одну и ту же разбивку данных. В этом случае важно проверить, не подвергается ли ваша модель переобучению на тех же данных, что также может влиять на точность.
-
Кросс-валидация: Хорошей практикой является использование K-Fold кросс-валидации. Это позволит вам получить более стабильную оценку производительности, поскольку данные будут разбиты на несколько частей, и каждая часть будет использоваться в качестве тестовой выборки разнообразное количество раз. Этот метод минимизирует влияние случайных вариаций и делает ваши результаты более надежными.
-
Сравнение с литературой: Когда вы сравниваете свои результаты с результатами, опубликованными в научных статьях, убедитесь, что вы выполняете эквивалентные условия, включая разбиение данных, типы моделей и параметры настройки. Если в статьях не указано значение seed, это может привести к значительным вариациям в результатах. Если ваша реализация модели дает результаты, отличные от описанных в литературе, то это может быть связано с особенностями реализации, настройками гиперпараметров или разными версиями библиотек.
-
Анализ различий: При нахождении различий в точности (например, между 0.7 и 0.9) вы можете рассмотреть проведенные вами эксперименты с различными комбинациями гиперпараметров, а также разными методами предобработки данных. Это позволит вам лучше понять, какие аспекты вашего подхода могут быть улучшены.
-
Обсуждение с авторами: Если вы все равно не можете воспроизвести результаты из статьи, стоит обратиться к авторам с конкретными вопросами о методологии, они могут предоставить дополнительные сведения о параметрах, которые они использовали, и помочь вам отбросить возможные ошибки.
Заключение
В заключение, лучший способ сравнить вашу модель с другими предложениями в литературе — это использовать K-Fold кросс-валидацию с фиксированным seed, анализировать гиперпараметры и разбиение данных, а также документировать все аспекты вашего эксперимента. Эти шаги помогут вам получить надежные и сравнимые результаты. Успех при решении данной задачи может привести к более глубокому пониманию работы ваших моделей и способов их оптимизации.