Подготовка данных к регрессии

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

Сведения о настройке этих параметров с помощью API AutoML см. в разделе справки по AutoML Python API.

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

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

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

  • Числовые (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.4 LTS ML и более поздних версиях можно указать, как вменяются значения NULL. В пользовательском интерфейсе выберите метод из раскрывающегося списка в столбце Импортировать с в схеме таблицы. В API используйте imputers параметр. Для получения дополнительной информации см. справочник по API Python AutoML.

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Версия среды выполнения Databricks Поведение выборки
9.1 LTS ML — 10,4 LTS ML Доля выборки является константой и не зависит от типа узла кластера или памяти на узел.
11.x ML Доля выборки увеличивается для рабочих узлов с большим объемом памяти на ядро. Чтобы увеличить размер выборки, выполните следующее:
  • Используйте оптимизированный для памяти тип экземпляра .
  • Настройте spark.task.cpus в конфигурации Spark. Значение по умолчанию равно 1, а максимальное значение — количество ЦП на рабочем узле. Максимальное значение — это количество ЦП на рабочем узле. При увеличении этого значения размер выборки будет увеличен, но параллельно будет выполняться меньше пробных запусков.

Пример. На компьютере с 4 ядрами и 64 ГБ ОЗУ:
  • При использовании spark.task.cpus=1четыре испытания выполняются на каждого работника, каждое из которых использует 16 ГБ ОЗУ.
  • При использовании spark.task.cpus=4одно испытание запускается на каждого рабочего, с использованием всех 64 ГБ ОЗУ.
11.3 LTS ML и выше Если AutoML выбирает образцы из набора данных, доля выборки отображается на вкладке «Обзор» в пользовательском интерфейсе.
12.2 LTS ML и выше AutoML может обрабатывать большие наборы данных, распределив больше ядер ЦП на задачу обучения. Увеличьте размер выборки, выбрав экземпляр с большей суммой памяти.

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

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

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

Примечание.

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

При использовании 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.