Классификация — это задача прогнозного моделирования, в которой метка класса предсказывается для данного примера входных данных. Это полезно для различных случаев использования, таких как:

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

Snowflake Snowpark интегрируется с Anaconda, где можно использовать самые распространенные библиотеки машинного обучения в безопасной среде-песочнице.

Классификация состоит из двух частей: обучения и прогнозирования, которые можно интегрировать в конвейеры данных Snowflake.

Обучение

Эта фаза состоит в подаче данных алгоритма ML, которые уже помечены. Модель будет создана и использована для классификации новых наборов данных. Данные состоят из расширенных функций, описывающих классифицируемое событие, и метки с классификацией. Разработка функций — это ключевая концепция, которая поможет создать богатые функции, которые помогут дифференцировать события для их классификации. Используйте аналитические функции Snowflake и доступ к Marketplace для создания уникальных функций, которые обеспечат лучшее руководство по алгоритму машинного обучения.

Прогноз

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

Алгоритмы классификации

Snowflake предоставляет доступ к наиболее распространенным алгоритмам классификации благодаря партнерству с Anaconda. К ним относятся, среди прочего:

  • Логистическая регрессия
  • Наивный Байес
  • Случайный лесной классификатор
  • Экстремальное повышение градиента
  • Классификатор K-соседей
  • Классификатор опорных векторов
  • Классификатор дерева решений

Эти алгоритмы можно использовать в любых хранимых процедурах, UDF или UDTF, импортирующих пакеты sklearn и xgboost.

Обучение моделей в Snowflake

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

Библиотеки ML ожидают кадр данных pandas, запускают все ваши преобразования и обогащение в Snowflake и вызывают to_pandas() в качестве последнего шага перед подачей модели.

Использование стандартных библиотек позволяет стандартизировать код и создавать различные модели для оценки производительности.

Эффективность модели

Существуют различные показатели, которые будут указывать на производительность модели. Эти показатели взяты из набора данных TEST.

TP:: количество правильных идентификаций положительных случаев.

TN: Numve или правильная идентификация отрицательных случаев

FP: идентифицируется как положительный, когда он был отрицательным.

FN: идентифицирован как отрицательный, когда он был положительным.

Точность: количество правильных прогнозов, разделенное на общее количество

Точность:правильно положительные результаты, разделенные на общее количество положительных прогнозов.

Отзыв: истинные положительные результаты, разделенные на истинные положительные результаты + ложноотрицательные результаты (все, что должно быть оценено как положительное).

Оценка F1: баланс между точностью и отзывом

Чтобы оценить модель, набор данных для обучения будет разделен на обучение и тестирование. Типичный подход заключается в использовании 20% данных для тестирования. Эти данные будут использованы при построении модели. Поскольку он помечен, он будет использоваться позже для проверки точности модели.

Используйте функцию train_test_split, чтобы последовательно разделить кадр данных pandas и использовать тестовый для оценки.

Библиотека sklearn.metrics предлагает различные методы расчета точности модели, построенной с использованием тестовой части набора данных. Использование фреймов данных Snowflake также предоставляет возможности для расчета этих показателей в Snowflake. Это перенесет все вычисления на вычисление Snowflake.

Это пример (любезно предоставленный Mats Stellwall), где все предыдущие вычисления выполняются в Dataframe:

Классификация с использованием пользовательских функций

После обучения модели ее можно использовать для вывода. Чтобы обеспечить максимальный параллелизм и производительность, Snowpark может создавать UDF или UDTF, которые будут распределены по всем узлам хранилища виртуального кластера.

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

Масштабируемость классификации

Snowflake позволяет мгновенно изменять размер вычислительных ресурсов виртуальных складов в диапазоне от 1 узла (XS) до 512 узлов (6XL). Нет необходимости предварительно разбивать данные, так как оптимизатор запросов Snowflake автоматически распределяет работу по всем узлам.

Простое изменение размера до соответствующего размера перед выполнением вывода.

В приведенном ниже примере показан вывод для классификации 105 млн записей о пациентах для выявления проблем с сердцем. Изменение размера с X-Small на X-Large позволило сократить необходимое время с 50 минут до 4 минут.

Пример архитектуры классификации

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

Существует каталог для всех созданных моделей, который можно выбрать при запуске классификации. Результаты и производительность также сохраняются. Все это можно контролировать и управлять с помощью простого приложения Streamlit.

Нашел полный пример кода здесь.

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

Наслаждаться!

Карлос