Метрики оценки качества определения пустых/зануленных классов при multilabel классификации

Предположим, что у нас 5 классов. При многоклассовой (multiclass) классификации осуществляется предсказание одного класса из 5 [0,1,0,0,0] (в виде вектора), соответственно это предсказание может быть правильным, либо неправильным - других вариантов нет. Однако, при многозначной (multilabel) классификации происходит предсказание сразу нескольких классов [0,1,0,1,0] (примем этот вектор за правильный/ожидаемый) из-за чего различают несколько видов ошибок (см. прикрепленную картинку):

Ошибки уровня метки/класса (label-based) - когда неправильно одно или несколько предсказаний в векторе ответов [1,1,0,0,0] и надо понять/оценить качество работы модели на отдельных классах. На данном примере ошибки допущены в классификации 1 и 4 классов, а метка второго класса определена верно.
Ошибки уровня примера (sample/example-based) - когда весь вектор предсказаний правильный [0,1,0,1,0], либо неправильный [1,0,1,0,1], либо пустой [0,0,0...0 ] и надо оценить качество модели не по отдельным классам, а в целом понять хорошо ли он делает абсолютно правильные предсказания и много ли допускает ошибок в масштабе всего входного набора примеров.

В этой связи, чтобы получить более полное представление о качестве модели и возможность сравнения её качества с другими при multilabel классификации обязательно смотрят на несколько метрик из обоих видов ошибок, иначе можно упустить критически плохую работу модели на одном из видов ошибок (что было мною наглядно замечено на практике и породило изначальный вопрос с пустыми классами. Например, если из 10 классов модель всегда ошибается в одном (всегда в разном), тогда на уровне меток/классов f1 может быть и 0.9, что выглядит очень хорошо. однако, на уровне примеров точность у неё будет 0 (она не выдает ни 1 абсолютно точного предсказания), в тоже время модель с f1 0.85 на уровне примеров может обладать и точностью около 0.85 и из этих двух являться лучшим выбором, несмотря на меньший f1).

Для измерения представленных нескольких видов ошибок существует больше 12 метрик:

Example-based Classification:

Subset Accuracy
Hamming Loss
Accuracy
Recall
FBeta

Example-based Ranking (опустил разъяснения, чтобы не усложнять пост. Про них можно найти информацию и, как я понял, эти метрики используются когда вместо меток 0/1 классификатор выдает вектор независимых вероятностей (их сумма по вектору>1) принадлежности примера к каждому классу [0.14, 0.1, 0.26, 0.43, 0.44] и надо найти или threshold получше или классификатор который будет меньше ошибаться либо в top-5 меток, либо в метке с max вероятностью):

One Error
Coverage
Average Precision
Ranking Loss

Label-based Metrics Classification:

Macro-averaging
Micro-averaging
Accuracy
Precision (Precision by label)
Recall (Recall by label)
FBeta

Конкретный набор выбирается исходя из задачи/потребностей, но в научных статьях я заметил, что Accuracy,Hamming Loss + Micro F1,Macro F1 выбирают чаще.

Источник изображения (

https://github.com/Jopepato/multilabelMetrics

)

Доп. источник информации (

https://spark.apache.org/docs/... sification

)

Доп. источник информации со сравнением работы метрик (

https://arxiv.org/abs/1609.00288

)