Наборы данных: характеристики данных

Набор данных — это набор примеров .

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

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

Типы данных

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

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

Количество данных

Грубое практическое правило: ваша модель должна обучаться как минимум на порядок (или два) больше примеров, чем обучаемые параметры. Однако хорошие модели обычно обучаются на значительно большем количестве примеров.

Модели, обученные на больших наборах данных с небольшим количеством функций , обычно превосходят модели, обученные на небольших наборах данных с большим количеством функций. Google исторически добился больших успехов в обучении простых моделей на больших наборах данных.

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

Можно получить хорошие результаты с небольшим набором данных, если вы адаптируете существующую модель, уже обученную на больших объемах данных из той же схемы.

Качество и надежность данных

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

Высококачественный набор данных поможет вашей модели достичь своей цели. Набор данных низкого качества мешает вашей модели достичь своей цели.

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

При измерении надежности необходимо определить:

  • Насколько распространены ошибки в этикетках? Например, если ваши данные размечаются людьми, как часто ваши оценщики допускали ошибки?
  • Ваши функции шумные ? То есть содержат ли значения ваших функций ошибки? Будьте реалистами: вы не можете очистить свой набор данных от всего шума. Некоторый шум является нормальным; например, измерения GPS в любом месте всегда немного колеблются от недели к неделе.
  • Правильно ли фильтруются данные для решения вашей проблемы? Например, должен ли ваш набор данных включать поисковые запросы от ботов? Если вы создаете систему обнаружения спама, то, скорее всего, ответ — да. Однако если вы пытаетесь улучшить результаты поиска для людей, то нет.

Ниже приведены распространенные причины ненадежности данных в наборах данных:

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

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

Полные и неполные примеры

В идеальном мире каждый пример является полным ; то есть каждый пример содержит значение для каждой функции.

Рисунок 1. Пример, содержащий значения для всех пяти функций.
Рисунок 1. Полный пример.

К сожалению, реальные примеры часто неполны , а это означает, что по крайней мере одно значение функции отсутствует.

Рисунок 2. Пример, содержащий значения для четырех из пяти функций. Одна функция отмечена как отсутствующая.
Рисунок 2. Неполный пример.

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

  • Удалите неполные примеры.
  • Вменить недостающие значения; то есть преобразовать неполный пример в полный, предоставив обоснованные предположения для отсутствующих значений.
Рисунок 3. Набор данных, содержащий три примера, два из которых являются неполными. Кто-то удалил эти два неполных примера из набора данных.
Рисунок 3. Удаление неполных примеров из набора данных.

Рисунок 4. Набор данных, содержащий три примера, два из которых были неполными и содержали недостающие данные. Какой-то объект (человек или программное обеспечение для вменения) вменил значения, которые заменили отсутствующие данные.
Рисунок 4. Вменение пропущенных значений для неполных примеров.

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

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


Одним из распространенных алгоритмов является использование среднего значения или медианы в качестве вмененного значения. Следовательно, когда вы представляете числовой признак с помощью Z-показателей , вмененное значение обычно равно 0 (поскольку 0 обычно является средним Z-показателем).

Упражнение: Проверьте свое понимание.

Вот два столбца набора данных, отсортированных по Timestamp .

Временная метка Температура
8 июня 2023 09:00 12
8 июня 2023 г. 10:00 18
8 июня 2023 г. 11:00 отсутствующий
8 июня 2023 г. 12:00 24
8 июня 2023 13:00 38

Какое из следующих значений было бы разумно приписать недостающему значению температуры ?

23
Вероятно. 23 — это среднее значение соседних значений (12, 18, 24 и 38). Однако мы не видим остальную часть набора данных, поэтому вполне возможно, что 23 будет отклонением для 11:00 в другие дни.
31
Маловероятно. Ограниченная часть набора данных, которую мы видим, предполагает, что 31 слишком много для температуры 11:00. Однако мы не можем быть уверены в этом, не опираясь на большее количество примеров.
51
Очень маловероятно. 51 намного выше любого из отображаемых значений (и, следовательно, намного выше среднего).