Вычисление метрик классификации для задачи маркировки последовательности - PullRequest
0 голосов
/ 14 апреля 2020

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

Предположим, у нас есть следующий текст с предсказанными метками в []:

Сети Seq2seq являются хорошими способ изучения последовательностей. [0] Они достаточно хорошо работают при генерации длинных последовательностей. [1] Эти сети используются в последующих задачах, таких как NMT и суммирование текста [0]. бла-бла-бла [2]

Итак, прогноз - [0, 1, 0, 2] и предположим, что золотые метки для приведенных выше предложений: [1, 1, 0, 0].

Так что точность равна correct / total = (1 + 1) / 4 = 0.5? А как насчет других метрик, таких как Precision, Recall и F1? Любые идеи?

Ответы [ 3 ]

1 голос
/ 14 апреля 2020

В случае мультиклассовой классификации вы можете получить Точность, Вспомнить и F1, используя metrics.classification_report(). Вы можете получить метрики для каждого отдельного класса, а также их 'macro', 'micro', 'weighted' and 'samples' average.

from sklearn import metrics

# True values
y_true = [1,1,0,0]
# Predicted values
y_pred = [0,1,0,2]

# Print the confusion matrix
print(metrics.confusion_matrix(y_true, y_pred))

# Print the precision and recall, among other metrics
print(metrics.classification_report(y_true, y_pred))
0 голосов
/ 02 мая 2020

Пока я с нетерпением искал решение для этого, я получил некоторые вдохновения от соответствующей задачи (например, NER) и определения Precision и Recall после вычисления из которых, F1 оценка может быть легко рассчитана.

По определению:

Precision

Recall

F1

Я заметил, что все, что мне нужно, это вычисление TP, FP и FN. Например, для случая прогнозирования [0, 0, 1, 1], истинные метки которого: [0, 0, 1, 0], TP равен 1, FP равен 0 и FN равен 1. Таким образом:

enter image description here

enter image description here

enter image description here

Здесь, поскольку производительность модели в положительном классе для меня важнее, Я просто пробую эти показатели на позитивном классе. Я также понял, что это базовое c использование F1 metri c, но уровень детализации отличается для каждой задачи. Надеюсь, что это поможет любому, кто был озадачен этой проблемой.

0 голосов
/ 14 апреля 2020

Опрашивающий ищет предложения о подходе к измерению производительности модели в отличие от программного c решения с использованием определенного языка / библиотеки. Следовательно, ниже приведены некоторые вопросы для размышления и предлагаемый подход

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

  1. Является ли классификационная модель пакетом слов типом модели , где последовательность не имеет значения, а только слова в данном предложении. Если так, модель может быть измерена только для того, для чего она построена. Это означает, что общее количество предложений, которые правильно классифицированы , деленное на общее количество предложений , является хорошей мерой точности.
  2. Если классификационная модель представляет собой модель на основе графа , такую ​​как скрытая марковская модель или условные случайные поля, то вопрос, который мы должны задать себе, - это если несколько предложений рассматриваются как входные данные перед классификацией текущее предложение. Если ответ «да», то лучше посмотреть весь документ для измерения производительности модели. Что-то в строках количества документов, классифицированных правильно, делится на общее количество документов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...