автор: Лукаш Цмеловски, доктор философии, Томас Парнелл

В Cloud Pak for Data 4.6 Watson Studio AutoAI представляет поддержку больших табличных данных. Наборы данных размером до 100 ГБ используются с использованием сочетания ансамбля и добавочного обучения. Принятие BatchedTreeEnsembleClassifier и BatchedTreeEnsembleRegressor от Snap Machine Learning позволяет добавлять возможности partial_fit() (обучение на пакетах) к классическим алгоритмам:

Классификаторы

  • ExtraTreeClassifier
  • XGBКлассификатор
  • LightGBMClassifier
  • Случайный ЛесКлассификатор
  • SnapRandomForestClassifier
  • SnapBoostingMachineClassifier

Регрессоры

  • ExtraTreeRegressor
  • LightGBMРегрессор
  • RandomForestRegressor
  • SnapBoostingMachineRegressor
  • SnapRandomForestRegressor
  • XGBRegressor

Функция BatchedTreeEnsemble в Snap ML позволяет выполнять поэтапное обучение для любого из перечисленных выше базовых ансамблей. Это достигается путем разбиения ансамблей деревьев на несколько более мелких подансамблей. Каждый подансамбль обучается на новом пакете данных. Затем к партиям применяется внутреннее повышение, чтобы гарантировать, что по мере обучения каждой из этих новых подгрупп все ошибки в предыдущих подгруппах будут исправлены, таким образом постепенно улучшаясь в целом с каждой потребляемой партией. Обратите внимание, что общее количество деревьев в BatchedTreeEnsemble остается таким же, как и в базовом ансамбле (нет дополнительной сложности вывода), но путем постепенного обучения ансамбля на гораздо большем наборе данных можно добиться видимого улучшения точности по сравнению с базовым ансамблем. И все это без необходимости дополнительной памяти.

В список оценок добавлены новые ансамблевые оценки (BatchedTreeEnsemble). Эксперимент AutoAI создает 5-й конвейер (BatchedTreeEnsemble) для каждого поддерживаемого оценщика. Этот дополнительный конвейер имеет partial_fit возможностей; его можно обучать на пакетах данных. Созданная AutoAI записная книжка «Записная книжка для дополнительного обучения» содержит код для продолжения обучения модели с использованием всех пакетов данных.

Поток

AutoAI использует выборку данных для построения пайплайнов BatchedTreeEnsemble. Тип выборки может быть изменен пользователем. Поддерживаемые типы выборки: first values (чтение данных от начала до точки отсечки), stratified, и random. Метод выборки по умолчанию установлен на random.

Затем AutoAI создает Incremental learning notebook, содержащий код для продолжения обучения на всех пакетах данных.

Записная книжка

Созданный блокнот использует torch совместимый DataLoader с именем ExperimentIterableDataset. Этот загрузчик данных может работать с различными источниками данных, такими как: DB2, PostgreSQL, Amazon S3, Snowflake и др.

На следующем шаге код загружает модель BatchedTreeEnsemble из завершенного эксперимента AutoAI, используя метод get_pipeline().

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

Блокнот можно легко настроить для:

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

Подытожим основные функции поддержки AutoAI больших табличных данных:

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

Использованная литература:

  1. Снап машинное обучение
  2. Документация Watson AutoAI
  3. Образцы тетрадей