Конвейеры
В реальной задаче машинного обучения модель редко применяется к исходным данным сразу.
Сначала данные обычно хранятся в DataFrame. Затем их нужно подготовить:
- выбрать нужные столбцы;
- обработать пропуски;
- преобразовать категориальные значения в числа;
- преобразовать данные в матрицу;
- при необходимости масштабировать признаки;
- обучить модель.
Получается последовательность действий:
DataFrame → подготовка данных → числовые признаки → масштабирование → модельЭту последовательность удобно оформить как единый объект. Такой объект называется конвейером.
Конвейер запоминает все этапы подготовки данных и выполняет их в правильном порядке. Главная польза конвейера в том, что обработка данных и модель работают как единое целое. Не нужно вручную повторять одни и те же действия перед каждым предсказанием.
Что входит в конвейер
Заголовок раздела «Что входит в конвейер»Конвейер может содержать несколько этапов:
- обработку пропущенных значений;
- кодирование категориальных признаков;
- масштабирование числовых признаков;
- обучение модели или получение предсказаний.
Например, для задачи регрессии с табличными данными конвейер может выглядеть так:
DataFrame → OneHotEncoder(Признак 1) → OrdinalEncoder(Признак 2) → Imputer(Признак 3) → StandardScaler → LinearRegressionЗдесь OneHotEncoder и OrdinalEncoder преобразуют категориальные признаки, Imputer заполняет пропуски, StandardScaler масштабирует числовые признаки, а LinearRegression обучается предсказывать значение целевой переменной.
Обучение и предсказание
Заголовок раздела «Обучение и предсказание»У конвейера, как и у модели, есть два основных действия.
Обучение конвейера
Заголовок раздела «Обучение конвейера»Метод Fit используется для обучения.
Во время Fit конвейер:
- настраивает преобразователи по обучающим данным;
- применяет настроенные преобразования;
- передаёт подготовленные признаки в модель;
- обучает модель.
Например, StandardScaler во время Fit запоминает средние значения и стандартные отклонения признаков, а модель запоминает закономерности в данных.
Предсказание
Заголовок раздела «Предсказание»Метод Predict используется для предсказания.
Во время Predict конвейер:
- берёт новые данные;
- применяет к ним те же преобразования, которые были настроены при
Fitвсего конвейера; - передаёт результат модели;
- возвращает предсказания.
Это важно: новые данные обрабатываются точно так же, как обучающие. Это уменьшает количество ошибок в коде и делает эксперимент воспроизводимым.
Важность конвейера
Заголовок раздела «Важность конвейера»Без конвейера подготовку данных легко случайно выполнить по-разному.
Например, можно обучить StandardScaler на обучающей выборке, а потом забыть применить его к тестовой. Или закодировать категориальный столбец в обучающих и тестовых данных разными способами.
Конвейер помогает избежать таких ошибок:
- все шаги находятся в одном месте;
- порядок действий фиксирован;
- одинаковая обработка применяется к обучающим, тестовым и новым данным;
- код становится короче и понятнее.
Класс DataPipeline
Заголовок раздела «Класс DataPipeline»DataPipeline - это основной конвейер в библиотеке ML PascalABC.NET. Он работает с табличными данными в виде DataFrame.
Он удобен, когда данные ещё не превращены в матрицу и нужно:
- выбрать признаки по именам столбцов;
- указать целевой столбец;
- закодировать категориальные признаки;
- применить преобразования;
- обучить модель.
DataPipeline особенно полезен для обычных табличных задач, где данные приходят из CSV-файла, встроенного датасета или другой таблицы.
Класс MatrixPipeline
Заголовок раздела «Класс MatrixPipeline»MatrixPipeline используется, когда признаки уже представлены матрицей X, а ответы — вектором y.
Он не работает с именами столбцов и не знает структуру исходного DataFrame. Зато он удобен, если данные уже подготовлены заранее:
X → StandardScaler → модельMatrixPipeline ближе к низкоуровневой работе с матрицами.
Виды конвейеров
Заголовок раздела «Виды конвейеров»В ML PascalABC.NET есть несколько основных вариантов конвейеров.
Конвейер классификации — заканчивается моделью классификации и предсказывает класс объекта.
Например: определить вид объекта, категорию товара или результат да / нет.
Конвейер регрессии — заканчивается моделью регрессии и предсказывает числовое значение.
Например: цену квартиры, время доставки или температуру.
Конвейер кластеризации — заканчивается моделью кластеризации и определяет номер кластера для каждого объекта.
Например: найти группы похожих объектов без заранее известных правильных ответов.
MatrixPipeline — конвейер для случаев, когда данные уже представлены матрицей и вектором.
Что дальше
Заголовок раздела «Что дальше»Дальше можно перейти к конкретным видам конвейеров: