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


Подготовка данных для классификации

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

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

Примечание.

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

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

В 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 использует эти весы классов в обучении моделей в качестве параметра, чтобы убедиться, что выборки из каждого класса взвешиваются соответствующим образом при обучении модели.

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

В 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 для настройки разделения вручную. Укажите разделенный столбец и используйте значения trainvalidateили 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

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

Примечание.

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