Дело о принудительном применении схемы и обнаружении дрейфа, пока не стало слишком поздно
Примечание редактора. Обязательно ознакомьтесь с полным сеансом рабочего времени, посвященным всем данным, на нашем канале YouTube.
Что делает прикладное машинное обучение таким интересным, так это то же самое, что делает его таким разочаровывающим — данные.
Распределение данных в реальном мире постоянно меняется. Меняются методологии сбора данных, могут меняться столбцы в данных, может меняться статистическое распределение признаков, или признак, который ранее был прогностическим, может внезапно оказаться бесполезным. Тщательное документирование ваших предположений может помочь прояснить, откуда берутся некоторые из этих проблем, но ничего не гарантирует будущее.
Потому что запись ваших предположений не означает, что придет время и не нарушит каждое из них.
Энтропия реальна, друзья мои.
Часто вы узнаете о проблемах с данными только тогда, когда уже слишком поздно.
Модели, как правило, молчат о проблемах с данными. Они счастливы молча терпеть неудачу, пока запаниковавший инженер не поймет, что что-то не так. Это резко контрастирует с традиционной разработкой программного обеспечения, где критические изменения часто обнаруживаются с помощью модульных тестов или интеграционных тестов.
Модульный тест — это уровень тестирования программного обеспечения, на котором поведение программного компонента проверяется на предмет правильной функциональности.
Как мы можем применить эту концепцию к данным в машинном обучении? Идеальный набор тестов должен предоставить вам следующую информацию:
- Предположения, сделанные о данных.
- Какие предположения нарушены.
- Для тех нарушенных предположений, когда это произошло и в какой степени.
- Примеры пакетов данных, которые нарушают предположения.
Практика тестирования данных менее распространена и представляет собой уникальный набор проблем.
Что делает данные модульного тестирования такими уникальными?
Данные модульного тестирования уникальны как минимум по двум причинам:
- Случаи прохождения/непрохождения не определены четко.
- Нестабильность — это особенность наборов данных.
Давайте рассмотрим их более подробно.
Случаи прохождения/непрохождения определены нечетко
Трудно провести четкое разделение между хорошими и плохими данными.
Например, у вас может быть столбец в ваших данных, где 75% значений равны NULL. Увеличение этой пропорции с течением времени может не иметь значения для вашего нижестоящего конвейера. Возможно, вы просто игнорируете этот столбец для моделирования.
Если вы четко не определите, как выглядит неудачный тестовый пример, вы не узнаете, есть ли истинная причина для беспокойства.
Неоднородность — это особенность тестов данных
Модульные тесты программного обеспечения не пройдут, если где-то в кодовой базе будет сделано критическое изменение.
Тесты данных могут завершиться неудачно, даже если ничего не изменится в коде или конвейере. Если у вас нет процесса проверки, данные с ошибками могут проникнуть незаметно. Вы можете найти один и тот же тест пройденным или не пройденным в зависимости от частоты вашего тестирования.
Вот почему важно иметь представление о серьезности нарушения при выполнении теста.
Поврежденные данные являются наиболее распространенной причиной проблем в производственных системах машинного обучения.
Вся правда о производительности моделей
По мере того, как в производство внедрялось все больше моделей, стало ясно, что постоянное управление данными имеет решающее значение для поддержания производительности модели.
Проблемы с данными являются серьезной проблемой для моделей, находящихся в производстве.
Потому что на производстве эти проблемы становятся гораздо более заметными. Это связано с тем, что производительность модели сильно связана с качеством данных. Подача данных мусора модели приведет к предсказаниям мусора. Вот почему возможность быстро оценить состояние ваших данных так важна.
Ни один алгоритм не застрахован от чумы плохих данных.
Незначительные изменения и ошибки в восходящих конвейерах данных могут привести к постепенному снижению производительности вашей модели. Эти типы проблем необходимо выявлять на ранней стадии, прежде чем они смогут повлиять на производительность модели последующего потока.
Таким образом, раннее обнаружение ошибок данных важно, так как это помогает отладить основную причину, а также откатить конвейер до рабочего состояния.
Автоматическая проверка ваших данных гарантирует, что ваша организация имеет доступ к четкому источнику достоверной информации о качестве данных, поступающих в ваши производственные модели.
Введите: проверка данных
Проверка данных включает в себя попытку понять потенциальные проблемы, с которыми вы можете столкнуться, и обычно включает три типа проверок.
Во-первых, убедитесь, что в ваших данных нет точек данных, которые отклоняются от того, что является стандартным, нормальным или ожидаемым. Во-вторых, проверка того, что схема данных не изменилась. И, в-третьих, проверка соответствия статистических свойств ваших производственных данных данным обучения.
Основным компонентом для выполнения этих проверок является схема набора данных.
Перекос схемы возникает, когда обучающие и обслуживающие данные не соответствуют одной и той же схеме. Вы можете подумать, что это никогда не произойдет, но на самом деле это может произойти, потому что вы собираете данные, и все меняется, и вдруг вы получаете целое число вместо числа с плавающей запятой или строку вместо категории.
Схема кодирует то, что вы считаете верным в своих данных, и автоматически проверяет новые данные, когда они становятся доступными. Эта схема будет включать такие ожидания, как:
- Ожидаемый формат данных.
- Ожидаемые функции/столбцы и их типы.
- Диапазон значений, которые, как ожидается, будут принимать эти функции.
- Любые ограничения внутри или между этими значениями.
- Другие традиционные и условные ограничения целостности данных от управления базами данных.
Когда в вашу систему поступают новые данные, они автоматически проверяются на соответствие этой схеме, защищая вашу модель от несогласованных или ошибочных данных.
Большие надежды — многообещающий инструмент для создания схемы данных (называемой Ожидания), профилирования данных, проверки данных и документирования данных. Это набор для тестирования с батарейками, который предоставляет инструмент командной строки и Python API для создания схем данных, запуска тестов данных и отображения результатов тестов в виде HTML-файла.
Что услышать от Больших надежд напрямую? Присоединяйтесь к нам в рабочие часы в эту среду в 11:00 по восточному стандартному времени для нашего интервью толстокожего и больших ожиданий.
С помощью «Больших надежд» вы можете определить следующее:
- Ожидание. Ожидания — это утверждения о ваших данных. Вы можете добавлять утверждения, которые выражены на декларативном языке в виде простых, удобочитаемых методов Python. Например, чтобы утверждать, что вы хотите, чтобы столбец «passenger_count» был между 1 и 6, вы можете сказать:
ge_df.expect_column_values_to_be_between(column="passenger_count", min_value=1, max_value=6)
- Набор ожиданий. Набор ожиданий относительно данных, также известный как схема данных, который хранится в виде файла JSON.
- Документы данных:Great Expectations преобразует Expectations в чистую, удобочитаемую документацию, которая называется Data Docs. Эти HTML-документы содержат результаты проверки ваших данных каждый раз, когда выполняется проверка — думайте об этом как об отчете о качестве данных.
- Источники данных. Источник данных — это основной способ настройки доступа к данным в Great Expectations. Это простой слой метаданных, который добавляет информацию о базе данных, которую вы предоставляете для Great Expectations во время выполнения. Он может даже обрабатывать одно или несколько подключений к внешним источникам данных, включая идентификацию доступных активов и пакетов данных.
- Пакет. Пакет — это ссылка на набор данных с метаданными о нем. Пакет — это основной строительный блок для доступа к данным с помощью Great Expectations, но не сами данные. Создание пакета не обязательно «извлекает» данные путем немедленного выполнения запроса или извлечения данных в память. Вместо этого подумайте о пакете как о оболочке, которая включает в себя информацию, которая вам понадобится для получения правильных данных, когда придет время для проверки.
Если вам интересно увидеть Большие надежды в действии с кодом, посмотрите здесь.
Когда у вас есть схема, вы можете разработать лист данных для рассмотрения аспектов данных, которые труднее передать, таких как мотивация, состав, процесс сбора, рекомендуемое использование и применимость данных.
Допустим, объект в вашем необработанном наборе данных может содержать только значения NaN. Вы удаляете его как часть конвейера разработки функций. Несколько месяцев спустя приходят новые данные, и эта функция больше не заполняется NaN. Поскольку ваш конвейер отказывается от этой функции, вы никогда не обнаружите изменения. Тестируя схему данных, мы предоставляем нашей системе способ сигнализировать о том, что ваш конвейер, возможно, придется пересмотреть.
Схема данных для машинного обучения во многом совпадает с традиционной схемой базы данных.
И схемы, и листы данных предназначены для обеспечения формата и согласованности данных, поступающих в вашу систему. Ключевое отличие: схема данных для системы машинного обучения также будет содержать информацию, связанную со статистическими свойствами данных. Статистические свойства бывают трех видов: сдвиг набора данных, ковариатный сдвиг и сдвиг концепции.
Роберт Лоу описывает эти проблемы следующим образом:
- Сдвиг набора данных происходит, когда совместное распределение вероятностей функций и целей не совпадает во время обучения и обслуживания.
- Ковариативный сдвиг происходит, когда происходит изменение распределения входных переменных между обучающими и обслуживающими данными.
- Сдвиг понятия отражает изменение отношения между входными и выходными переменными.
Хотя эти типы перекосов кажутся сложными, Роберт Лоу излагает простую схему для обнаружения этих типов проблем:
- Изучите данные обучения, рассчитайте базовую статистику и задокументируйте ее схему.
- Соберите ту же информацию для данных в производственной/обслуживающей среде и создайте описательную статистику.
- Сравните данные обучения с тем, что вы видите в рабочей среде, изучите базовую статистику обслуживания и проверьте наличие различий между этими данными и вашими данными обучения. Вы заметили перекос или дрейф?
- Любые существенные изменения указывают на то, что вы столкнулись с аномальными данными.
- Инициировать оповещение, которое будет отправлено тому, кто контролирует систему. Это может быть человек или другая система, которая выберет наилучший план действий.
Краткое содержание
Данные и их качество необходимы для создания отличных моделей машинного обучения. Как практики, мы должны иметь дело с данными из различных источников, которые страдают от 4I неверных данных:
- Неточный
- Неточный
- непоследовательный
- Неполный
Или любые другие бесчисленные формы проблем с качеством данных.
Но мы можем бороться с этими проблемами, уделяя время профилированию, изучению, пониманию и проверке наших данных. Делая это, мы оказываемся в лучшем положении для определения систем для очистки наших данных и механизмов для обеспечения согласованности схем. Все это необходимо, чтобы избежать проблемы «мусор на входе, мусор на выходе».
Имея согласованную схему и оповещения для отслеживания различных видов дрейфа, мы можем гарантировать, что наши модели продолжают приносить пользу нашим заинтересованным сторонам и конечным пользователям.
Примечание редактора. Heartbeat — это интернет-издание и сообщество, созданное участниками и посвященное предоставлению лучших образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.
Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.
Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn, чтобы получать ресурсы, события и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.