Поделиться через


Подготовка и обработка данных в мозаике AutoML

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

Поддерживаемые типы функций данных

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

Поддерживаются следующие типы функций:

  • Числовые (ByteType, ShortType, IntegerType, LongType, FloatType и DoubleType)
  • Логический
  • Строковые (категориальные или текст на английском языке)
  • Метки времени (TimestampType, DateType)
  • ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML и более поздних версий)
  • DecimalType (Databricks Runtime 11.3 LTS ML и более поздней версии)

Выбор столбца

Примечание.

Эта функция доступна только для проблем классификации и регрессии.

В Databricks Runtime 10.3 ML и более поздних версий можно указать, какие столбцы AutoML следует использовать для обучения. Чтобы исключить столбец в пользовательском интерфейсе, снимите флажок в столбце "Включить ". В API используйте exclude_cols параметр. Дополнительные сведения см . в справочнике по API Python для Мозаики AutoML.

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

По умолчанию включаются все столбцы.

Аппроксимация отсутствующих значений

В Databricks Runtime 10.4 LTS ML и более поздних версий можно указать способ подстановки для значений NULL. В пользовательском интерфейсе выберите метод из раскрывающегося списка в столбце Подстановка в схеме таблицы. В API используйте imputers параметр. Дополнительные сведения см . в справочнике по API Python для Мозаики AutoML.

По умолчанию AutoML выбирает метод добавления отсутствующих данных на основе типа и содержимого столбца.

Примечание.

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

Разделение данных на наборы обучения, проверки и тестирования

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

Разделение данных для регрессии и классификации

Используйте следующие методы, чтобы разделить данные на наборы для обучения, проверки и тестирования для задач регрессии и классификации:

(По умолчанию) Случайное разделение: если стратегия разделения данных не указана, набор данных случайным образом разбивается на 60% разделения, 20% проверяет разделение и 20% разбиение теста. Для классификации стратифицированное случайное разделение гарантирует, что каждый класс достаточно представлен в наборах для обучения, проверки и тестирования.

Хронологическое разделение: в Databricks Runtime 10.4 LTS ML и выше можно выбрать столбец времени для создания хронологического обучения, проверки и тестирования разбиений. Хронологические разделения используют самые ранние точки данных для обучения, следующий самый ранний срок для проверки и последние точки для тестирования. Столбец времени может быть меткой времени, целым числом или строковым столбцом.

Разделение вручную. В Databricks Runtime 15.3 ML и более поздних версиях можно использовать API для настройки разделения вручную. Укажите разделенный столбец и используйте значения trainvalidateили test определить строки, которые необходимо использовать для обучения, проверки и тестирования наборов данных. Все строки с разделенными значениями столбцов, отличные trainот , testили validate игнорируются, и вызывается соответствующее оповещение.

Разделение данных для прогнозирования

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

Количество сверток перекрестной проверки зависит от характеристик входной таблицы, таких как количество временных рядов, наличие ковариатов и длина временных рядов.

Выборка больших наборов данных

Примечание.

Выборка не применяется к задачам прогнозирования.

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

AutoML автоматически оценивает объем памяти, необходимый для загрузки и обучения набора данных, и при необходимости производит выборку набора данных.

В Databricks Runtime 9.1 LTS ML через Databricks Runtime 10.4 LTS ML доля выборки не зависит от типа узла кластера или объема памяти на каждом узле.

В Databricks Runtime 11.x ML:

  • Доля выборки увеличивается для рабочих узлов с большим объемом памяти на каждое ядро. Можно увеличить размер выборки, выбрав тип экземпляра, оптимизированный для операций в памяти.
  • Вы можете дополнительно увеличить размер выборки, выбрав увеличенное значение для spark.task.cpus в конфигурации Spark для кластера. Значение по умолчанию — 1. Максимальное значение — это число ЦП в рабочем узле. При увеличении этого значения размер выборки будет увеличен, но параллельно будет выполняться меньше пробных запусков. Например, на компьютере с четырьмя ядрами и 64 ГБ общей ОЗУ по умолчанию spark.task.cpus=1 выполняется четыре пробные версии на рабочую роль, при этом каждая пробная версия ограничена 16 ГБ ОЗУ. Если задано spark.task.cpus=4, каждая рабочая роль выполняет только одну пробную версию, но эта пробная версия может использовать 64 ГБ ОЗУ.

В Databricks Runtime 12.2 LTS ML и более поздних версиях AutoML может обучать большие наборы данных, распределив больше ядер ЦП на задачу обучения. Вы можете увеличить размер выборки, выбрав размер экземпляра с большей суммой памяти.

В Databricks Runtime 11.3 LTS ML и более поздних версиях, если AutoML образец набора данных, доля выборки отображается на вкладке "Обзор " в пользовательском интерфейсе.

Для проблем классификации AutoML использует метод PySpark sampleBy для стратифицированной выборки для сохранения распределения целевых меток.

Для проблем регрессии AutoML использует метод PySpark.sample

Поддержка несбалансированного набора данных для проблем классификации

В Databricks Runtime 11.3 LTS ML и более поздних версиях, если AutoML обнаруживает, что набор данных несбалансирован, он пытается уменьшить дисбаланс набора обучающих данных путем снижения уровня основных классов и добавления весов класса. AutoML балансирует только обучающий набор данных и не балансирует наборы данных тестирования и проверки. Это гарантирует, что производительность модели всегда оценивается в необогащенном наборе данных с истинным распределением входных классов.

Чтобы сбалансировать несбалансированный набор данных для обучения, AutoML использует весы классов, которые обратно связаны с степенью уменьшения нагрузки заданного класса. Например, если набор данных для обучения с 100 выборками содержит 95 выборок, принадлежащих к классу A и пять примеров, принадлежащих классу B, AutoML уменьшает этот дисбаланс путем уменьшения числа выборок A до 70 выборок, то есть снижение уровня A на 70/95 или 0,736 при сохранении количества выборок в классе B на 5. Чтобы убедиться, что окончательная модель правильно откалибрирована и распределение вероятностей выходных данных модели совпадает с входными данными, AutoML масштабирует вес класса A по соотношению 1/0,736 или 1,358, сохраняя вес класса B как 1. Затем AutoML использует эти весы классов в обучении моделей в качестве параметра, чтобы убедиться, что выборки из каждого класса взвешиваются соответствующим образом при обучении модели.

Агрегирование временных рядов

Для задач прогнозирования, когда во временном ряду имеется несколько значений временной метки, AutoML использует среднее значение.

Чтобы использовать сумму вместо этого, измените записную книжку исходного кода, созданную пробной версией. В ячейке Агрегировать данные по… измените .agg(y=(target_col, "avg")) на .agg(y=(target_col, "sum")), как показано ниже.

group_cols = [time_col] + id_cols
df_aggregation = df_loaded \
  .groupby(group_cols) \
  .agg(y=(target_col, "sum")) \
  .reset_index() \
  .rename(columns={ time_col : "ds" })

Обнаружение семантического типа

Примечание.

При использовании Databricks Runtime 9.1 LTS ML и более поздних версий AutoML пытается определить, имеют ли столбцы семантический тип данных Spark или Pandas в схеме таблицы. AutoML обрабатывает эти столбцы как обнаруженный семантический тип. Эти обнаружения являются лучшими усилиями и иногда могут пропустить существование семантических типов. Можно также вручную задать семантический тип столбца или указать AutoML не применять обнаружение семантических типов к столбцу с помощью заметок.

В частности, AutoML выполняет приведенные ниже корректировки.

  • Строковые и целые столбцы, представляющие данные даты или метки времени, обрабатываются как тип метки времени.
  • Строковые столбцы, представляющие числовые данные, обрабатываются как числовой тип.

В Databricks Runtime 10.1 ML и более поздних версий AutoML также выполняет указанные ниже корректировки.

  • Числовые столбцы, содержащие идентификаторы категорий, обрабатываются как категориальный признак.
  • Строковые столбцы, содержащие английский текст, рассматриваются как текстовые признаки.

Заметки семантического типа

В Databricks Runtime 10.1 ML и более поздних версий можно вручную управлять назначенным семантическим типом, размещая заметку семантического типа для столбца. Чтобы вручную добавить заметку семантического типа к столбцу <column-name> как <semantic-type>, используйте следующий синтаксис.

metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)

<semantic-type> может принимать следующие значения:

  • categorical: столбец содержит категориальные значения (например, числовые значения, которые должны рассматриваться как идентификаторы).
  • numeric: столбец содержит числовые значения (например, строковые значения, которые можно преобразовать в числа).
  • datetime: столбец содержит значения меток времени (строковые, числовые значения или значения даты, которые можно преобразовать в метки времени).
  • text: строковый столбец содержит текст на английском языке.

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

Интеграция с Хранилищем компонентов

С помощью Databricks Runtime 11.3 LTS ML и более поздних версий можно использовать существующие таблицы функций в Магазине компонентов для расширения исходного входного набора данных для проблем классификации и регрессии.

С помощью Databricks Runtime 12.2 LTS ML и более поздних версий можно использовать существующие таблицы функций в Магазине компонентов для расширения исходного входного набора данных для всех проблем AutoML: классификации, регрессии и прогнозирования.

Сведения о создании таблицы компонентов см. в разделе "Проектирование компонентов" и "Обслуживание".

Чтобы использовать существующие таблицы компонентов, можно выбрать таблицы компонентов с пользовательским интерфейсом AutoML или задать feature_store_lookups параметр в спецификации запуска AutoML.

feature_store_lookups = [
  {
     "table_name": "example.trip_pickup_features",
     "lookup_key": ["pickup_zip", "rounded_pickup_datetime"],
  },
  {
      "table_name": "example.trip_dropoff_features",
     "lookup_key": ["dropoff_zip", "rounded_dropoff_datetime"],
  }
]

Пример записной книжки: эксперимент AutoML с Хранилищем компонентов

В следующей записной книжке показано, как обучить модель машинного обучения с помощью таблиц функций AutoML и Feature Store.

Эксперимент AutoML с примером записной книжки в Магазине компонентов

Получить записную книжку