Улучшите качество прогнозирования в индивидуальных моделях классификации с помощью Amazon Comprehend

Повышение точности прогнозирования в индивидуальных моделях классификации с использованием Amazon Comprehend

Искусственный интеллект (AI) и машинное обучение (ML) получили широкое применение в организациях предприятий и государственных учреждений. Обработка неструктурированных данных стала проще благодаря прогрессу в области обработки естественного языка (NLP) и удобным сервисам AI/ML, таким как Amazon Textract, Amazon Transcribe и Amazon Comprehend. Организации начали использовать AI/ML сервисы, такие как Amazon Comprehend, для создания моделей классификации на основе их неструктурированных данных, чтобы получить глубокие идеи, которых раньше не было. Но без правильной курировки данных и настройки модели, вы не сможете полностью реализовать преимущества моделей AI/ML, даже если используете предварительно обученные модели с минимальными усилиями.

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

Обзор решения

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

Мы также рассмотрим bewt практики и методы оптимизации при подготовке данных, построении модели и настройке модели.

Предварительные требования

Если у вас нет экземпляра SageMaker notebook, вы можете создать его. Инструкции по созданию можно найти по ссылке Create an Amazon SageMaker Notebook Instance.

Подготовка данных

Для этого анализа мы используем набор данных Toxic Comment Classification из Kaggle. Этот набор данных содержит 6 меток с 158,571 объектами данных. Однако каждая метка содержит менее 10% от общего количества данных в виде положительных примеров, и две из меток имеют менее 1%.

Мы преобразуем существующий набор данных Kaggle в формат CSV с двумя столбцами Amazon Comprehend, где метки разделены с помощью разделителя (|). Amazon Comprehend ожидает наличие хотя бы одной метки для каждого объекта данных. В этом наборе данных мы сталкиваемся с несколькими объектами данных, которые не попадают под какую-либо из предоставленных меток. Мы создаем новую метку с названием чисто и назначаем любые объекты данных, которые не токсичны, как положительные с этой меткой. Наконец, мы разделяем отобранные наборы данных на тренировочные и тестовые наборы данных с использованием соотношения 80/20 на каждую метку.

Мы будем использовать тетрадь Data-Preparation. В следующих шагах мы будем использовать данные набора данных Kaggle и подготовим данные для нашей модели.

  1. На консоли SageMaker выберите Экземпляры записной книжки в левой панели навигации.
  2. Выберите экземпляр тетради, который вы настроили, и выберите Открыть Jupyter.
  3. В меню Новый выберите Терминал.

  1. Запустите следующие команды в терминале для загрузки необходимых компонентов для этого поста:
cd SageMakerwget https://aws-ml-blog.s3.amazonaws.com/artifacts/amazon-comprehend-improve-prediction-quality/comprehend-blog-artifacts.zipunzip comprehend-blog-artifacts.ziprm comprehend-blog-artifacts.zipmkdir assets
  1. Закройте окно терминала.

Вы должны увидеть три файла блокнота и файлы train.csv.

  1. Выберите блокнот Data-Preparation.ipynb.
  2. Выполните все шаги в блокноте.

Эти шаги готовят сырые данные с Kaggle для использования как сформированные наборы тренировочных и тестовых данных. Сформированные наборы данных будут храниться в блокноте и Amazon Simple Storage Service (Amazon S3).

При работе с множеством данных между множеством ярлыков руководствуйтесь следующими правилами подготовки данных:

  • В наборах данных должно быть не менее 10 образцов на каждую метку.
  • Amazon Comprehend принимает не более 100 меток. Это мягкое ограничение, которое можно увеличить.
  • Убедитесь, что файл набора данных имеет правильный формат с правильным разделителем. Неправильные разделители могут привести к появлению пустых меток.
  • Все точки данных должны иметь метки.
  • Наборы тренировочных и тестовых данных должны иметь сбалансированное распределение данных по меткам. Не используйте случайное распределение, так как это может привести к смещению в тренировочных и тестовых наборах данных.

Создание модели на основе пользовательской классификации

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

  1. На консоли Amazon Comprehend выберите Пользовательская классификация в боковой панели навигации.
  2. Выберите Создать новую модель.
  3. В поле Имя модели введите toxic-classification-model.
  4. В поле Имя версии введите 1.
  5. В поле Формат разметки и данных выберите Использование режима с множественными метками.
  6. В поле Набор данных для тренировки введите расположение сформированного тренировочного набора данных в Amazon S3.
  7. Выберите Собственный набор данных для тестирования и введите расположение сформированного тестового набора данных в Amazon S3.
  8. В поле Выходные данные введите расположение в Amazon S3.
  9. В поле IAM-роль выберите Создание IAM-роли, укажите суффикс имени «comprehend-blog».
  10. Выберите Создать для начала обучения модели множественной классификации.

На следующем снимке экрана показаны детали модели множественной классификации на консоли Amazon Comprehend.

Настройка производительности модели

На следующем снимке экрана показаны метрики производительности модели. Это включает ключевые показатели, такие как точность, полноту, F1-меру, точность и другие.

После обучения и создания модели будет сгенерирован файл output.tar.gz, который содержит метки из набора данных, а также матрицу путаницы для каждой из меток. Чтобы дополнительно настроить производительность прогнозов модели, необходимо понять свою модель с помощью вероятностей прогнозирования для каждого класса. Для этого нужно создать задание анализа для определения оценок, которые Amazon Comprehend присвоил каждой из точек данных.

Выполните следующие шаги для создания задания анализа:

  1. На консоли Amazon Comprehend выберите Задания анализа в боковой панели навигации.
  2. Выберите Создать задание.
  3. В поле Имя введите toxic_train_data_analysis_job.
  4. В поле Тип анализа выберите Пользовательская классификация.
  5. В поле Модели классификации и маховики укажите toxic-classification-model.
  6. В поле Версия укажите 1.
  7. В поле Место нахождения входных данных S3 введите расположение сформированного файла тренировочных данных.
  8. В поле Формат входных данных выберите Один документ в строке.
  9. В поле Место нахождения выходных данных S3 введите расположение.
  10. В поле Разрешения доступа выберите Использовать существующую IAM-роль и выберите ранее созданную роль.
  11. Выберите Создать задание для запуска задания анализа.
  12. Выберите Задания анализа, чтобы просмотреть детали задания. Сделайте пометку с идентификатором задания из деталей задания. Мы будем использовать его на следующем шаге.

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

Мы используем блокнот Model-Threshold-Analysis.ipynb для тестирования результатов на всех возможных порогах и оценивания вывода на основе вероятности предсказания с использованием функции precision_recall_curve из библиотеки scikit-learn. Кроме того, мы можем вычислить показатель F1 для каждого порога.

Мы будем использовать идентификаторы заданий анализа Amazon Comprehend в качестве входных данных для блокнота Model-Threshold-Analysis. Вы можете получить идентификаторы заданий в консоли Amazon Comprehend. Выполните все шаги в блокноте Model-Threshold-Analysis, чтобы увидеть пороги для всех классов.

Обратите внимание, как точность возрастает при увеличении порога, в то время как ситуация обратная с полнотой. Чтобы найти баланс между ними, мы используем показатель F1, в котором видны пики на их кривой. Пики в показателе F1 соответствуют определенному порогу, который может улучшить работу модели. Возможно заметить, что большинство меток падают около значения 0,5 для порога, за исключением метки “threat”, у которой порог около 0,04.

Затем мы можем использовать этот порог для конкретных меток, которые показывают низкую производительность только при использовании порога 0,5 по умолчанию. Используя оптимизированные пороги, результаты модели на тестовых данных улучшаются для метки “threat” с 0,00 до 0,24. Мы используем максимальное значение показателя F1 при пороге в качестве точки отсчета для определения положительного или отрицательного результата для этой метки вместо общей точки отсчета (стандартного значения, например, > 0,7) для всех меток.

Обработка недостаточно представленных классов

Другой подход, эффективный для несбалансированного набора данных, – это оверсэмплинг. Путем оверсэмплинга недостаточно представленного класса модель чаще видит этот класс и подчеркивает важность этих образцов. Мы используем блокнот Oversampling-underrepresented.ipynb для оптимизации наборов данных.

Для этого набора данных мы проверили, как меняется производительность модели на наборе данных для оценки по мере увеличения количества образцов. Мы используем технику оверсэмплинга для увеличения количества образцов недостаточно представленных классов с целью улучшения производительности.

В данном случае мы проверили на 10, 25, 50, 100, 200 и 500 положительных примерах. Заметим, что, хотя мы повторяем точки данных, мы фактически улучшаем производительность модели, подчеркивая важность недостаточно представленного класса.

Стоимость

С помощью Amazon Comprehend вы платите по мере использования на основе количества обрабатываемых символов текста. См. Стоимость Amazon Comprehend для получения актуальной информации о стоимости.

Очистка

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

Вывод

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

Для получения дополнительной информации о Amazon Comprehend посетите ресурсы разработчика Amazon Comprehend для поиска видеоуроков и блогов, а также обратитесь к FAQ по Amazon Comprehend от AWS.