Почему важно создавать наборы данных для машинного обучения (ML)

Происходит что-то экстраординарное.

Входной барьер в мир алгоритмов становится все ниже с каждым днем. Это означает, что любой человек с правильной целью и навыками может найти отличные алгоритмы для задач машинного обучения (МО) и искусственного интеллекта (ИИ) — компьютерного зрения, обработки естественного языка, рекомендательных систем или даже автономного вождения.

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

Но качественные данные есть. Наборы данных — должным образом отобранные и помеченные — остаются дефицитным ресурсом.

Рис. 1: слишком много алгоритмов, но плохой набор данных

Заинтересованы в рабочей станции с искусственным интеллектом?

Ускорьте свои исследования в области машинного обучения с помощью решения Exxact, начиная примерно с 5 500 долларов США

Хорошие данные сложны даже для базовых задач машинного обучения

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

Каждая область применения сталкивается со своей проблемой получения подходящих данных, необходимых для обучения высокопроизводительных моделей машинного обучения. Например, для LiDAR для автономных транспортных средств требуется специальный набор данных 3D-облака точек для идентификации объектов и семантической сегментации, который чрезвычайно сложно маркировать.

Рис. 2. Набор данных трехмерного облака точек LiDAR — чрезвычайно сложно разметить вручную для обучения. Изображение по материалам этой газеты

Однако даже иметь доступ к качественным наборам данных для тестирования базовых алгоритмов машинного обучения и разработки идей является проблемой. Допустим, инженер машинного обучения учится с нуля. Самым разумным советом было бы начать с простых мелкомасштабных наборов данных, которые он/она может построить в двух измерениях, чтобы визуально понять закономерности и интуитивно увидеть внутреннюю работу алгоритма машинного обучения. Однако по мере роста объемов данных визуальное суждение должно распространяться на более сложные вопросы — такие понятия, как обучение и сложность выборки, эффективность вычислений, несбалансированность классов и т. д.

Рис. 3. Изучение данных и моделей машинного обучения начинается с простого, а затем расширяется. Набор данных тоже должен развиваться.

Синтетические наборы данных в помощь

Всегда можно найти реальный набор данных или сгенерировать точки данных, экспериментируя, чтобы оценить и настроить алгоритм машинного обучения. Однако с фиксированным набором данных имеется фиксированное количество выборок, фиксированный базовый шаблон и фиксированная степень разделения классов между положительными и отрицательными выборками. Есть много аспектов алгоритма ML, которые нельзя протестировать или оценить с таким фиксированным набором данных. Вот некоторые примеры:

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

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

Особенности хорошего набора данных для машинного обучения (синтетического или реального)

В то время как синтетический набор данных генерируется программно, реальные наборы данных собираются из самых разных источников — социальных или научных экспериментов, истории лечения, данных о деловых транзакциях, просмотров веб-страниц, показаний датчиков или ручной маркировки изображений, сделанных автоматическими камерами или Лидар. Независимо от источника, всегда есть некоторые желательные функции для набора данных, которые могут быть полезны для разработки алгоритма ML и настройки производительности.

Вот некоторые примеры,

  • Он должен содержать сочетание числовых, двоичных или категориальных (порядковых или непорядковых) функций, а количество функций и длина набора данных должны быть нетривиальными.
  • Для синтетических данных случайный шум следует вводить управляемым образом.
  • Должна быть какая-то степень случайности.
  • Если синтетические — пользователь должен иметь возможность выбирать широкий спектр статистических распределений для генерации этих данных, т. е. лежащий в основе случайный процесс/параметры можно точно контролировать и настраивать.
  • Если он используется для алгоритмов классификации, то степень разделения классов должна быть достаточной для достижения приемлемой точности классификации, но также и не слишком большой, чтобы сделать проблему тривиальной. Для синтетических данных это должно контролироваться, чтобы упростить или усложнить задачу обучения.
  • Скорость генерации должна быть достаточно высокой, чтобы можно было экспериментировать с большим разнообразием таких наборов данных для любых конкретных алгоритмов машинного обучения. должен быть вычислительно эффективным
  • Для реальных наборов данных затраты на создание данных должны быть низкими, а процесс должен быть ресурсоэффективным, чтобы обучение машинному обучению не перегружало бизнес-цели.
  • Для задачи регрессии можно использовать сложный нелинейный генеративный процесс для получения данных — в этом могут помочь реальные физические модели или компьютерное моделирование физических процессов.

Регрессия, классификация и создание набора данных кластеризации для машинного обучения

Scikit-learn — самая популярная библиотека машинного обучения в стеке программного обеспечения на основе Python для обработки данных. Помимо хорошо оптимизированных процедур машинного обучения и методов построения конвейера, он также может похвастаться солидной коллекцией служебных методов для создания синтетических данных. Мы можем создавать самые разные наборы данных для регулярного обучения и настройки алгоритмов машинного обучения.

Рис. 4. Наборы регрессионных данных, созданные с помощью Scikit-learn.

Рис. 5. Наборы данных классификации, созданные с помощью Scikit-learn.

Рис. 6. Кластеризация наборов данных, созданных с помощью Scikit-learn.

Рис. 7. Нелинейные наборы данных для тестирования алгоритмов на основе ядра.

Модели гауссовской смеси

Модели смесей Гаусса (GMM) — увлекательные объекты для изучения. Они широко используются в области неконтролируемого обучения и тематического моделирования для массовых задач обработки текста / НЛП. Даже алгоритмы автономного вождения и роботизированной навигации имеют множество применений. С минимальным объемом кода можно создавать интересные наборы данных, имитирующие процесс GMM произвольной формы и сложности.

Вот несколько примеров синтетических данных:

Рис. 8. Наборы данных смешанной модели Гаусса, созданные синтетическим путем.

Генерация набора данных из символьных выражений

Часто может потребоваться контролируемый способ создания наборов данных ML на основе четко определенной функции (включая линейные, нелинейные, рациональные или даже трансцендентные термины).

Например, вы можете захотеть оценить эффективность различных ядерных классификаторов SVM для наборов данных со все более сложными разделителями (от линейных к нелинейным) или продемонстрировать ограничения линейных моделей для наборов данных, сгенерированных рациональными или трансцендентными функциями. Комбинируя возможности генерации случайных переменных и библиотек обработки символьных выражений, таких как SymPy, вы можете создавать интересные наборы данных, соответствующие определяемым пользователем функциям.

Рис. 9. Наборы данных, сгенерированные символьной функцией, для расширенного тестирования алгоритма машинного обучения.

Генерация данных временных рядов/аномалий для промышленных задач

Анализ временных рядов имеет множество полезных применений в современных промышленных условиях, где множество датчиков создают нескончаемый поток цифровых данных от машин, заводов, операторов и бизнес-процессов. Такой цифровой выхлоп является основной особенностью революции Industry 4.0.

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

Эта статья углубляется в эту идею и показывает несколько примеров: Создание синтетических временных рядов с сигнатурами аномалий в Python.

Рис. 10. Основной процесс создания наборов данных временных рядов в промышленных приложениях.

Можно генерировать аномалии разного масштаба,

Рис. 11. Временные ряды с аномалиями разного масштаба.

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

Рис. 12. Наборы данных временных рядов с аномалиями и дрейфом данных вместе.

Увеличение данных изображения для машинного обучения

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

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

По сути, наборы данных изображений различной глубины и сложности могут быть созданы из некоторых исходных высококачественных изображений с использованием методов увеличения:

Рис. 13. Увеличение данных изображения для создания обширных и надежных наборов данных для обучения глубокому обучению.

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

Рис. 14. Увеличение данных изображения с добавлением различных шумовых каналов.

Краткое содержание

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

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

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