Одним из наиболее распространенных применений алгоритмов машинного обучения является классификация. Классификация состоит из нескольких разновидностей. Двоичная классификация — это когда мы классифицируем данный набор входных данных на два класса. Если классов более 2, то это мультиклассовая классификация. AWS ML поддерживает оба вида классификации.

Чтобы использовать AWS Machine Learning, мы скачали набор данных с Kaggle. Этот набор данных содержит данные об огромной сети передачи данных. В этой сети есть события, которые происходят на постоянной основе в различных местах по всей сети. Каждое событие имеет набор свойств, таких как тип события, тип серьезности и несколько других немаркированных функций, определяемых только индексами. Учитывая эти особенности, цель состоит в том, чтобы разработать модель, которая может классифицировать событие как относящееся к одному из трех уровней серьезности. Всего в наборе данных около 7000 обучающих примеров.

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

  • Количество атрибутов458
  • Двоичный 69
  • Категория 3
  • Число 386

Целевая переменная y модели представляет собой данные категориального типа, представляющие уровень серьезности сетевого события.

Данные для обучения были подготовлены и сохранены в файле csv. Рабочий процесс AWS ML заключается в том, что когда у нас есть входные данные в формате AWS ML, нам нужно загрузить их в корзину S3. Затем в консоли AWS ML нам нужно создать DataSource. DataSource содержит метаданные об обучающих примерах и их функциях. AWS ML DataSource имеет хранилище данных, поддерживающее его данными. В данном случае это CSV-файл в корзине S3. AWS также поддерживает Redshift в качестве хранилища данных для обучающих примеров. Во время спецификации DataSource мы определяем типы каждой из функций, таких как двоичный или категориальный. Мы также определяем целевую переменную y и любую функцию, которую можно использовать в качестве идентификатора для примера. AWS требуется несколько минут для обработки данных и подготовки источника данных.

Как только DataSource подготовлен, мы готовы перейти к следующему шагу — созданию модели. Мы создали модель ML Multiclass Classifier, используя рецепт преобразования функций по умолчанию, который Amazon предоставил при создании ML. AWS дает нам возможность указать преобразование функции, указав, как мы можем преобразовать конкретную функцию в другой формат, чтобы он был в подходящем формате для использования модели ML.

Получив модель, мы можем использовать ее для классификации примеров. AWS ML может автоматически делить данные примеров на набор для обучения и набор для оценки. По умолчанию это 70:30, хотя мы можем указать другое соотношение и контролировать, какие примеры предназначены для обучения, а какие для оценки. Модель, созданная AWS ML для примерно 5000 обучающих примеров с 458 функциями, имеет размер 100 МБ. AWS ML по умолчанию использует регуляризацию L2 с λ = 1e-6. AWS ML использует алгоритм стохастического градиентного спуска для определения параметров модели. По умолчанию во время обучения выполняется 10 проходов для вычисления параметров модели. Если мы выберем, мы можем провести индивидуальное обучение модели, указав рецепт преобразования признаков, тип регуляризации — L1 или L2, объем регуляризации, количество итераций по данным для обучения модели.

Обучение модели использует 70% обучающих примеров. После создания модели остальные 30% примеров прогоняются через модель для оценки качества модели. Во время оценки значения примера задаются в качестве входных данных для модели. Модель выдает результат, в данном случае это классификация примера. Это сравнивается с реальным значением y, которое уже известно для этих 30% примеров. Результаты оценки для нашей модели показаны на снимке экрана ниже.

Как мы видим выше, у нас есть три категории, помеченные как 0, 1 и 2. Эффективность алгоритмов классификации обычно не измеряется с использованием традиционной меры точности. Вместо этого мы вычисляем два значения: точность и отзыв. Точность и полнота затем используются, в свою очередь, для измерения другой величины, называемой значением F1 (ознакомьтесь с https://en.wikipedia.org/wiki/Precision_and_recall для отличного описания точности, полноты и F1). Более высокое значение F1 указывает на лучшую производительность алгоритма классификации. Обычно в задачах бинарной классификации используется только одно значение F1. Поскольку здесь мы проводим мультиклассовую классификацию, у нас столько значений F1, сколько классов. Таким образом, мы имеем F1 = 0,83, F1 = 0,44 и F1 = 0,58 для каждой классификации классов. Для мультиклассовой классификации среднее значение этих значений называется макросредним показателем F1, который равен 0,62.

Чтобы обучить и оценить эту модель, нам потребовалось 1,19 доллара США с использованием AWS ML. На создание DataSource, обучение модели ML и ее оценку ушло около 30 минут. Созданная модель может быть использована для обработки пакетных данных или также может быть использована в качестве примера.

Мы использовали очень прямой и простой подход к этой проблеме ML, используя значения по умолчанию, предлагаемые AWS ML. Наша цель здесь состояла в том, чтобы увидеть, как мы можем добиться этого с помощью Amazon AWS ML, насколько это будет просто, сколько времени это займет и сколько это будет стоить. Очевидно, что есть много вещей, которые можно сделать с точки зрения выбора функций, анализа основных компонентов (PCA), чтобы уменьшить количество измерений, ввести термины более высокого порядка в качестве функций, а также попробовать различные значения λ, чтобы найти оптимальную модель. который не переобучает и не подгоняет среди прочего. В заключение мы обнаружили, что AWS ML предоставляет нам очень простой интерфейс, который можно использовать для быстрого обучения модели и очень быстрого начала ее использования.