Точность/отзыв для многоклассовой многоколоночной классификации
Мне интересно, как вычислить показатели точности и возврата для многоклассовой многоколоночной классификации, т.е. классифицировать, где имеется более двух меток, и где каждый экземпляр может иметь несколько меток?
Ответы
Ответ 1
Для классификации с несколькими метками у вас есть два пути
Сначала рассмотрим следующее.
-
- это количество примеров.
-
является назначением метки основной истины
пример..
-
является
пример.
-
- это предсказанные метки для
пример.
Пример на основе
Метрики вычисляются по дате-точке. Для каждого предсказанного ярлыка вычисляется только его оценка, а затем эти оценки агрегируются по всем точкам данных.
- Точность =
, Отношение количества прогнозируемых является правильным. Числитель находит, сколько меток в предсказанном векторе имеет общую с земной истиной, а соотношение вычисляет, сколько из прогнозируемых истинных меток действительно находится в основной истине.
- Recall =
, Отношение количества фактических ярлыков было предсказано. Числитель находит, сколько меток в предсказанном векторе имеет общий с основной истиной (как указано выше), а затем находит отношение к числу фактических меток, поэтому получает какую-то часть фактических ярлыков.
Существуют и другие показатели.
Ярлык
Здесь делаются этикетки. Для каждой метки вычисляются метрики (например, точность, отзыв), а затем эти метрики метрики агрегируются. Следовательно, в этом случае вы заканчиваете вычисление точности/отзыва для каждой метки по всему набору данных, как и для двоичной классификации (поскольку каждая метка имеет двоичное назначение), затем агрегируйте ее.
Простым способом является представление общей формы.
Это просто расширение стандартного многоклассового эквивалента.
-
Макро усредненный ![$\ frac {1} {q}\sum_ {j = 1 } ^ {д} В (TP_ {J}, {FP_ J}, {TN_ J}, {FN_ J}) $]()
-
Среднее усреднение ![$B (\ sum_ {j = 1} ^ {q} TP_ {J},\sum_ {J = 1} ^ {д} FP_ {J},\sum_ {J = 1} ^ {д} TN_ {J},\sum_ {J = 1} ^ {д} FN_ {J }) $]()
Здесь
- это истинные положительные, ложноположительные, истинные отрицательные и ложные отрицательные значения соответственно только для
ярлык.
Здесь $B $обозначает любую метрику на основе путаницы. В вашем случае вы будете подключать стандартные формулы точности и отзыва. Для макросредства вы передаете счет на каждую метку, а затем суммируете, для среднего среднего значения сначала вычисляете счетчики, а затем применяете метрическую функцию.
Вам может быть интересно ознакомиться с кодом для метрик метрик здесь, который является частью пакета mldr в R. Также вам может быть интересно изучить библиотеку многоадресной Java MULAN.
Это хорошая статья, чтобы попасть в разные показатели: Обзор алгоритмов обучения с несколькими метками
Ответ 2
Ответ заключается в том, что вы должны вычислять точность и отзыв для каждого класса, а затем сравнивать их вместе. Например. если вы классы A, B и C, то ваша точность:
(precision(A) + precision(B) + precision(C)) / 3
То же самое для вызова.
Я не эксперт, но это то, что я определил на основе следующих источников:
https://list.scms.waikato.ac.nz/pipermail/wekalist/2011-March/051575.html
http://stats.stackexchange.com/questions/21551/how-to-compute-precision-recall-for-multiclass-multilabel-classification
Ответ 3
- Предположим, что у нас есть проблема классификации с 3 классами с метками A, B и C.
- Первое, что нужно сделать, это создать матрицу путаницы. Обратите внимание, что значения в диагонали всегда являются истинными позитивами (TP).
-
Теперь, чтобы вычислить отзыв для метки A, вы можете считывать значения из матрицы замешательства и вычислять:
= TP_A/(TP_A+FN_A)
= TP_A/(Total gold labels for A)
-
Теперь давайте вычислим точность для метки A, вы можете прочитать значения из матрицы путаницы и вычислить:
= TP_A/(TP_A+FP_A)
= TP_A/(Total predicted as A)
-
Вам просто нужно сделать то же самое для остальных меток B и C. Это относится к любой проблеме классификации нескольких классов.
Здесь приведена полная статья, в которой рассказывается о том, как вычислять точность и отзыв для любой задачи классификации нескольких классов, включая примеры.
Ответ 4
Простое усреднение будет выполняться, если классы сбалансированы.
В противном случае напомнить, что для каждого реального класса нужно взвешивать по преобладанию класса, а точность для каждого прогнозируемого ярлыка должна быть взвешена по смещению (вероятности) для каждой метки. В любом случае вы получаете точность Rand.
Более прямой способ состоит в том, чтобы сделать нормализованную таблицу непредвиденных ситуаций (разделите на N, чтобы таблица добавляла до 1 для каждой комбинации метки и класса) и добавляла диагональ для получения точности Rand.
Но если классы не сбалансированы, смещение остается, а метод с исправленной вероятностью, такой как каппа, является более подходящим или лучше все еще ROC-анализом или вероятной правильной мерой, такой как информированность (высота над вероятной линией в ROC).