Простые проверки работоспособности данных, которые могут спасти вас от боли!

Распространенность ярлыков

Распространенность – это доля экземпляров в популяции, имеющих определенный ярлык или атрибут.

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

Данные и функции перекрываются:

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

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

Линтинг функций

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

В типичной настройке машинного обучения у вас есть ограниченные типы функций —

  • числовой
  • текст
  • категоричный
  • вложения
  • взвешенная категоричность: вы поняли!

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

  • Нулевой счетчик для столбцов функций, допускающих значение NULL.
  • Выбросы по типу. Например, пустая строка для текстовых функций, плюсы, нули и минусы для столбцов числовых функций, которые могут принимать только положительные числа.
  • Среднее количество токенов в столбцах текстовых функций.
  • Категории присутствуют для категориальных признаков.
  • Размерность встраивания, количество нулевых значений во встраивании.

Подготовьте правила lint для статистики функций, например:

  • сообщать, если значения ≥25% для типа столбца признаков равны нулю.
  • сообщать, если ≥25% значений в столбце функции внедрения равны нулю.
  • сообщать, если ≥25% столбца функций текстового типа содержит ≤x токенов.
  • сообщить, есть ли в категориях для дня функций 7 полей в наборе поездов, но только 5 в тесте.

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

Проверитьпредвзятость прогноза

смещение прогноза = среднее (прогнозы) - среднее (метки)

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

Если систематическая ошибка прогноза высока, калибровка позволяет это исправить. Но потратьте некоторое время на то, чтобы исключить очевидные проблемы с подготовкой данных, ведущие к такому предвзятому прогнозу. См.
https://developers.google.com/machine-learning/crash-course/classification/prediction-bias о том, как выполнять анализ сегментов ваших прогнозов.

Заключение

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

Ссылки для дальнейшего чтения

[1] https://developers.google.com/machine-learning/crash-course/classification/prediction-bias

[2] The Data Linter: облегченная автоматизированная проверка работоспособности для наборов данных машинного обучения, автор Nicholas Hynes, D. Скалли, Майкл Терри.