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

Что такое классификация с несколькими метками?

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

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

Показатели оценки

Большинство показателей, которые используются для двоичной классификации, можно применить к нескольким меткам, вычислив показатель для каждого столбца, а затем взяв среднее значение оценок. Один из показателей, который мы могли бы использовать, - это потеря журнала или бинарная кросс-энтропия. Для лучшей метрики, учитывающей дисбаланс классов, мы могли бы использовать ROC-AUC.

Уловки моделирования

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

Для большинства моделей, отличных от NN, наш единственный вариант - обучить один классификатор для каждой из целей и затем объединить прогнозы. Библиотека scikit-learn предоставляет для этого простой класс-оболочку OneVsRestClassifier.

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

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

Нейронные сети, или NN, больше подходят для этой ситуации. Количество меток - это количество выходных нейронов в сети. Теперь мы можем просто применить любую потерю двоичной классификации к модели, и модель будет выводить все цели одновременно. Это устраняет обе проблемы моделей, отличных от NN, поскольку нам нужно будет обучить только одну модель, и сеть сможет изучить различные корреляции меток через выходные нейроны.

Методы выбора контролируемых функций

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

Использование контролируемых методов выбора функций в этой ситуации немного сложно, поскольку большинство алгоритмов предназначены для одиночных целей. Чтобы решить эту проблему, мы можем преобразовать ситуацию с несколькими метками в проблему с несколькими классами. Одним из популярных подходов является LabelPowerset, где каждая уникальная комбинация меток обучающих данных преобразуется в один класс. В библиотеке scikit-multilearn есть инструменты для этого.

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

Неконтролируемые методы выбора функций

В неконтролируемых методах нам не нужно учитывать природу ситуации с несколькими ярлыками, поскольку неконтролируемые методы не зависят от ярлыка.

Вот несколько алгоритмов:

  • Анализ главных компонентов или другие аналогичные методы факторного анализа. Это удаляет избыточную информацию из функций и извлекает полезную информацию для модели. Одно важное замечание: прежде чем применять PCA, убедитесь, что данные стандартизированы, так как таким образом каждая функция в равной степени способствует анализу. Еще один совет по использованию PCA заключается в том, что вместо использования ограниченных функций, которые предоставляет алгоритм, мы можем объединить эти сокращенные функции с исходными данными в качестве дополнительной информации, которую модель может использовать.
  • Порог отклонения. Это простой, но эффективный способ уменьшить размерность элементов. Мы отбрасываем функции, которые имеют низкую дисперсию или разброс. Это можно оптимизировать, найдя лучший порог для выбора, хорошее начало - 0,5.
  • Кластеризация. Мы можем создавать новые функции, создавая кластеры из входных данных, а затем назначая соответствующий кластер каждой строке входных данных в качестве нового столбца функции.

Методы передискретизации

Когда наши классификационные данные сильно несбалансированы, используются методы повышающей дискретизации, затем мы генерируем искусственные выборки для редких классов, чтобы модель фокусировалась на более редких классах. Для создания новых сэмплов в ситуациях с несколькими этикетками мы можем использовать MLSMOTE или Multi-label Synthetic Minority Over-sampling Technique. Реализацию можно найти здесь.

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

Заключение

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