Вопрос или проблема
В многоклассовой классификации обычно у нас есть датафрейм, который выглядит как
feature1 feature2 feature3 feature4 class1 class2 class3
12 53 93 12 0 1 0
52 30 17 97 1 0 0
54 93 52 94 1 0 0
10 53 97 23 0 0 1
43 60 17 78 0 1 0
где результаты взаимоисключающие, и поэтому когда мы обучаем модель (например, с помощью lightgbm/многономинальной логистики) с признаками feature1, feature2, feature3
и целевыми переменными class1, class2, class3
, результат представляет собой вектор вероятностей [p_1,p_2,p_3]
такой, что p_1+p_2+p_3=1.
В отличие от этого, в многометочной классификации, датафрейм может выглядеть как
feature1 feature2 feature3 feature4 class1 class2 class3
12 53 93 12 0 1 1
52 30 17 97 1 1 1
54 93 52 94 1 0 0
10 53 97 23 0 0 1
43 60 17 78 0 1 1
т.е. результаты не взаимоисключающие. В частности, когда мы обучаем модель, выходной вектор вероятностей [p_1,p_2,p_3]
не суммируется до 1. На самом деле, обычно они имеют разные суммы строк для разных строк.
Теперь мой вопрос заключается в том, я пытаюсь обучить модель многометочной классификации, но это не так сложно, как проблема общей многометочной классификации, где я знаю, что всегда будет ровно два результата. Итак, мой обучающий набор выглядит как
feature1 feature2 feature3 feature4 class1 class2 class3
12 53 93 12 0 1 1
52 30 17 97 1 0 1
54 93 52 94 1 1 0
10 53 97 23 0 1 1
43 60 17 78 0 1 1
и предсказание [p_1,p_2,p_3]
всегда должно суммироваться до 2.
Я хотел бы спросить, есть ли какой-либо способ использовать это свойство для обучения более хорошей модели? Я пробовал реализовать простую модель многометочной классификации, используя MultiOutputClassifier
в sklearn
, но результат не очень хороший, отчасти потому, что модель не “знает”, что всегда будет ровно 2 результата.
Заранее большое спасибо.
.
Ответ или решение
Теория
Чтобы разобраться в проблеме многомарочной классификации с фиксированным количеством исходов, необходимо вначале понять основную концепцию и отличия между многоклассовой и многомарочной классификацией.
Многоклассовая классификация предполагает, что для каждого примера можно выбрать только один класс из многих возможных. Модели, обученные на такой задаче, выдают на выходе вероятностный вектор с суммой вероятностей, равной 1. Примером может быть задача классификации изображений, где каждое изображение попадает в одну из несколько категорий, таких как "кошка", "собака", "птица".
Многомарочная классификация допускает, что один пример может одновременно принадлежать нескольким классам. Здесь вероятностные векторы не обязаны суммироваться до 1, поскольку объект может принадлежать нескольким классам одновременно. Примером такой задачи может быть анализ текстов, где один текст может соответствовать нескольким темам одновременно.
Теперь вернемся к вашей особой задаче, где известно, что всегда будет точно два выхода (т.е., сумма вероятностей для каждого примера равна 2). Эта ситуация лежит между многоклассовой и многомарочной классификацией, но имеет свои специфические особенности и ограничения, которые можно использовать для улучшения модели.
Пример
Представим, что работаем с датасетом о пользовательских предпочтениях, где каждый пользователь может быть заинтересован в двух продуктах одновременно из трех возможных категорий продуктов.
Ваш данные выглядят следующим образом:
feature1 feature2 feature3 feature4 class1 class2 class3
12 53 93 12 0 1 1
52 30 17 97 1 0 1
54 93 52 94 1 1 0
10 53 97 23 0 1 1
43 60 17 78 0 1 1
Здесь каждая строка представляет собой набор характеристик (feature1, feature2, feature3, feature4) и классы (class1, class2, class3), из которых всегда выбраны два.
Применение
Теперь, когда ясна основа проблемы, давайте обсудим возможные стратегии для улучшения модели с учетом априорного знания о количестве целей.
1. Пользовательские цели
Используйте специально разработанные пользовательские функции потерь, которые учитывают вашу особенность: сумма вероятностей для каждого примера должна быть равна 2. Это потребует от вас разработки кастомизрованной функции потерь, которая штрафует несоответствия этому требованию.
2. Регуляризация
Если модель предсказывает три вероятности [p_1, p_2, p_3], суммирующиеся в 2, добавление псевдопеременной может сбалансировать модель, обеспечивая устойчивость к перекосу. Введите регуляризацию или ограничения, чтобы поддерживать равновесие между исходами.
3. Постпроцессинг предсказаний
Альтернативный подход заключается в том, чтобы использовать постпроцессинг для предсказанных вероятностей модели. После применения модели вы можете использовать алгоритм округления или линейную оптимизацию для приведения набора вероятностей в упорядоченное состояние, сохраняя сумму равной 2. Это может быть сделано быстро и эффективно, дополнительно не усложняя модельные шаги.
4. Новое представление данных
Рассмотрите возможность модификации процессинга данных. Если известны связи между функциями и выходами, можно улучшить представление данных, например, за счет генерации новых комбинированных функций.
5. Особые структуры ансамбля
Создание ансамблевой модели, которая учитывает ограничение на количество меток, может быть полезным. Например, обучите несколько базовых моделей, каждая из которых отвечает за определение одного класса, и объедините их вероятности с учетом вашего ограничения.
Заключение
Задача многомарочной классификации с фиксированным количеством исходов является уникальной проблемой, которая предлагает новые возможности для моделирования. Сосредоточившись на адаптации стандартных методов и использования априорных знаний, вы можете значительно улучшить качество предсказаний вашей модели. Это не только повышает эффективность, но и приближает модель к реальным условиям, что особенно важно в профессиональных приложениях.