Цель
После более чем двухлетнего опыта работы я столкнулся с разными коллегами на рабочем месте, которые допускали ошибки при разбиении данных из-за невнимательности во время экспериментов, что приводило к проблемам с результатами анализа. Поэтому я хотел бы написать статью, чтобы напомнить себе и другим, чтобы избежать подобных ошибок. Если вы уже знакомы с процессом машинного обучения, можете сразу перейти к разделу о подводных камнях.
руководство
Выполнение правильного разделения данных — важный шаг в машинном обучении, который может существенно повлиять на производительность вашей модели. Вот несколько советов по правильному разделению данных:
- Произвольное разделение данных. Хорошее разделение данных должно быть случайным, чтобы каждое подмножество представляло всю совокупность данных. Случайное разбиение гарантирует, что обучающие, проверочные и тестовые наборы содержат разные примеры из совокупности и что модель учится обобщать, а не запоминать обучающий набор.
- Стратифицируйте данные. Если в ваших данных есть несбалансированные классы, важно провести стратификацию данных во время разделения. Стратификация гарантирует, что каждое подмножество содержит репрезентативную выборку каждого класса в данных, что снижает риск переоснащения или недообучения модели.
- Используйте соответствующий коэффициент разделения: размер наборов для обучения, проверки и тестирования будет зависеть от размера вашего набора данных и сложности проблемы, которую вы пытаетесь решить. Обычное разделение составляет 80 % для обучения, 10 % для проверки и 10 % для тестирования, но другие соотношения могут быть более подходящими для вашей конкретной проблемы.
- Рассмотрим перекрестную проверку: перекрестная проверка — это метод, который включает в себя многократное разделение данных и обучение модели на разных подмножествах данных. Перекрестная проверка может помочь смягчить переобучение и обеспечить устойчивость модели к вариациям данных.
- Будьте последовательны: важно использовать одно и то же разделение данных для каждой модели, которую вы обучаете, чтобы вы могли точно сравнивать их производительность. Это означает, что вы не должны изменять коэффициент разделения или методологию между моделями.
Подводные камни
- Информация, позволяющая установить личность. Если ваши данные содержат информацию, позволяющую установить личность, данные, принадлежащие одному и тому же удостоверению, должны быть помещены в один и тот же набор. Эта ситуация обычно распространена в медицинских изображениях или данных изображений, связанных с человеческими лицами. Допустим, модель обучается на КТ-изображениях человека А, и модель способна обнаружить поражение. Однако оказывается, что человек А на самом деле сделал два КТ-сканирования, и если второе сканирование будет помещено в проверочный или тестовый набор данных, модель может работать лучше, чем ожидалось, из-за просмотра похожих изображений. Это может привести к переоценке производительности модели.
2. Специфичность. Когда есть несколько точек данных, которые значительно отличаются, может быть желательно отнести их к тестовому набору. Если у вас есть 100 изображений и 5 из них имеют другой размер пикселя по сравнению с остальными 90, и вы назначаете эти 5 изображений обучающему набору, модель может плохо изучить особенности этих 5 изображений из-за их небольшого количества по сравнению с остальными 90. остальные 90 изображений в обучающем наборе. При оценке производительности модели может быть трудно обнаружить, что модель плохо работает с определенными размерами пикселей, если несколько изображений с разными размерами пикселей включены в обучающий набор и не разделены на определенный набор для тестирования.
И тогда случается трагедия. Когда мы позволяем нашим клиентам или партнерам уверенно использовать нашу модель, они могут обнаружить, что производительность очень низкая для изображений с определенным размером пикселей. Если нам повезет, они спокойно дадут нам обратную связь. Если нет, то нас спросят, почему мы сначала не проверили данные или не указали проблему в отчете. Это может заставить клиентов или партнеров почувствовать, что мы что-то скрываем, или подумать, что мы невнимательны.
Эти два сценария, которые я упомянул, могут существенно повлиять на производительность модели при оценке небольшого набора данных. Обе эти ситуации требуют наблюдения за данными перед их разделением, и очистка данных имеет важное значение.
Вот некоторые проверки, которые следует выполнить перед выполнением разделения данных, чтобы обеспечить успешный эксперимент по машинному обучению:
- Несбалансированное распределение данных. Когда метки в наборе данных несбалансированы, если данные неравномерно распределены по всем наборам при разделении данных, это может привести к смещению модели и невозможности изучить все функции категорий.
- Утечка данных. Использование информации, связанной с обучением или тестированием модели, в наборе данных может привести к снижению производительности в реальной производственной среде. Например, нормализовать или стандартизировать весь набор данных перед его разделением на наборы для обучения и тестирования или выполнить выбор признаков в наборе для обучения и применить тот же выбор признаков к набору для тестирования.
- Размер набора данных. Размер набора данных оказывает существенное влияние на эффективность обучения и тестирования модели. Если набор данных слишком мал, это может привести к переоснащению и повлиять на способность модели к обобщению. Если набор данных слишком велик, время обучения и тестирования может увеличиться. Размер набора данных также влияет на тип разбиения данных, который вы можете использовать, например, стратегию исключения одного для небольших наборов данных.
- Качество набора данных. Если в наборе данных есть шум, выбросы или отсутствующие значения, это повлияет на производительность и прогностическую способность модели. Перед разделением набора данных данные необходимо предварительно обработать, чтобы обеспечить качество набора данных.
- Неправильная маркировка набора данных. Неправильная маркировка набора данных может привести к снижению прогностической эффективности модели. Перед разделением набора данных необходимо проверить правильность маркировки в наборе данных.
Заключение
Хотя все упомянутое выше кажется очевидным и разумным, исходя из моего прошлого опыта, даже старшие инженеры часто сталкиваются с неудачами в разработке или экспериментировании из-за отсутствия внимания к деталям в начале. Даже некоторые продукты платформы обучения ИИ не обращают внимания на некоторые детали, которые могут привести к неправильной оценке производительности модели.
Больнее всего, когда на собрании все обсуждают неправильные выводы, основанные на ошибочных экспериментах, а мое выражение такое:
И вот прошла еще неделя.