scikit-learn модели часто встраиваются в конвейеры данных для прогнозирования данных, проходящих через конвейер. Для любого производственного конвейера модель должна быть обучена на исторических данных, чтобы обеспечивать точные прогнозы. Однако в некоторых случаях имеет смысл обрабатывать данные конвейера, используя простое правило, которое не принимает во внимание какие-либо предыдущие данные. Несколько случаев, когда это было бы полезно:

Трубопровод MVP

Когда проект по науке о данных только начинается, очень важно как можно быстрее перейти к минимально жизнеспособному продукту (MVP). Этот MVP будет содержать все компоненты конечного информационного продукта, но будет только минимально функциональным. После того, как проект достигнет этой точки, будет быстрее выполнять итерацию и улучшать уже существующий конвейер. Поскольку создание обученной модели потребует значительного времени и энергии, возможность разместить фиктивную модель в конвейере данных позволит инженерам по данным начать свою работу до того, как специалисты по данным завершат обучение окончательной модели.

Базовый уровень производительности

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

Мок-оценщик

Теперь, когда мы знаем цель создания имитационной модели, давайте посмотрим, как ее реализовать на практике. Следующий код создает класс MockBinaryClassifier, который действует как бинарная прогнозная модель. Модель следует простому правилу: если значение первой функции меньше или равно 0, она возвращает класс 0, а если первая функция больше 0, она возвращает класс 1. Весь код в этой истории доступен как единый скрипт на Github .

Есть несколько интересных моментов, которые следует отметить по поводу MockBinaryClassifier. Во-первых, класс наследуется от sklearn.base.BaseEstimator. Это означает, что его можно использовать везде, где используется scikit-learn оценщик. Другой интересный момент заключается в том, что функция thefit, по сути, не работает. Поскольку мы знаем, как мы собираемся классифицировать экземпляры, нет необходимости принимать во внимание какие-либо исторические данные.

Демонстрация

Вот пример кода, демонстрирующего MockBinaryClassifier в действии:

[0 1 1 0]

В примере показана функция predict, оценивающая набор экземпляров с одной функцией. Вы можете возразить, что это не демонстрирует, что класс можно использовать так же, как любой другой scikit-learn оценщик, поскольку код будет работать даже без наследования от sklearn.base.BaseEstimator. Вот код, показывающий, как MockBinaryClassifier работает внутри scikit-learn конвейера:

[0 1 1 0]

Тот же MockBinaryClassifier будет работать как замена scikit-learn оценщика в конвейере данных произвольной сложности. Единственное возможное изменение - это реализация дополнительных функций, таких как predict_proba и т. Д.

Следует иметь в виду одно предостережение: если конвейер данных включает в себя загрузку моделей из постоянного хранилища с использованием pickle, MockBinaryClassifier необходимо будет импортировать в среду загрузки.

Заключение

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