Цель

После более чем двухлетнего опыта работы я столкнулся с разными коллегами на рабочем месте, которые допускали ошибки при разбиении данных из-за невнимательности во время экспериментов, что приводило к проблемам с результатами анализа. Поэтому я хотел бы написать статью, чтобы напомнить себе и другим, чтобы избежать подобных ошибок. Если вы уже знакомы с процессом машинного обучения, можете сразу перейти к разделу о подводных камнях.

руководство

Выполнение правильного разделения данных — важный шаг в машинном обучении, который может существенно повлиять на производительность вашей модели. Вот несколько советов по правильному разделению данных:

  1. Произвольное разделение данных. Хорошее разделение данных должно быть случайным, чтобы каждое подмножество представляло всю совокупность данных. Случайное разбиение гарантирует, что обучающие, проверочные и тестовые наборы содержат разные примеры из совокупности и что модель учится обобщать, а не запоминать обучающий набор.
  2. Стратифицируйте данные. Если в ваших данных есть несбалансированные классы, важно провести стратификацию данных во время разделения. Стратификация гарантирует, что каждое подмножество содержит репрезентативную выборку каждого класса в данных, что снижает риск переоснащения или недообучения модели.
  3. Используйте соответствующий коэффициент разделения: размер наборов для обучения, проверки и тестирования будет зависеть от размера вашего набора данных и сложности проблемы, которую вы пытаетесь решить. Обычное разделение составляет 80 % для обучения, 10 % для проверки и 10 % для тестирования, но другие соотношения могут быть более подходящими для вашей конкретной проблемы.
  4. Рассмотрим перекрестную проверку: перекрестная проверка — это метод, который включает в себя многократное разделение данных и обучение модели на разных подмножествах данных. Перекрестная проверка может помочь смягчить переобучение и обеспечить устойчивость модели к вариациям данных.
  5. Будьте последовательны: важно использовать одно и то же разделение данных для каждой модели, которую вы обучаете, чтобы вы могли точно сравнивать их производительность. Это означает, что вы не должны изменять коэффициент разделения или методологию между моделями.

Подводные камни

  1. Информация, позволяющая установить личность. Если ваши данные содержат информацию, позволяющую установить личность, данные, принадлежащие одному и тому же удостоверению, должны быть помещены в один и тот же набор. Эта ситуация обычно распространена в медицинских изображениях или данных изображений, связанных с человеческими лицами. Допустим, модель обучается на КТ-изображениях человека А, и модель способна обнаружить поражение. Однако оказывается, что человек А на самом деле сделал два КТ-сканирования, и если второе сканирование будет помещено в проверочный или тестовый набор данных, модель может работать лучше, чем ожидалось, из-за просмотра похожих изображений. Это может привести к переоценке производительности модели.

2. Специфичность. Когда есть несколько точек данных, которые значительно отличаются, может быть желательно отнести их к тестовому набору. Если у вас есть 100 изображений и 5 из них имеют другой размер пикселя по сравнению с остальными 90, и вы назначаете эти 5 изображений обучающему набору, модель может плохо изучить особенности этих 5 изображений из-за их небольшого количества по сравнению с остальными 90. остальные 90 изображений в обучающем наборе. При оценке производительности модели может быть трудно обнаружить, что модель плохо работает с определенными размерами пикселей, если несколько изображений с разными размерами пикселей включены в обучающий набор и не разделены на определенный набор для тестирования.

И тогда случается трагедия. Когда мы позволяем нашим клиентам или партнерам уверенно использовать нашу модель, они могут обнаружить, что производительность очень низкая для изображений с определенным размером пикселей. Если нам повезет, они спокойно дадут нам обратную связь. Если нет, то нас спросят, почему мы сначала не проверили данные или не указали проблему в отчете. Это может заставить клиентов или партнеров почувствовать, что мы что-то скрываем, или подумать, что мы невнимательны.

Эти два сценария, которые я упомянул, могут существенно повлиять на производительность модели при оценке небольшого набора данных. Обе эти ситуации требуют наблюдения за данными перед их разделением, и очистка данных имеет важное значение.

Вот некоторые проверки, которые следует выполнить перед выполнением разделения данных, чтобы обеспечить успешный эксперимент по машинному обучению:

  • Несбалансированное распределение данных. Когда метки в наборе данных несбалансированы, если данные неравномерно распределены по всем наборам при разделении данных, это может привести к смещению модели и невозможности изучить все функции категорий.
  • Утечка данных. Использование информации, связанной с обучением или тестированием модели, в наборе данных может привести к снижению производительности в реальной производственной среде. Например, нормализовать или стандартизировать весь набор данных перед его разделением на наборы для обучения и тестирования или выполнить выбор признаков в наборе для обучения и применить тот же выбор признаков к набору для тестирования.
  • Размер набора данных. Размер набора данных оказывает существенное влияние на эффективность обучения и тестирования модели. Если набор данных слишком мал, это может привести к переоснащению и повлиять на способность модели к обобщению. Если набор данных слишком велик, время обучения и тестирования может увеличиться. Размер набора данных также влияет на тип разбиения данных, который вы можете использовать, например, стратегию исключения одного для небольших наборов данных.
  • Качество набора данных. Если в наборе данных есть шум, выбросы или отсутствующие значения, это повлияет на производительность и прогностическую способность модели. Перед разделением набора данных данные необходимо предварительно обработать, чтобы обеспечить качество набора данных.
  • Неправильная маркировка набора данных. Неправильная маркировка набора данных может привести к снижению прогностической эффективности модели. Перед разделением набора данных необходимо проверить правильность маркировки в наборе данных.

Заключение

Хотя все упомянутое выше кажется очевидным и разумным, исходя из моего прошлого опыта, даже старшие инженеры часто сталкиваются с неудачами в разработке или экспериментировании из-за отсутствия внимания к деталям в начале. Даже некоторые продукты платформы обучения ИИ не обращают внимания на некоторые детали, которые могут привести к неправильной оценке производительности модели.

Больнее всего, когда на собрании все обсуждают неправильные выводы, основанные на ошибочных экспериментах, а мое выражение такое:

И вот прошла еще неделя.