В моей задаче можно наблюдать N разных классов, и моя задача - определить, какие из них произошли в момент времени t (из T кадров). Я создал actualLabels
и predictedLabels
двоичные матрицы размером NxT. Я наблюдал за данными и заполнил actualLabels
от руки. actualLabels(n,t)
равно 1, если экземпляр в момент времени t включает n-й класс, в противном случае он равен 0. Это служит моими основными данными истинности. Затем я запускаю свой алгоритм на данных и прогнозирую наблюдаемые классы. Метки найдены автоматически и сохранены в predictedLabels
.
Мой вопрос заключается в том, как я могу вычислить значение успеха, используя эти матрицы? Есть ли популярный способ сделать это?
Пример: Пусть будет 4 класса и T = 5. Пусть данные будут
actualLabels = 0 0 0 0 1
1 1 0 1 0
0 1 0 0 1
0 0 0 0 1
predictedLabels = 0 0 0 0 1
0 0 1 1 0
0 1 0 0 0
0 1 0 0 0
Кажется, невозможно вычислить обычную матрицу путаницы из многоклассового присвоения. Вместо этого я вычислил расстояние в каждой паре. Поскольку у меня есть двоичные векторы для сравнения, расстояние Хемминга кажется хорошим (аналогично расстоянию редактирования). Теперь проблема в том, что я могу сообщить расстояния между предсказанными и фактическими векторами меток, но не процент успеха.
Путаница матрица передает много информации. Я хотел бы видеть аналогичную таблицу, которая помогает мне увидеть, где часто происходят ошибки, общий успех и т. Д.
Подробности: У меня есть некоторые wav-данные, и я хочу сделать полифоническое отслеживание высоты тона. В каждом временном интервале может быть любое количество сыгранных нот, которые образуют метки, которые я хочу предсказать.
Примечание: В Википедии есть некоторые показатели для классификации по нескольким меткам. Я был бы счастлив узнать любую другую метрику или сюжет.